Errors during GPU-AV self-validation
I built the self-validation layer for Linux, Windows, Windows 11 ARM, and Mac, installed the layer on the NAS, and ran the Vulkan-ValidationLayers job with --self-validate isolated:nas, to run with self-validation using the layer stored on the NAS: http://tcubuser.lunarg.localdomain:8080/job/Vulkan-ValidationLayers/17410/
There are a few issues even in the GPU-AV tests that will have to be resolved before we can deploy this code to production. (But, as the self-validation behavior is activated with a switch, this PR can merge without affecting current tests.)
Linux-AMD
NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved
[ RUN ] NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved
Driver Name = radv
Driver Info = Mesa 23.2.1-1ubuntu3.1~22.04.2
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 ] | MessageID = 0x548d1670 | vkCreatePipelineLayout(): pCreateInfo->setLayoutCount (32) exceeds physical device maxBoundDescriptorSets limit (31). The Vulkan spec states: setLayoutCount must be less than or equal to VkPhysicalDeviceLimits::maxBoundDescriptorSets (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:292: Failure
Failed
Did not receive expected error 'This Pipeline Layout has too many descriptor sets that will not allow GPU shader instrumentation to be setup for pipelines created with it'
[ FAILED ] NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved (549 ms)
PositiveGpuAV.InlineUniformBlockAndRecovery
[ RUN ] PositiveGpuAV.InlineUniformBlockAndRecovery
Driver Name = radv
Driver Info = Mesa 23.2.1-1ubuntu3.1~22.04.2
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 ] | MessageID = 0x548d1670 | vkCreatePipelineLayout(): pCreateInfo->setLayoutCount (32) exceeds physical device maxBoundDescriptorSets limit (31). The Vulkan spec states: setLayoutCount must be less than or equal to VkPhysicalDeviceLimits::maxBoundDescriptorSets (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:292: Failure
Failed
Did not receive expected error 'This Pipeline Layout has too many descriptor sets that will not allow GPU shader instrumentation to be setup for pipelines created with it'
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkComputePipelineCreateInfo-layout-07988 ] Object 0: handle = 0xd5b26f0000000010, type = VK_OBJECT_TYPE_SHADER_MODULE; Object 1: handle = 0xdd3a8a0000000015, type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; | MessageID = 0xd7bf5790 | vkCreateComputePipelines(): pCreateInfos[0].stage SPIR-V (VK_SHADER_STAGE_COMPUTE_BIT) uses descriptor [Set 0, Binding 1, variable "inlineubo"] (type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK) but was not declared in the pipeline layout. The Vulkan spec states: If a resource variables is declared in a shader, a descriptor slot in layout must match the shader stage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkComputePipelineCreateInfo-layout-07988)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkComputePipelineCreateInfo-layout-07990 ] Object 0: handle = 0xd5b26f0000000010, type = VK_OBJECT_TYPE_SHADER_MODULE; Object 1: handle = 0xdd3a8a0000000015, type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; | MessageID = 0x830b328a | vkCreateComputePipelines(): pCreateInfos[0].stage SPIR-V (VK_SHADER_STAGE_COMPUTE_BIT) uses descriptor [Set 0, Binding 0, variable "u_index"] of type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER but expected VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. The Vulkan spec states: If a resource variables is declared in a shader, and the descriptor type is not VK_DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot in layout must match the descriptor type (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkComputePipelineCreateInfo-layout-07990)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ UNASSIGNED-GeneralParameterError-RequiredHandle ] | MessageID = 0x8fdcb17b | vkCmdBindPipeline(): pipeline is VK_NULL_HANDLE.
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ UNASSIGNED-GeneralParameterError-RequiredHandle ] | MessageID = 0x8fdcb17b | vkCmdBindDescriptorSets(): layout is VK_NULL_HANDLE.
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-vkCmdDispatch-None-08606 ] Object 0: handle = 0x60e745e162a0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0xd3c68d54 | vkCmdDispatch(): A valid VK_PIPELINE_BIND_POINT_COMPUTE pipeline must be bound with vkCmdBindPipeline before calling this command. The Vulkan spec states: If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdDispatch-None-08606)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:311: Failure
Failed
Expected to succeed but got error: Pipeline recovery when resources unavailable not functioning as expected
[ FAILED ] PositiveGpuAV.InlineUniformBlockAndRecovery (621 ms)
Linux-NVIDIA
NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved
Driver Name = NVIDIA
Driver Info = 550.78
/home/lunarg/.jenkins/vz3/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 ] | MessageID = 0x548d1670 | vkCreatePipelineLayout(): pCreateInfo->setLayoutCount (32) exceeds physical device maxBoundDescriptorSets limit (31). The Vulkan spec states: setLayoutCount must be less than or equal to VkPhysicalDeviceLimits::maxBoundDescriptorSets (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286)
/home/lunarg/.jenkins/vz3/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:292: Failure
Failed
Did not receive expected error 'This Pipeline Layout has too many descriptor sets that will not allow GPU shader instrumentation to be setup for pipelines created with it'
[ FAILED ] NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved (223 ms)
PositiveGpuAV.InlineUniformBlockAndRecovery
[ RUN ] PositiveGpuAV.InlineUniformBlockAndRecovery
Driver Name = radv
Driver Info = Mesa 23.2.1-1ubuntu3.1~22.04.2
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 ] | MessageID = 0x548d1670 | vkCreatePipelineLayout(): pCreateInfo->setLayoutCount (32) exceeds physical device maxBoundDescriptorSets limit (31). The Vulkan spec states: setLayoutCount must be less than or equal to VkPhysicalDeviceLimits::maxBoundDescriptorSets (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:292: Failure
Failed
Did not receive expected error 'This Pipeline Layout has too many descriptor sets that will not allow GPU shader instrumentation to be setup for pipelines created with it'
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkComputePipelineCreateInfo-layout-07988 ] Object 0: handle = 0xd5b26f0000000010, type = VK_OBJECT_TYPE_SHADER_MODULE; Object 1: handle = 0xdd3a8a0000000015, type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; | MessageID = 0xd7bf5790 | vkCreateComputePipelines(): pCreateInfos[0].stage SPIR-V (VK_SHADER_STAGE_COMPUTE_BIT) uses descriptor [Set 0, Binding 1, variable "inlineubo"] (type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK) but was not declared in the pipeline layout. The Vulkan spec states: If a resource variables is declared in a shader, a descriptor slot in layout must match the shader stage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkComputePipelineCreateInfo-layout-07988)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkComputePipelineCreateInfo-layout-07990 ] Object 0: handle = 0xd5b26f0000000010, type = VK_OBJECT_TYPE_SHADER_MODULE; Object 1: handle = 0xdd3a8a0000000015, type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; | MessageID = 0x830b328a | vkCreateComputePipelines(): pCreateInfos[0].stage SPIR-V (VK_SHADER_STAGE_COMPUTE_BIT) uses descriptor [Set 0, Binding 0, variable "u_index"] of type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER but expected VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. The Vulkan spec states: If a resource variables is declared in a shader, and the descriptor type is not VK_DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot in layout must match the descriptor type (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkComputePipelineCreateInfo-layout-07990)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ UNASSIGNED-GeneralParameterError-RequiredHandle ] | MessageID = 0x8fdcb17b | vkCmdBindPipeline(): pipeline is VK_NULL_HANDLE.
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ UNASSIGNED-GeneralParameterError-RequiredHandle ] | MessageID = 0x8fdcb17b | vkCmdBindDescriptorSets(): layout is VK_NULL_HANDLE.
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-vkCmdDispatch-None-08606 ] Object 0: handle = 0x62a2e4a96170, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0xd3c68d54 | vkCmdDispatch(): A valid VK_PIPELINE_BIND_POINT_COMPUTE pipeline must be bound with vkCmdBindPipeline before calling this command. The Vulkan spec states: If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdDispatch-None-08606)
/home/lunarg/.jenkins/vz0/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:311: Failure
Failed
Expected to succeed but got error: Pipeline recovery when resources unavailable not functioning as expected
[ FAILED ] PositiveGpuAV.InlineUniformBlockAndRecovery (782 ms)
Mac-M1
PositiveGpuAV.InlineUniformBlockAndRecovery
[ RUN ] PositiveGpuAV.InlineUniformBlockAndRecovery
Driver Name = MoltenVK
Driver Info = 1.2.9
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 ] | MessageID = 0x548d1670 | vkCreatePipelineLayout(): pCreateInfo->setLayoutCount (8) exceeds physical device maxBoundDescriptorSets limit (7). The Vulkan spec states: setLayoutCount must be less than or equal to VkPhysicalDeviceLimits::maxBoundDescriptorSets (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286)
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:292: Failure
Failed
Did not receive expected error 'This Pipeline Layout has too many descriptor sets that will not allow GPU shader instrumentation to be setup for pipelines created with it'
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkComputePipelineCreateInfo-layout-07988 ] Object 0: handle = 0xd5b26f0000000010, type = VK_OBJECT_TYPE_SHADER_MODULE; Object 1: handle = 0xdd3a8a0000000015, type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; | MessageID = 0xd7bf5790 | vkCreateComputePipelines(): pCreateInfos[0].stage SPIR-V (VK_SHADER_STAGE_COMPUTE_BIT) uses descriptor [Set 0, Binding 1, variable "inlineubo"] (type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK) but was not declared in the pipeline layout. The Vulkan spec states: If a resource variables is declared in a shader, a descriptor slot in layout must match the shader stage (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkComputePipelineCreateInfo-layout-07988)
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-VkComputePipelineCreateInfo-layout-07990 ] Object 0: handle = 0xd5b26f0000000010, type = VK_OBJECT_TYPE_SHADER_MODULE; Object 1: handle = 0xdd3a8a0000000015, type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; | MessageID = 0x830b328a | vkCreateComputePipelines(): pCreateInfos[0].stage SPIR-V (VK_SHADER_STAGE_COMPUTE_BIT) uses descriptor [Set 0, Binding 0, variable "u_index"] of type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER but expected VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. The Vulkan spec states: If a resource variables is declared in a shader, and the descriptor type is not VK_DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot in layout must match the descriptor type (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkComputePipelineCreateInfo-layout-07990)
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ UNASSIGNED-GeneralParameterError-RequiredHandle ] | MessageID = 0x8fdcb17b | vkCmdBindPipeline(): pipeline is VK_NULL_HANDLE.
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ UNASSIGNED-GeneralParameterError-RequiredHandle ] | MessageID = 0x8fdcb17b | vkCmdBindDescriptorSets(): layout is VK_NULL_HANDLE.
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:252: Failure
Failed
Self Validation Error: [ VUID-vkCmdDispatch-None-08606 ] Object 0: handle = 0x13e727428, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0xd3c68d54 | vkCmdDispatch(): A valid VK_PIPELINE_BIND_POINT_COMPUTE pipeline must be bound with vkCmdBindPipeline before calling this command. The Vulkan spec states: If the shaderObject feature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdDispatch-None-08606)
/Users/lunarg/.jenkins/vz1/Release64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:311: Failure
Failed
Expected to succeed but got error: Pipeline recovery when resources unavailable not functioning as expected
[ FAILED ] PositiveGpuAV.InlineUniformBlockAndRecovery (465 ms)
Windows-NVIDIA
NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved
[ RUN ] NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved
Driver Name = NVIDIA
Driver Info = 538.39
C:\j\vz1\Debug64\Vulkan-ValidationLayers\tests\framework\error_monitor.cpp(252): error: Failed
Self Validation Error: [ VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 ] | MessageID = 0x548d1670 | vkCreatePipelineLayout(): pCreateInfo->setLayoutCount (32) exceeds physical device maxBoundDescriptorSets limit (31). The Vulkan spec states: setLayoutCount must be less than or equal to VkPhysicalDeviceLimits::maxBoundDescriptorSets (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286)
C:\j\vz1\Debug64\Vulkan-ValidationLayers\tests\framework\error_monitor.cpp(292): error: Failed
Did not receive expected error 'This Pipeline Layout has too many descriptor sets that will not allow GPU shader instrumentation to be setup for pipelines created with it'
[ FAILED ] NegativeGpuAV.UseAllDescriptorSlotsPipelineReserved (3462 ms)
With the self-validation layer in the proper order, all of the above disappear; but Mac still fails multiple tests with what looks like a single widelines problem: http://tcubuser.lunarg.localdomain:8080/job/Vulkan-ValidationLayers/17645/BITS=64,BUILD_MODE=Debug,label=Mac-M1/consoleFull
NegativeGpuAVIndirectBuffer.FirstInstance and GpuAvBufferContentValidationSettings/PositiveGpuAVParameterized.SettingsCombinations
[ RUN ] NegativeGpuAVIndirectBuffer.FirstInstance
Driver Name = MoltenVK
Driver Info = 1.2.9
/Users/lunarg/.jenkins/vz0/Debug64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:259: Failure
Failed
Self Validation Error: [ VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749 ] | MessageID = 0x1b1ca73 | vkCreateGraphicsPipelines(): pCreateInfos[0].pRasterizationState->lineWidth is 0.000000, but the line width state is static (pCreateInfos[0].pDynamicState->pDynamicStates does not contain VK_DYNAMIC_STATE_LINE_WIDTH) and wideLines feature was not enabled.
The Vulkan spec states: If the pipeline requires pre-rasterization shader state, and the wideLines feature is not enabled, and no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_LINE_WIDTH, the lineWidth member of pRasterizationState must be 1.0 (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749)
/Users/lunarg/.jenkins/vz0/Debug64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:259: Failure
Failed
Validation Error: [ UNASSIGNED-GPU-Assisted-Validation ] | MessageID = 0xea8d5c05 | vkCmdDrawIndirect(): Internal Error, GPU-AV is being disabled. Details:
Unable to create graphics pipeline.
/Users/lunarg/.jenkins/vz0/Debug64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:259: Failure
Failed
Validation Error: [ UNASSIGNED-GPU-Assisted-Validation ] Object 0: handle = 0x14291cfe8, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0xea8d5c05 | vkCmdDrawIndirect(): Internal Error, GPU-AV is being disabled. Details:
Could not find or create a pipeline.
/Users/lunarg/.jenkins/vz0/Debug64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:299: Failure
Failed
Did not receive expected error 'VUID-VkDrawIndirectCommand-firstInstance-00501'
/Users/lunarg/.jenkins/vz0/Debug64/Vulkan-ValidationLayers/tests/framework/error_monitor.cpp:299: Failure
Failed
Did not receive expected error 'VUID-VkDrawIndexedIndirectCommand-firstInstance-00554'
[ FAILED ] NegativeGpuAVIndirectBuffer.FirstInstance (1185 ms)