Vulkan-ValidationLayers icon indicating copy to clipboard operation
Vulkan-ValidationLayers copied to clipboard

CombinedImageSampler broken with VVL + descriptor buffer + SingleArray = false

Open StefanPoelloth opened this issue 9 months ago • 3 comments

Environment:

  • OS: Win11 24H2
  • GPU and driver version: Intel B580, 32.0.101.6734 and 32.0.101.6793
  • SDK or header version if building from repo: 1.4.313
  • Options enabled (synchronization, best practices, etc.): PrintF OR GPU-AV

Describe the Issue

There seems to be an issue with combined image samplers when the following criterias are met:

  • Descriptor Buffers are used
  • CombinedImageSamplers are used
  • GPU requires VkPhysicalDeviceDescriptorBufferPropertiesEXT.combinedImageSamplerDescriptorSingleArray = false
  • VVL "Debug Printf Preset" is used OR "GPU-Assisted Preset" is used

If any of the points above isnt met (eg, disable VVL) the issue doesnt appear.

It seems that the samplers use default (uninitialized?) values.

For example:

  • The whole image has color banding because the sampling in the Tonemapping LUT is using nearest instead of linear interpolation.
  • The bloom bleeds over image edges because the sampler doesnt clamp anymore.
  • Specular reflections are sampled with nearest and always use mip 0. (sampler min and max mip is 0)

Image

Expected behavior

The App should render correctly, even with the Debug Printf Preset enabled.

Image

StefanPoelloth avatar May 23 '25 12:05 StefanPoelloth

Descriptor Buffers are used

So currently GPU-AV and DebugPrintf both rely on using a "normal" Descriptor Slot in order to write the data out into a SSBO, and unfortunately you can not mix-and-match "normal descriptors" with VK_EXT_descriptor_buffer... we try and print a warning at the start that things will likely not work

It will require a lot of work to find a solution and we haven't started looking into it yet, but this is a known issue

spencer-lunarg avatar May 23 '25 14:05 spencer-lunarg

Yes I can see the message vkCreateDevice(): Internal Warning: VK_EXT_descriptor_buffer is enabled, but GPU-AV does not currently support validation of descriptor buffers. [Disabling all shader instrumentation checks], but I think expected that debugprintf gets disabled without side effects. Instead the render result got changed.

I was debugging another bug with printf and after fixing it, I was testing all combinations of gpus and descriptor buffer on+off. It didnt work on specific GPUs and I suspected my changes to be at fault. Only after some time I found out that it works perfectly without VVL enabled.

StefanPoelloth avatar May 23 '25 15:05 StefanPoelloth

but I think expected that debugprintf gets disabled without side effects.

I agree with this, let me look into this

spencer-lunarg avatar May 23 '25 15:05 spencer-lunarg