From 6181f520892f46af063a266b12b21916705d7f8f Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 10 Mar 2025 23:46:32 +0100 Subject: [PATCH] vtn: Support the UniformDecoration capability. This is needed for SPIR-V 1.6 support in OpenCL. This capability enables the Uniform and UniformId decorations which prior were Shader only. The CTS ends up using those decorations on function arguments, but we can just ignore handling them there for now. Fixes the spirv16_uniformdecoration_uniform and spirv16_uniformdecoration_uniformid CL CTS test inside test_spirv_new. Fixes: bb6d371c0eb ("rusticl: support SPIR-V 1.5 and 1.6") Reviewed-by: Alyssa Rosenzweig Part-of: --- src/compiler/spirv/spirv_to_nir.c | 1 + src/compiler/spirv/vtn_cfg.c | 2 ++ src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs | 1 + 3 files changed, 4 insertions(+) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 55932858064..5c365386d3d 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -189,6 +189,7 @@ static const struct spirv_capabilities implemented_capabilities = { .UniformAndStorageBuffer8BitAccess = true, .UniformBufferArrayDynamicIndexing = true, .UniformBufferArrayNonUniformIndexingEXT = true, + .UniformDecoration = true, .UniformTexelBufferArrayDynamicIndexingEXT = true, .UniformTexelBufferArrayNonUniformIndexingEXT = true, .VariablePointers = true, diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c index 9e9a8a2acb6..2ac83aa71d5 100644 --- a/src/compiler/spirv/vtn_cfg.c +++ b/src/compiler/spirv/vtn_cfg.c @@ -131,6 +131,8 @@ function_parameter_decoration_cb(struct vtn_builder *b, struct vtn_value *val, case SpvDecorationRelaxedPrecision: case SpvDecorationRestrict: case SpvDecorationRestrictPointer: + case SpvDecorationUniform: + case SpvDecorationUniformId: case SpvDecorationVolatile: break; diff --git a/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs b/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs index 90d56d645d5..ad7ef1aa3c4 100644 --- a/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs +++ b/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs @@ -296,6 +296,7 @@ impl SPIRVBin { LiteralSampler: true, SampledBuffer: true, Sampled1D: true, + UniformDecoration: true, Vector16: true, ..Default::default() }