summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmma Anholt <emma@anholt.net>2023-04-05 12:34:16 -0700
committerMarge Bot <emma+marge@anholt.net>2023-04-24 19:21:50 +0000
commitc060b649c5a866f42e5df73f41c6e2809cf30e99 (patch)
tree8294feb36242bb80bd56d35c76f493a9ff9888f8
parent75a08b04d7d0c2b41f82d7bbab7a5bd932429119 (diff)
downloadmesa-c060b649c5a866f42e5df73f41c6e2809cf30e99.tar.gz
ci/zink: Enable the validation layer on the TGL GL46 run.
We recently had an issue where an anv merge failed due to a bug in zink, which validation would have caught. Get some coverage by default on the main branch. This increases runtime from 9:30 to 12:10. I don't feel good about this, but I've got https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4398 in flight to try to knock the time back down. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22459>
-rwxr-xr-x.gitlab-ci/common/generate-env.sh1
-rw-r--r--src/gallium/drivers/zink/ci/deqp-zink-anv-tgl.toml2
-rw-r--r--src/gallium/drivers/zink/ci/zink-anv-tgl-validation-settings.txt121
3 files changed, 124 insertions, 0 deletions
diff --git a/.gitlab-ci/common/generate-env.sh b/.gitlab-ci/common/generate-env.sh
index 5f0dfa58eeb..869e9ad431c 100755
--- a/.gitlab-ci/common/generate-env.sh
+++ b/.gitlab-ci/common/generate-env.sh
@@ -118,6 +118,7 @@ for var in \
VK_ICD_FILENAMES \
VKD3D_PROTON_RESULTS \
ZINK_DESCRIPTORS \
+ ZINK_DEBUG \
LVP_POISON_MEMORY \
; do
if [ -n "${!var+x}" ]; then
diff --git a/src/gallium/drivers/zink/ci/deqp-zink-anv-tgl.toml b/src/gallium/drivers/zink/ci/deqp-zink-anv-tgl.toml
index a1c54565ed3..8d625c7a3f3 100644
--- a/src/gallium/drivers/zink/ci/deqp-zink-anv-tgl.toml
+++ b/src/gallium/drivers/zink/ci/deqp-zink-anv-tgl.toml
@@ -50,6 +50,8 @@ deqp_args = [
"--deqp-visibility=hidden"
]
timeout = 180.0
+[deqp.env]
+ ZINK_DEBUG = "validation"
#[[piglit]]
#piglit_folder = "/piglit"
diff --git a/src/gallium/drivers/zink/ci/zink-anv-tgl-validation-settings.txt b/src/gallium/drivers/zink/ci/zink-anv-tgl-validation-settings.txt
new file mode 100644
index 00000000000..9bc21eec389
--- /dev/null
+++ b/src/gallium/drivers/zink/ci/zink-anv-tgl-validation-settings.txt
@@ -0,0 +1,121 @@
+# 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 = UNASSIGNED-CoreValidation-Shader-InconsistentSpirv,VUID-vkDestroyDevice-device-00378,VUID-VkShaderModuleCreateInfo-pCode-01377,VUID-vkCmdDrawMultiIndexedEXT-None-02699,VUID-RuntimeSpirv-Location-06272,VUID-VkGraphicsPipelineCreateInfo-renderPass-06590,VUID-VkGraphicsPipelineCreateInfo-Geometry-07725,VUID-vkCmdDispatch-viewType-07752,VUID-vkCmdDrawMultiEXT-viewType-07752,VUID-vkCmdDrawMultiIndexedEXT-format-07753,UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch
+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
+
+# KHR-Single-GL46.enhanced_layouts.xfb_struct_explicit_location:
+# [ UNASSIGNED-CoreValidation-Shader-InconsistentSpirv ] Object 0: handle =
+# 0x556fd2b6e190, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x6bbb14 | SPIR-V
+# module not valid: The Component Type of Vector 1 must be the same as ResultType.
+
+# Intermittent, probably the end of a caselist so not tied to a specific known test:
+# [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x55c458362820, type =
+# VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x2a7f70000000053, type =
+# VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT; | MessageID = 0x71500fba | OBJ ERROR : For
+# VkDevice 0x55c458362820[], VkDescriptorSetLayout 0x2a7f70000000053[] has not
+# been destroyed. The Vulkan spec states: All child objects created on device must
+# have been destroyed prior to destroying device
+# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyDevice-device-00378)
+
+# KHR-Single-GL46.enhanced_layouts.xfb_struct_explicit_location:
+# [ VUID-VkShaderModuleCreateInfo-pCode-01377 ] Object 0: handle =
+# 0x563a677573b0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x5821254b | SPIR-V
+# module not valid: The Component Type of Vector 1 must be the same as ResultType.
+# %142 = OpVectorShuffle %v2uint %141 %141 0 1
+# The Vulkan spec states: pCode must point to either valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification or valid GLSL code which must be written to the GL_KHR_vulkan_glsl extension specification (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkShaderModuleCreateInfo-pCode-01377)
+
+# KHR-GL46.sample_variables.position.fixed.samples_0:
+# [ VUID-vkCmdDrawMultiIndexedEXT-None-02699 ] Object 0: handle =
+# 0x535b660000000043, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID =
+# 0xc5b20f4e | vkCmdDrawMultiIndexedEXT: Descriptor set VkDescriptorSet
+# 0x535b660000000043[] in binding #129 index 0 requires bound image to have
+# multiple samples, but got VK_SAMPLE_COUNT_1_BIT. The Vulkan spec states:
+# Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets,
+# must be valid as described by descriptor validity if they are statically used by
+# the VkPipeline bound to the pipeline bind point used by this command
+# (https://github.com/KhronosGroup/Vulkan-Docs/search?q=)VUID-vkCmdDrawMultiIndexedEXT-None-02699)
+#
+# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22492
+
+# KHR-GL46.geometry_shader.limits.max_output_components
+# [ VUID-RuntimeSpirv-Location-06272 ] Object 0: handle = 0x3a6cbb0000000025,
+# type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID = 0xa3614f8b | Invalid Pipeline
+# CreateInfo State: Fragment shader exceeds
+# VkPhysicalDeviceLimits::maxFragmentInputComponents of 116 components by 4
+# 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.gpu_shader_fp64.builtin.roundeven_dvec4:
+# [ VUID-VkGraphicsPipelineCreateInfo-renderPass-06590 ] Object 0: handle =
+# 0x5647ce5e6ac0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xd835f001 |
+# vkCreateGraphicsPipelines(): pCreateInfos[0] does contains fragment shader state
+# and no fragment output state, pDepthStencilState does not point to a valid
+# VkPipelineDepthStencilStateCreateInfo struct. The Vulkan spec states: If
+# renderPass is VK_NULL_HANDLE and the pipeline is being created with fragment
+# shader state but not fragment output interface state, pDepthStencilState must be
+# a valid pointer to a valid VkPipelineDepthStencilStateCreateInfo structure
+# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkGraphicsPipelineCreateInfo-renderPass-06590)
+
+# KHR-GL46.shader_image_size.basic-nonMS-gs-float:
+# [ VUID-VkGraphicsPipelineCreateInfo-Geometry-07725 ] Object 0: handle =
+# 0xa4ad110000039145, 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.shader_image_size.advanced-nonMS-cs-uint
+# [ VUID-vkCmdDispatch-viewType-07752 ] Object 0: handle = 0x91235f000001e6d7,
+# type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID = 0x6174abc7 | vkCmdDispatch:
+# Descriptor set VkDescriptorSet 0x91235f000001e6d7[] in binding #3 index 0
+# requires an image view of type VK_IMAGE_VIEW_TYPE_CUBE but got VkImageView
+# 0xf8e246000001e6c6[] which is of type VK_IMAGE_VIEW_TYPE_2D. 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-vkCmdDispatch-viewType-07752)
+#
+# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4250
+
+# KHR-GL46.shader_image_size.advanced-nonMS-fs-int:
+# [ VUID-vkCmdDrawMultiEXT-viewType-07752 ] Object 0: handle =
+# 0x2a7f70000000053, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID =
+# 0xacde5967 | vkCmdDrawMultiEXT: Descriptor set VkDescriptorSet
+# 0x2a7f70000000053[] in binding #131 index 0 requires an image view of type
+# VK_IMAGE_VIEW_TYPE_CUBE but got VkImageView 0x6612e40000000041[] which is of
+# type VK_IMAGE_VIEW_TYPE_2D. 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)
+#
+# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4250
+
+# KHR-GL46.sample_variables.mask.rgba8i.samples_8.mask_3:
+# [ VUID-vkCmdDrawMultiIndexedEXT-format-07753 ] Object 0: handle =
+# 0x535b660000000043, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID =
+# 0xd35852d3 | vkCmdDrawMultiIndexedEXT: Descriptor set VkDescriptorSet
+# 0x535b660000000043[] in binding #128 index 0 requires SINT component type, but
+# bound descriptor format is VK_FORMAT_R8G8B8A8_UNORM (VkImageView
+# 0x9638f80000000036[]). The Vulkan spec states: If a VkImageView is accessed as a
+# result of this command, then the image view's format must match the numeric
+# format from the Sampled Type operand of the OpTypeImage as described in the
+# SPIR-V Sampled Type column of the Interpretation of Numeric Format table
+# (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdDrawMultiIndexedEXT-format-07753)
+
+# KHR-Single-GL46.enhanced_layouts.varying_locations:
+# [ UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch ] Object 0: handle =
+# 0x5eb05e000000003b, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID =
+# 0xb6cf33fe | Type mismatch on location 0.0, between geometry shader and fragment
+# shader: 'ptr to Output vec2 of uint64' vs 'ptr to Input struct of (vec4 of
+# float32, vec4 of float32)'