-
Notifications
You must be signed in to change notification settings - Fork 456
Description
With 0.22 I get a lot of validation errors when recording draw commands. The offending code is always similar to this:
for mesh in &obj.meshes {
let set = Arc::new(
PersistentDescriptorSet::start(layout.clone())
.add_buffer(light.uniform_buffer())
.unwrap()
.add_buffer(model_ub.clone())
.unwrap()
.build()
.unwrap(),
);
builder
.draw_indexed(
shadow_pipeline.clone(),
&dynamic_state,
mesh.vb.clone(),
mesh.ib.clone(),
set,
(),
vec![],
)
.unwrap();
}
i.e. some loop that records draw commands and re-uses the same uniform buffer(s) over and over again. The error is always of the form
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: SyncCommandBufferBuilderError(Conflict { command1_name: "vkCmdBindDescriptorSets", command1_param: "Buffer bound to descriptor 0 of set 0", command1_offset: 4, command2_name: "vkCmdBindDescriptorSets", command2_param: "Buffer bound to descriptor 0 of set 0", command2_offset: 8 })', src/main.rs:533:42
The error is returned by the draw_indexed
call.
This code worked in 0.21 but stopped working when I upgraded to 0.22. I tried upgrading to 0.22 because I had similar issues (also conflicts but with images instead of buffers and only in a new piece of code that isn't involved here) and thought the overhauled image code in 0.22 could solve my problems. But now I have buffer problems :D
Is there already a fix for this? I'm also fine with patching up vulkano myself and just remove some validation code for now. Would be nice if someone can give me a hint where this could come from.
You can probably reproduce this issue when porting the examples to 0.22.