-
Notifications
You must be signed in to change notification settings - Fork 406
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
debugPrintfEXT - missing output for pass with previously bound but unused descriptor set #8763
Comments
Agree... thanks for raising this, will take a look into later this week |
I wrote to reproduce, I can't Are you using If you can try again, try with
and/or
|
I tried what you suggested with I did some more testing on both Windows 11 and Linux; and with NVIDIA and AMD GPUs, and the problem seems to only occur with my NVIDIA GPU, on both operating systems. I also ran my program in renderdoc and, to my surprise, the debug message appears in the corresponding dispatch call. So my print seems to get lost somewhere in the validation layer output (either configured by the application, or by To make sure the problem isn't caused by my application, I also ran your So I modified the test case to actually use an empty pipeline layout: CreateComputePipelineHelper pipe2(*this);
pipe2.cs_ = std::make_unique<VkShaderObj>(this, shader_source_2, VK_SHADER_STAGE_COMPUTE_BIT);
const vkt::PipelineLayout pipeline_layout2(*m_device); // <<< NEW: Create empty pipeline layout
pipe2.cp_ci_.layout = pipeline_layout2.handle(); // <<< NEW: Set empty pipeline layout
pipe2.CreateComputePipeline(); I reran the test and it still passed... However, when I run the test case with So in summary: for me, the issue only occurs with an NVIDIA GPU, and when using the validation layers to directly print the messages (either configured by my application, or by Can you reproduce my issue with the modification to the test case and with |
@flagrans-dev thanks so much for helping triage this! I don't have my NVIDIA machine on me this second, but will try all of these and try to reproduce! |
Environment:
debugPrintfEXT
Describe the Issue
Compute dispatches that do not use any descriptor sets (e.g., because buffers are accessed with a buffer device address) do not output any messages from
debugPrintfEXT
if a descriptor set was bound for a previous compute pass.I tried the following things:
debugPrintfEXT
in the first compute shader: still no outputvkCmdDispatch
: still no outputvkCmdBindDescriptorSet
: it worksvkCmdBindDescriptorSet
to the same slot: debug outputs for both passes workSo to me it seems that the call to
vkCmdBindDescriptorSet
is the cause of the issue, as it binds the descriptor set to the compute bind point and there is no way to "unbind" it for the successive passes. If I understood the waydebugPrintfEXT
works correctly, the validation layer inserts another descriptor set for the message buffer. Maybe this actually unused descriptor set messes something up?I did not have time to test whether the same issue occurs using successive render passes and graphics pipelines where some do not use any descriptor sets.
Expected behavior
debugPrintfEXT
should also produce output for successive compute passes that do not use any descriptor sets.Valid Usage ID
n/a
Additional context
n/a
The text was updated successfully, but these errors were encountered: