# Please include a comment with the log message and a testcase triggering each
# VUID at the bottom of the file.
khronos_validation.message_id_filter = VUID-VkPhysicalDeviceProperties2-pNext-pNext,VUID-VkDeviceCreateInfo-pNext-pNext,VUID-VkGraphicsPipelineCreateInfo-Geometry-07725,VUID-VkShaderModuleCreateInfo-pCode-01091,VUID-vkCmdCopyImage-srcImage-07743,VUID-RuntimeSpirv-Location-06272,VUID-vkCmdDrawMultiEXT-None-02699,VUID-VkShaderModuleCreateInfo-pCode-01091,VUID-VkShaderModuleCreateInfo-pCode-08740,VUID-RuntimeSpirv-OpEntryPoint-08743,VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471,VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07471
khronos_validation.report_flags = error
khronos_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG,VK_DBG_LAYER_ACTION_BREAK
VK_LAYER_ENABLES=VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
khronos_validation.printf_buffer_size = 40960
khronos_validation.printf_to_stdout = true
khronos_validation.log_filename = stdout

# VUID-VkPhysicalDeviceProperties2-pNext-pNext
# VUID-VkDeviceCreateInfo-pNext-pNext
# never error due to unrecognized extensions


# dEQP-GLES31.functional.geometry_shading.emit.points_emit_0_end_1:
#
# [ VUID-VkGraphicsPipelineCreateInfo-Geometry-07725 ] Object 0: handle =
# 0x2e2941000000001f, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID =
# 0x64e29d24 | vkCreateGraphicsPipelines():
# shaderTessellationAndGeometryPointSize is enabled, but PointSize is not
# written in the Geometry shader. The Vulkan spec states: If the pipeline
# is being created with a Geometry {ExecutionModel}, uses the
# OutputPoints {ExecutionMode}, and
# shaderTessellationAndGeometryPointSize is enabled, a PointSize
# decorated variable must be written to
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkGraphicsPipelineCreateInfo-Geometry-07725)

# KHR-GL46.compute_shader.resources-max:
#
# [ VUID-VkShaderModuleCreateInfo-pCode-01091 ] Object 0: handle =
# 0x55b4bf3a48d0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xa7bb8db6
# | vkCreateShaderModule(): The SPIR-V Capability
# (StorageImageArrayDynamicIndexing) was declared, but none of the
# requirements were met to use it. The Vulkan spec states: If pCode
# declares any of the capabilities listed in the SPIR-V Environment
# appendix, one of the corresponding requirements must be satisfied
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkShaderModuleCreateInfo-pCode-01091)
#
# lvp doesn't support the feature and we don't lower it.  Hopefully lvp gains it with
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/6972

# KHR-GL46.copy_image.invalid_target:
#
# [ VUID-vkCmdCopyImage-srcImage-07743 ] Object 0: handle =
# 0x557060e9ffd0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID =
# 0xa4e981d8 | vkCmdCopyImage: pRegion[0] srcImage (VK_IMAGE_TYPE_2D)
# must be equal to dstImage (VK_IMAGE_TYPE_1D) or else one must be 2D and
# the other 3D The Vulkan spec states: If srcImage and dstImage have a
# different VkImageType, one must be VK_IMAGE_TYPE_3D and the other must
# be VK_IMAGE_TYPE_2D
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyImage-srcImage-07743)
#
# Recent VU regression:
# https://gitlab.khronos.org/vulkan/vulkan/-/issues/3357

# KHR-GL46.shader_image_load_store.basic-allTargets-atomic:
# [ VUID-vkCmdDrawMultiEXT-viewType-07752 ] Object 0: handle =
# 0x5581c500000000d5, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID =
# 0xacde5967 | vkCmdDrawMultiEXT: Descriptor set VkDescriptorSet
# 0x5581c500000000d5[] in binding #129 index 0 requires an image view of type
# VK_IMAGE_VIEW_TYPE_CUBE but got VkImageView 0x359e9300000000cb[] which is of
# type VK_IMAGE_VIEW_TYPE_CUBE_ARRAY. The Vulkan spec states: If a VkImageView is
# accessed as a result of this command, then the image view's viewType must match
# the Dim operand of the OpTypeImage as described in Instruction/Sampler/Image
# View Validation
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdDrawMultiEXT-viewType-07752)

#  KHR-Single-GL46.enhanced_layouts.varying_array_locations:
#
# [ VUID-RuntimeSpirv-Location-06272 ] Object 0: handle =
# 0x8f5f070000000095, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID =
# 0xa3614f8b | Invalid Pipeline CreateInfo State: Geometry shader exceeds
# VkPhysicalDeviceLimits::maxGeometryInputComponents of 64 components by
# 1 components The Vulkan spec states: The sum of Location and the number
# of locations the variable it decorates consumes must be less than or
# equal to the value for the matching {ExecutionModel} defined in Shader
# Input and Output Locations
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-RuntimeSpirv-Location-06272)

#  KHR-GL46.shading_language_420pack.binding_image_array
#
# VUID-VkShaderModuleCreateInfo-pCode-01091(ERROR / SPEC): msgNum: -1480880714 -
# Validation Error: [ VUID-VkShaderModuleCreateInfo-pCode-01091 ]
# vkCreateShaderModule(): The SPIR-V Capability (StorageImageArrayDynamicIndexing) was declared,
# but none of the requirements were met to use it.
# The Vulkan spec states: If pCode declares any of the capabilities listed in the
# SPIR-V Environment appendix, one of the corresponding requirements must be satisfied
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkShaderModuleCreateInfo-pCode-01091)
#
# VUID-VkShaderModuleCreateInfo-pCode-08740(ERROR / SPEC): msgNum: 115483881 -
# Validation Error: [ VUID-VkShaderModuleCreateInfo-pCode-08740 ]
# vkCreateShaderModule(): The SPIR-V Capability (StorageImageArrayDynamicIndexing)
# was declared, but none of the requirements were met to use it.
# The Vulkan spec states: If pname:codeType is ename:VK_SHADER_CODE_TYPE_SPIRV_EXT,
# and pCode declares any of the capabilities listed in the SPIR-V Environment appendix,
# one of the corresponding requirements must be satisfied
# (https://www.khronos.org/registry/vulkan/specs/1.3-khr-extensions/html/vkspec.html#VUID-VkShaderModuleCreateInfo-pCode-08740)
#
# needs lavapipe features

# dEQP-GLES31.functional.separate_shader.random.69
# 
# UNASSIGNED-CoreValidation-Shader-MissingOutput(ERROR / SPEC): msgNum: 1086655814 -
# Validation Error: [ UNASSIGNED-CoreValidation-Shader-MissingOutput ]
# vkCreateGraphicsPipelines(): pCreateInfos[0] VK_SHADER_STAGE_FRAGMENT_BIT declared input at Location 0
# Comonent 2 but it is not an Output declared in VK_SHADER_STAGE_VERTEX_BIT
#
# VUID-RuntimeSpirv-OpEntryPoint-08743(ERROR / SPEC): msgNum: -1986897773 -
# Validation Error: [ VUID-RuntimeSpirv-OpEntryPoint-08743 ]
# vkCreateGraphicsPipelines(): pCreateInfos[0] VK_SHADER_STAGE_FRAGMENT_BIT declared input at
# Location 1 Comonent 2 but it is not an Output declared in VK_SHADER_STAGE_VERTEX_BIT
# The Vulkan spec states: Any user-defined variables shared between the OpEntryPoint of two shader stages,
# and declared with Input as its {StorageClass} for the subsequent shader stage,
# must have all Location slots and Component words declared in the preceding shader stage's
# OpEntryPoint with Output as the {StorageClass}
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-RuntimeSpirv-OpEntryPoint-08743)
#
# VVL bug https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5735


# dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness.multisample_texture_4
#
# VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471(ERROR / SPEC): msgNum: 1182038117 -
# Validation Error: [ VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471 ]
# Object 0: handle = 0x868e960, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x74ea280000000054,
# type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0x46747865 | 
# vkCmdDrawMultiEXT():  VkPhysicalDeviceFeatures::variableMultisampleRate is VK_FALSE and the
# rasterizationSamples set with vkCmdSetRasterizationSamplesEXT() were VK_SAMPLE_COUNT_1_BIT
# but a previous draw used rasterization samples 4..
# The Vulkan spec states: If the bound graphics pipeline state was created with the
# VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does
# not use any color and/or depth/stencil attachments, then the rasterizationSamples
# in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass
# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471)
#
# VVL bug dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness.multisample_texture_4
