Open Karpov-Ruslan opened 1 month ago
Thanks for reporting this (and the related spec issue https://github.com/KhronosGroup/Vulkan-Docs/issues/2438) !
For Vendor extensions we rely on vendors to add validation themselves, I have never used/looked at VK_HUAWEI_subpass_shading
and couldn't write a test for it (which is what we need as well)
Happy to take PRs, but with all the other backlogs we have, I will not be able to get to this anytime in the near future
cc @PanGao-h
Got it. We'll fix it soon.
Got it. We'll fix it soon.
That's great! I hope this also applies to https://github.com/KhronosGroup/Vulkan-Docs/issues/2438.
Environment:
VK_LAYER_KHRONOS_validation
Describe the Issue
I used
VK_HUAWEI_subpass_shading
device extension, but faced with VVL error:, but I used example-like code from Vulkan Spec (Example at the bottom of the page).
Expected behavior
There should be no error.
Where to start the search
I think you can start with the
ExecutionModelToShaderStageFlagBits
function (location:<repo>/layers/state_tracker/shader_module.cpp
), which is a little bit wrong:VK_HUAWEI_subpass_shading
extendVkShaderStageFlagBits
withVK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
.SPV_HUAWEI_subpass_shading
do not provide new SPIR-V Execution Model and just add new Capability -SubpassShadingHUAWEI
.ExecutionModelToShaderStageFlagBits
function see only Execution Model and decide that if Execution Model is equal toGLCompute
, then shader stage isVK_SHADER_STAGE_COMPUTE_BIT
. But it's wrong. Function should also see Capabilities, because if Execution Model isGLCompute
and Capability isSubpassShadingHUAWEI
, then shader stage exactly isVK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
:Valid Usage IDs
VUID-VkComputePipelineCreateInfo-stage-00701
VUID-VkPipelineShaderStageCreateInfo-pName-00707