Skip to content

Lots of conflicts with reused uniform buffers in 0.22 #1557

@faulesocke

Description

@faulesocke

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions