summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>2025-10-11 18:30:14 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-10-13 18:01:04 +0100
commit1eadde0f934b7a81a6f26b436908460e4ba0f55c (patch)
treec01c2ce63e2c035a711bea3cb1121d4b88833159
parent27c46b89fe8b8d57ffa4c103137b5a40661e4064 (diff)
downloadpoky-1eadde0f934b7a81a6f26b436908460e4ba0f55c.tar.gz
vulkan: upgrade 1.4.321.0 -> 1.4.328.1
Upgrade all Vulkan-related packages together in a single commit. License-Update: glslang dropped SPIR-V remapper (From OE-Core rev: 55c7566c33833a8f36cbf50a70cb1a1cf7aa96d5) Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-graphics/glslang/glslang_1.4.328.1.bb (renamed from meta/recipes-graphics/glslang/glslang_1.4.321.0.bb)6
-rw-r--r--meta/recipes-graphics/spir/spirv-headers/0001-Add-SPV_INTEL_function_variants-532.patch642
-rw-r--r--meta/recipes-graphics/spir/spirv-headers_1.4.328.1.bb (renamed from meta/recipes-graphics/spir/spirv-headers_1.4.321.0.bb)7
-rw-r--r--meta/recipes-graphics/spir/spirv-tools/0001-SPV_INTEL_function_variants-basic-asm-dis-support-61.patch289
-rw-r--r--meta/recipes-graphics/spir/spirv-tools_1.4.328.1.bb (renamed from meta/recipes-graphics/spir/spirv-tools_1.4.321.0.bb)5
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-headers_1.4.328.1.bb (renamed from meta/recipes-graphics/vulkan/vulkan-headers_1.4.321.0.bb)4
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-loader_1.4.328.1.bb (renamed from meta/recipes-graphics/vulkan/vulkan-loader_1.4.321.0.bb)4
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-tools_1.4.328.1.bb (renamed from meta/recipes-graphics/vulkan/vulkan-tools_1.4.321.0.bb)4
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.4.328.1.bb (renamed from meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.4.321.0.bb)4
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.328.1.bb (renamed from meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.321.0.bb)4
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-volk_1.4.328.1.bb (renamed from meta/recipes-graphics/vulkan/vulkan-volk_1.4.321.0.bb)4
11 files changed, 20 insertions, 953 deletions
diff --git a/meta/recipes-graphics/glslang/glslang_1.4.321.0.bb b/meta/recipes-graphics/glslang/glslang_1.4.328.1.bb
index 2d6f098ad9..57d9fe1a98 100644
--- a/meta/recipes-graphics/glslang/glslang_1.4.321.0.bb
+++ b/meta/recipes-graphics/glslang/glslang_1.4.328.1.bb
@@ -6,10 +6,10 @@ either from a command line or programmatically."
6SECTION = "graphics" 6SECTION = "graphics"
7HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler" 7HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler"
8LICENSE = "BSD-3-Clause & BSD-2-Clause & MIT & Apache-2.0 & GPL-3-with-bison-exception" 8LICENSE = "BSD-3-Clause & BSD-2-Clause & MIT & Apache-2.0 & GPL-3-with-bison-exception"
9LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2a2b5acd7bc4844964cfda45fe807dc3" 9LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=50ff9d0fcde2d5b953ebe431c48e34e3"
10 10
11SRCREV = "8a85691a0740d390761a1008b4696f57facd02c4" 11SRCREV = "a57276bf558f5cf94d3a9854ebdf5a2236849a5a"
12SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https;branch=vulkan-sdk-1.4.321;tag=vulkan-sdk-${PV} \ 12SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https;branch=vulkan-sdk-1.4.328;tag=vulkan-sdk-${PV} \
13 file://0001-generate-glslang-pkg-config.patch \ 13 file://0001-generate-glslang-pkg-config.patch \
14 " 14 "
15PE = "1" 15PE = "1"
diff --git a/meta/recipes-graphics/spir/spirv-headers/0001-Add-SPV_INTEL_function_variants-532.patch b/meta/recipes-graphics/spir/spirv-headers/0001-Add-SPV_INTEL_function_variants-532.patch
deleted file mode 100644
index 9a3ab15350..0000000000
--- a/meta/recipes-graphics/spir/spirv-headers/0001-Add-SPV_INTEL_function_variants-532.patch
+++ /dev/null
@@ -1,642 +0,0 @@
1From 9e3836d7d6023843a72ecd3fbf3f09b1b6747a9e Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Jakub=20=C5=BD=C3=A1dn=C3=ADk?= <jakub.zadnik@intel.com>
3Date: Tue, 24 Jun 2025 15:35:27 +0300
4Subject: [PATCH] Add SPV_INTEL_function_variants (#532)
5
6* Add tokens for SPV_INTEL_function_variants
7
8Add FunctionVariantXXX decorations
9
10Add SpecConditionalINTEL capability
11
12Change class of conditional copy to Composite
13
14Add new instructions; Update tokens
15
16Fix wrong op name
17
18Change spec const arch operand to integer
19
20Reassign tokens; Fix operand
21
22Remove old decorations
23
24* Generate headers
25
26* Add provisional entries and missing capability
27
28Co-authored-by: Victor Lomuller <victor@codeplay.com>
29
30---------
31
32Upstream-Status: Backport [https://github.com/KhronosGroup/SPIRV-Headers/commit/9e3836d7d6023843a72ecd3fbf3f09b1b6747a9e]
33Signed-off-by: Khem Raj <raj.khem@gmail.com>
34Co-authored-by: Victor Lomuller <victor@codeplay.com>
35---
36 include/spirv/unified1/spirv.bf | 10 ++
37 .../spirv/unified1/spirv.core.grammar.json | 120 ++++++++++++++++++
38 include/spirv/unified1/spirv.cs | 10 ++
39 include/spirv/unified1/spirv.h | 27 ++++
40 include/spirv/unified1/spirv.hpp | 27 ++++
41 include/spirv/unified1/spirv.hpp11 | 27 ++++
42 include/spirv/unified1/spirv.json | 10 ++
43 include/spirv/unified1/spirv.lua | 10 ++
44 include/spirv/unified1/spirv.py | 10 ++
45 include/spirv/unified1/spv.d | 10 ++
46 10 files changed, 261 insertions(+)
47
48diff --git a/include/spirv/unified1/spirv.bf b/include/spirv/unified1/spirv.bf
49index 1d5945a..630f2f4 100644
50--- a/include/spirv/unified1/spirv.bf
51+++ b/include/spirv/unified1/spirv.bf
52@@ -655,6 +655,7 @@ namespace Spv
53 HostAccessINTEL = 6188,
54 InitModeINTEL = 6190,
55 ImplementInRegisterMapINTEL = 6191,
56+ ConditionalINTEL = 6247,
57 CacheControlLoadINTEL = 6442,
58 CacheControlStoreINTEL = 6443,
59 Max = 0x7fffffff,
60@@ -1312,6 +1313,8 @@ namespace Spv
61 Subgroup2DBlockTransposeINTEL = 6230,
62 SubgroupMatrixMultiplyAccumulateINTEL = 6236,
63 TernaryBitwiseFunctionINTEL = 6241,
64+ SpecConditionalINTEL = 6245,
65+ FunctionVariantsINTEL = 6246,
66 GroupUniformArithmeticKHR = 6400,
67 TensorFloat32RoundingINTEL = 6425,
68 MaskedGatherScatterINTEL = 6427,
69@@ -2472,6 +2475,13 @@ namespace Spv
70 OpSubgroup2DBlockStoreINTEL = 6235,
71 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
72 OpBitwiseFunctionINTEL = 6242,
73+ OpConditionalExtensionINTEL = 6248,
74+ OpConditionalEntryPointINTEL = 6249,
75+ OpConditionalCapabilityINTEL = 6250,
76+ OpSpecConstantTargetINTEL = 6251,
77+ OpSpecConstantArchitectureINTEL = 6252,
78+ OpSpecConstantCapabilitiesINTEL = 6253,
79+ OpConditionalCopyObjectINTEL = 6254,
80 OpGroupIMulKHR = 6401,
81 OpGroupFMulKHR = 6402,
82 OpGroupBitwiseAndKHR = 6403,
83diff --git a/include/spirv/unified1/spirv.core.grammar.json b/include/spirv/unified1/spirv.core.grammar.json
84index b197d9e..2470bfa 100644
85--- a/include/spirv/unified1/spirv.core.grammar.json
86+++ b/include/spirv/unified1/spirv.core.grammar.json
87@@ -10777,6 +10777,101 @@
88 "capabilities" : [ "TernaryBitwiseFunctionINTEL" ],
89 "version" : "None"
90 },
91+ {
92+ "opname" : "OpConditionalExtensionINTEL",
93+ "class" : "Extension",
94+ "opcode" : 6248,
95+ "operands" : [
96+ { "kind" : "IdRef", "name" : "Condition" },
97+ { "kind" : "LiteralString", "name" : "Name" }
98+ ],
99+ "capabilities" : [ "SpecConditionalINTEL" ],
100+ "provisional" : true,
101+ "version" : "None"
102+ },
103+ {
104+ "opname" : "OpConditionalEntryPointINTEL",
105+ "class" : "Mode-Setting",
106+ "opcode" : 6249,
107+ "operands" : [
108+ { "kind" : "IdRef", "name" : "Condition" },
109+ { "kind" : "ExecutionModel" },
110+ { "kind" : "IdRef", "name" : "Entry Point" },
111+ { "kind" : "LiteralString", "name" : "Name" },
112+ { "kind" : "IdRef", "quantifier" : "*", "name" : "Interface" }
113+ ],
114+ "capabilities" : [ "SpecConditionalINTEL" ],
115+ "provisional" : true,
116+ "version" : "None"
117+ },
118+ {
119+ "opname" : "OpConditionalCapabilityINTEL",
120+ "class" : "Mode-Setting",
121+ "opcode" : 6250,
122+ "operands" : [
123+ { "kind" : "IdRef", "name" : "Condition" },
124+ { "kind" : "Capability", "name" : "Capability" }
125+ ],
126+ "capabilities" : [ "SpecConditionalINTEL" ],
127+ "provisional" : true,
128+ "version" : "None"
129+ },
130+ {
131+ "opname" : "OpSpecConstantTargetINTEL",
132+ "class" : "Constant-Creation",
133+ "opcode" : 6251,
134+ "operands" : [
135+ { "kind" : "IdResultType" },
136+ { "kind" : "IdResult" },
137+ { "kind" : "LiteralInteger", "name" : "Target" },
138+ { "kind" : "LiteralInteger", "quantifier" : "*", "name" : "Features" }
139+ ],
140+ "capabilities" : [ "FunctionVariantsINTEL" ],
141+ "provisional" : true,
142+ "version": "None"
143+ },
144+ {
145+ "opname" : "OpSpecConstantArchitectureINTEL",
146+ "class" : "Constant-Creation",
147+ "opcode" : 6252,
148+ "operands" : [
149+ { "kind" : "IdResultType" },
150+ { "kind" : "IdResult" },
151+ { "kind" : "LiteralInteger", "name" : "Category" },
152+ { "kind" : "LiteralInteger", "name" : "Family" },
153+ { "kind" : "LiteralInteger", "name" : "Opcode" },
154+ { "kind" : "LiteralInteger", "name" : "Architecture" }
155+ ],
156+ "capabilities" : [ "FunctionVariantsINTEL" ],
157+ "provisional" : true,
158+ "version": "None"
159+ },
160+ {
161+ "opname" : "OpSpecConstantCapabilitiesINTEL",
162+ "class" : "Constant-Creation",
163+ "opcode" : 6253,
164+ "operands" : [
165+ { "kind" : "IdResultType" },
166+ { "kind" : "IdResult" },
167+ { "kind" : "Capability", "quantifier" : "*", "name" : "Capabilities" }
168+ ],
169+ "capabilities" : [ "FunctionVariantsINTEL" ],
170+ "provisional" : true,
171+ "version": "None"
172+ },
173+ {
174+ "opname" : "OpConditionalCopyObjectINTEL",
175+ "class" : "Composite",
176+ "opcode" : 6254,
177+ "operands" : [
178+ { "kind" : "IdResultType" },
179+ { "kind" : "IdResult" },
180+ { "kind" : "IdRef", "quantifier" : "*", "name" : "Condition 0, Operand 0, +\nCondition 1, Operand 1, +\n..." }
181+ ],
182+ "capabilities" : [ "SpecConditionalINTEL" ],
183+ "provisional" : true,
184+ "version" : "None"
185+ },
186 {
187 "opname" : "OpGroupIMulKHR",
188 "class" : "Group",
189@@ -14900,6 +14995,16 @@
190 "capabilities" : [ "GlobalVariableFPGADecorationsINTEL" ],
191 "version" : "None"
192 },
193+ {
194+ "enumerant" : "ConditionalINTEL",
195+ "value" : 6247,
196+ "parameters": [
197+ { "kind" : "IdRef", "name" : "Condition" }
198+ ],
199+ "capabilities" : [ "SpecConditionalINTEL" ],
200+ "provisional" : true,
201+ "version" : "None"
202+ },
203 {
204 "enumerant" : "CacheControlLoadINTEL",
205 "value" : 6442,
206@@ -17563,6 +17668,21 @@
207 "extensions" : [ "SPV_INTEL_ternary_bitwise_function"],
208 "version" : "None"
209 },
210+ {
211+ "enumerant" : "SpecConditionalINTEL",
212+ "value" : 6245,
213+ "extensions" : [ "SPV_INTEL_function_variants" ],
214+ "provisional" : true,
215+ "version": "None"
216+ },
217+ {
218+ "enumerant" : "FunctionVariantsINTEL",
219+ "value" : 6246,
220+ "capabilities" : [ "SpecConditionalINTEL" ],
221+ "extensions" : [ "SPV_INTEL_function_variants" ],
222+ "provisional" : true,
223+ "version": "None"
224+ },
225 {
226 "enumerant" : "GroupUniformArithmeticKHR",
227 "value" : 6400,
228diff --git a/include/spirv/unified1/spirv.cs b/include/spirv/unified1/spirv.cs
229index b11a8b2..57e7216 100644
230--- a/include/spirv/unified1/spirv.cs
231+++ b/include/spirv/unified1/spirv.cs
232@@ -654,6 +654,7 @@ namespace Spv
233 HostAccessINTEL = 6188,
234 InitModeINTEL = 6190,
235 ImplementInRegisterMapINTEL = 6191,
236+ ConditionalINTEL = 6247,
237 CacheControlLoadINTEL = 6442,
238 CacheControlStoreINTEL = 6443,
239 Max = 0x7fffffff,
240@@ -1311,6 +1312,8 @@ namespace Spv
241 Subgroup2DBlockTransposeINTEL = 6230,
242 SubgroupMatrixMultiplyAccumulateINTEL = 6236,
243 TernaryBitwiseFunctionINTEL = 6241,
244+ SpecConditionalINTEL = 6245,
245+ FunctionVariantsINTEL = 6246,
246 GroupUniformArithmeticKHR = 6400,
247 TensorFloat32RoundingINTEL = 6425,
248 MaskedGatherScatterINTEL = 6427,
249@@ -2471,6 +2474,13 @@ namespace Spv
250 OpSubgroup2DBlockStoreINTEL = 6235,
251 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
252 OpBitwiseFunctionINTEL = 6242,
253+ OpConditionalExtensionINTEL = 6248,
254+ OpConditionalEntryPointINTEL = 6249,
255+ OpConditionalCapabilityINTEL = 6250,
256+ OpSpecConstantTargetINTEL = 6251,
257+ OpSpecConstantArchitectureINTEL = 6252,
258+ OpSpecConstantCapabilitiesINTEL = 6253,
259+ OpConditionalCopyObjectINTEL = 6254,
260 OpGroupIMulKHR = 6401,
261 OpGroupFMulKHR = 6402,
262 OpGroupBitwiseAndKHR = 6403,
263diff --git a/include/spirv/unified1/spirv.h b/include/spirv/unified1/spirv.h
264index 005d451..84972da 100644
265--- a/include/spirv/unified1/spirv.h
266+++ b/include/spirv/unified1/spirv.h
267@@ -642,6 +642,7 @@ typedef enum SpvDecoration_ {
268 SpvDecorationHostAccessINTEL = 6188,
269 SpvDecorationInitModeINTEL = 6190,
270 SpvDecorationImplementInRegisterMapINTEL = 6191,
271+ SpvDecorationConditionalINTEL = 6247,
272 SpvDecorationCacheControlLoadINTEL = 6442,
273 SpvDecorationCacheControlStoreINTEL = 6443,
274 SpvDecorationMax = 0x7fffffff,
275@@ -1282,6 +1283,8 @@ typedef enum SpvCapability_ {
276 SpvCapabilitySubgroup2DBlockTransposeINTEL = 6230,
277 SpvCapabilitySubgroupMatrixMultiplyAccumulateINTEL = 6236,
278 SpvCapabilityTernaryBitwiseFunctionINTEL = 6241,
279+ SpvCapabilitySpecConditionalINTEL = 6245,
280+ SpvCapabilityFunctionVariantsINTEL = 6246,
281 SpvCapabilityGroupUniformArithmeticKHR = 6400,
282 SpvCapabilityTensorFloat32RoundingINTEL = 6425,
283 SpvCapabilityMaskedGatherScatterINTEL = 6427,
284@@ -2406,6 +2409,13 @@ typedef enum SpvOp_ {
285 SpvOpSubgroup2DBlockStoreINTEL = 6235,
286 SpvOpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
287 SpvOpBitwiseFunctionINTEL = 6242,
288+ SpvOpConditionalExtensionINTEL = 6248,
289+ SpvOpConditionalEntryPointINTEL = 6249,
290+ SpvOpConditionalCapabilityINTEL = 6250,
291+ SpvOpSpecConstantTargetINTEL = 6251,
292+ SpvOpSpecConstantArchitectureINTEL = 6252,
293+ SpvOpSpecConstantCapabilitiesINTEL = 6253,
294+ SpvOpConditionalCopyObjectINTEL = 6254,
295 SpvOpGroupIMulKHR = 6401,
296 SpvOpGroupFMulKHR = 6402,
297 SpvOpGroupBitwiseAndKHR = 6403,
298@@ -3225,6 +3235,13 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
299 case SpvOpSubgroup2DBlockStoreINTEL: *hasResult = false; *hasResultType = false; break;
300 case SpvOpSubgroupMatrixMultiplyAccumulateINTEL: *hasResult = true; *hasResultType = true; break;
301 case SpvOpBitwiseFunctionINTEL: *hasResult = true; *hasResultType = true; break;
302+ case SpvOpConditionalExtensionINTEL: *hasResult = false; *hasResultType = false; break;
303+ case SpvOpConditionalEntryPointINTEL: *hasResult = false; *hasResultType = false; break;
304+ case SpvOpConditionalCapabilityINTEL: *hasResult = false; *hasResultType = false; break;
305+ case SpvOpSpecConstantTargetINTEL: *hasResult = true; *hasResultType = true; break;
306+ case SpvOpSpecConstantArchitectureINTEL: *hasResult = true; *hasResultType = true; break;
307+ case SpvOpSpecConstantCapabilitiesINTEL: *hasResult = true; *hasResultType = true; break;
308+ case SpvOpConditionalCopyObjectINTEL: *hasResult = true; *hasResultType = true; break;
309 case SpvOpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
310 case SpvOpGroupFMulKHR: *hasResult = true; *hasResultType = true; break;
311 case SpvOpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break;
312@@ -3765,6 +3782,7 @@ inline const char* SpvDecorationToString(SpvDecoration value) {
313 case SpvDecorationHostAccessINTEL: return "HostAccessINTEL";
314 case SpvDecorationInitModeINTEL: return "InitModeINTEL";
315 case SpvDecorationImplementInRegisterMapINTEL: return "ImplementInRegisterMapINTEL";
316+ case SpvDecorationConditionalINTEL: return "ConditionalINTEL";
317 case SpvDecorationCacheControlLoadINTEL: return "CacheControlLoadINTEL";
318 case SpvDecorationCacheControlStoreINTEL: return "CacheControlStoreINTEL";
319 default: return "Unknown";
320@@ -4204,6 +4222,8 @@ inline const char* SpvCapabilityToString(SpvCapability value) {
321 case SpvCapabilitySubgroup2DBlockTransposeINTEL: return "Subgroup2DBlockTransposeINTEL";
322 case SpvCapabilitySubgroupMatrixMultiplyAccumulateINTEL: return "SubgroupMatrixMultiplyAccumulateINTEL";
323 case SpvCapabilityTernaryBitwiseFunctionINTEL: return "TernaryBitwiseFunctionINTEL";
324+ case SpvCapabilitySpecConditionalINTEL: return "SpecConditionalINTEL";
325+ case SpvCapabilityFunctionVariantsINTEL: return "FunctionVariantsINTEL";
326 case SpvCapabilityGroupUniformArithmeticKHR: return "GroupUniformArithmeticKHR";
327 case SpvCapabilityTensorFloat32RoundingINTEL: return "TensorFloat32RoundingINTEL";
328 case SpvCapabilityMaskedGatherScatterINTEL: return "MaskedGatherScatterINTEL";
329@@ -5198,6 +5218,13 @@ inline const char* SpvOpToString(SpvOp value) {
330 case SpvOpSubgroup2DBlockStoreINTEL: return "OpSubgroup2DBlockStoreINTEL";
331 case SpvOpSubgroupMatrixMultiplyAccumulateINTEL: return "OpSubgroupMatrixMultiplyAccumulateINTEL";
332 case SpvOpBitwiseFunctionINTEL: return "OpBitwiseFunctionINTEL";
333+ case SpvOpConditionalExtensionINTEL: return "OpConditionalExtensionINTEL";
334+ case SpvOpConditionalEntryPointINTEL: return "OpConditionalEntryPointINTEL";
335+ case SpvOpConditionalCapabilityINTEL: return "OpConditionalCapabilityINTEL";
336+ case SpvOpSpecConstantTargetINTEL: return "OpSpecConstantTargetINTEL";
337+ case SpvOpSpecConstantArchitectureINTEL: return "OpSpecConstantArchitectureINTEL";
338+ case SpvOpSpecConstantCapabilitiesINTEL: return "OpSpecConstantCapabilitiesINTEL";
339+ case SpvOpConditionalCopyObjectINTEL: return "OpConditionalCopyObjectINTEL";
340 case SpvOpGroupIMulKHR: return "OpGroupIMulKHR";
341 case SpvOpGroupFMulKHR: return "OpGroupFMulKHR";
342 case SpvOpGroupBitwiseAndKHR: return "OpGroupBitwiseAndKHR";
343diff --git a/include/spirv/unified1/spirv.hpp b/include/spirv/unified1/spirv.hpp
344index f7a7bf8..a3d760a 100644
345--- a/include/spirv/unified1/spirv.hpp
346+++ b/include/spirv/unified1/spirv.hpp
347@@ -638,6 +638,7 @@ enum Decoration {
348 DecorationHostAccessINTEL = 6188,
349 DecorationInitModeINTEL = 6190,
350 DecorationImplementInRegisterMapINTEL = 6191,
351+ DecorationConditionalINTEL = 6247,
352 DecorationCacheControlLoadINTEL = 6442,
353 DecorationCacheControlStoreINTEL = 6443,
354 DecorationMax = 0x7fffffff,
355@@ -1278,6 +1279,8 @@ enum Capability {
356 CapabilitySubgroup2DBlockTransposeINTEL = 6230,
357 CapabilitySubgroupMatrixMultiplyAccumulateINTEL = 6236,
358 CapabilityTernaryBitwiseFunctionINTEL = 6241,
359+ CapabilitySpecConditionalINTEL = 6245,
360+ CapabilityFunctionVariantsINTEL = 6246,
361 CapabilityGroupUniformArithmeticKHR = 6400,
362 CapabilityTensorFloat32RoundingINTEL = 6425,
363 CapabilityMaskedGatherScatterINTEL = 6427,
364@@ -2402,6 +2405,13 @@ enum Op {
365 OpSubgroup2DBlockStoreINTEL = 6235,
366 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
367 OpBitwiseFunctionINTEL = 6242,
368+ OpConditionalExtensionINTEL = 6248,
369+ OpConditionalEntryPointINTEL = 6249,
370+ OpConditionalCapabilityINTEL = 6250,
371+ OpSpecConstantTargetINTEL = 6251,
372+ OpSpecConstantArchitectureINTEL = 6252,
373+ OpSpecConstantCapabilitiesINTEL = 6253,
374+ OpConditionalCopyObjectINTEL = 6254,
375 OpGroupIMulKHR = 6401,
376 OpGroupFMulKHR = 6402,
377 OpGroupBitwiseAndKHR = 6403,
378@@ -3221,6 +3231,13 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
379 case OpSubgroup2DBlockStoreINTEL: *hasResult = false; *hasResultType = false; break;
380 case OpSubgroupMatrixMultiplyAccumulateINTEL: *hasResult = true; *hasResultType = true; break;
381 case OpBitwiseFunctionINTEL: *hasResult = true; *hasResultType = true; break;
382+ case OpConditionalExtensionINTEL: *hasResult = false; *hasResultType = false; break;
383+ case OpConditionalEntryPointINTEL: *hasResult = false; *hasResultType = false; break;
384+ case OpConditionalCapabilityINTEL: *hasResult = false; *hasResultType = false; break;
385+ case OpSpecConstantTargetINTEL: *hasResult = true; *hasResultType = true; break;
386+ case OpSpecConstantArchitectureINTEL: *hasResult = true; *hasResultType = true; break;
387+ case OpSpecConstantCapabilitiesINTEL: *hasResult = true; *hasResultType = true; break;
388+ case OpConditionalCopyObjectINTEL: *hasResult = true; *hasResultType = true; break;
389 case OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
390 case OpGroupFMulKHR: *hasResult = true; *hasResultType = true; break;
391 case OpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break;
392@@ -3761,6 +3778,7 @@ inline const char* DecorationToString(Decoration value) {
393 case DecorationHostAccessINTEL: return "HostAccessINTEL";
394 case DecorationInitModeINTEL: return "InitModeINTEL";
395 case DecorationImplementInRegisterMapINTEL: return "ImplementInRegisterMapINTEL";
396+ case DecorationConditionalINTEL: return "ConditionalINTEL";
397 case DecorationCacheControlLoadINTEL: return "CacheControlLoadINTEL";
398 case DecorationCacheControlStoreINTEL: return "CacheControlStoreINTEL";
399 default: return "Unknown";
400@@ -4200,6 +4218,8 @@ inline const char* CapabilityToString(Capability value) {
401 case CapabilitySubgroup2DBlockTransposeINTEL: return "Subgroup2DBlockTransposeINTEL";
402 case CapabilitySubgroupMatrixMultiplyAccumulateINTEL: return "SubgroupMatrixMultiplyAccumulateINTEL";
403 case CapabilityTernaryBitwiseFunctionINTEL: return "TernaryBitwiseFunctionINTEL";
404+ case CapabilitySpecConditionalINTEL: return "SpecConditionalINTEL";
405+ case CapabilityFunctionVariantsINTEL: return "FunctionVariantsINTEL";
406 case CapabilityGroupUniformArithmeticKHR: return "GroupUniformArithmeticKHR";
407 case CapabilityTensorFloat32RoundingINTEL: return "TensorFloat32RoundingINTEL";
408 case CapabilityMaskedGatherScatterINTEL: return "MaskedGatherScatterINTEL";
409@@ -5194,6 +5214,13 @@ inline const char* OpToString(Op value) {
410 case OpSubgroup2DBlockStoreINTEL: return "OpSubgroup2DBlockStoreINTEL";
411 case OpSubgroupMatrixMultiplyAccumulateINTEL: return "OpSubgroupMatrixMultiplyAccumulateINTEL";
412 case OpBitwiseFunctionINTEL: return "OpBitwiseFunctionINTEL";
413+ case OpConditionalExtensionINTEL: return "OpConditionalExtensionINTEL";
414+ case OpConditionalEntryPointINTEL: return "OpConditionalEntryPointINTEL";
415+ case OpConditionalCapabilityINTEL: return "OpConditionalCapabilityINTEL";
416+ case OpSpecConstantTargetINTEL: return "OpSpecConstantTargetINTEL";
417+ case OpSpecConstantArchitectureINTEL: return "OpSpecConstantArchitectureINTEL";
418+ case OpSpecConstantCapabilitiesINTEL: return "OpSpecConstantCapabilitiesINTEL";
419+ case OpConditionalCopyObjectINTEL: return "OpConditionalCopyObjectINTEL";
420 case OpGroupIMulKHR: return "OpGroupIMulKHR";
421 case OpGroupFMulKHR: return "OpGroupFMulKHR";
422 case OpGroupBitwiseAndKHR: return "OpGroupBitwiseAndKHR";
423diff --git a/include/spirv/unified1/spirv.hpp11 b/include/spirv/unified1/spirv.hpp11
424index b83ca46..e8479cb 100644
425--- a/include/spirv/unified1/spirv.hpp11
426+++ b/include/spirv/unified1/spirv.hpp11
427@@ -638,6 +638,7 @@ enum class Decoration : unsigned {
428 HostAccessINTEL = 6188,
429 InitModeINTEL = 6190,
430 ImplementInRegisterMapINTEL = 6191,
431+ ConditionalINTEL = 6247,
432 CacheControlLoadINTEL = 6442,
433 CacheControlStoreINTEL = 6443,
434 Max = 0x7fffffff,
435@@ -1278,6 +1279,8 @@ enum class Capability : unsigned {
436 Subgroup2DBlockTransposeINTEL = 6230,
437 SubgroupMatrixMultiplyAccumulateINTEL = 6236,
438 TernaryBitwiseFunctionINTEL = 6241,
439+ SpecConditionalINTEL = 6245,
440+ FunctionVariantsINTEL = 6246,
441 GroupUniformArithmeticKHR = 6400,
442 TensorFloat32RoundingINTEL = 6425,
443 MaskedGatherScatterINTEL = 6427,
444@@ -2402,6 +2405,13 @@ enum class Op : unsigned {
445 OpSubgroup2DBlockStoreINTEL = 6235,
446 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
447 OpBitwiseFunctionINTEL = 6242,
448+ OpConditionalExtensionINTEL = 6248,
449+ OpConditionalEntryPointINTEL = 6249,
450+ OpConditionalCapabilityINTEL = 6250,
451+ OpSpecConstantTargetINTEL = 6251,
452+ OpSpecConstantArchitectureINTEL = 6252,
453+ OpSpecConstantCapabilitiesINTEL = 6253,
454+ OpConditionalCopyObjectINTEL = 6254,
455 OpGroupIMulKHR = 6401,
456 OpGroupFMulKHR = 6402,
457 OpGroupBitwiseAndKHR = 6403,
458@@ -3221,6 +3231,13 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
459 case Op::OpSubgroup2DBlockStoreINTEL: *hasResult = false; *hasResultType = false; break;
460 case Op::OpSubgroupMatrixMultiplyAccumulateINTEL: *hasResult = true; *hasResultType = true; break;
461 case Op::OpBitwiseFunctionINTEL: *hasResult = true; *hasResultType = true; break;
462+ case Op::OpConditionalExtensionINTEL: *hasResult = false; *hasResultType = false; break;
463+ case Op::OpConditionalEntryPointINTEL: *hasResult = false; *hasResultType = false; break;
464+ case Op::OpConditionalCapabilityINTEL: *hasResult = false; *hasResultType = false; break;
465+ case Op::OpSpecConstantTargetINTEL: *hasResult = true; *hasResultType = true; break;
466+ case Op::OpSpecConstantArchitectureINTEL: *hasResult = true; *hasResultType = true; break;
467+ case Op::OpSpecConstantCapabilitiesINTEL: *hasResult = true; *hasResultType = true; break;
468+ case Op::OpConditionalCopyObjectINTEL: *hasResult = true; *hasResultType = true; break;
469 case Op::OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
470 case Op::OpGroupFMulKHR: *hasResult = true; *hasResultType = true; break;
471 case Op::OpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break;
472@@ -3761,6 +3778,7 @@ inline const char* DecorationToString(Decoration value) {
473 case Decoration::HostAccessINTEL: return "HostAccessINTEL";
474 case Decoration::InitModeINTEL: return "InitModeINTEL";
475 case Decoration::ImplementInRegisterMapINTEL: return "ImplementInRegisterMapINTEL";
476+ case Decoration::ConditionalINTEL: return "ConditionalINTEL";
477 case Decoration::CacheControlLoadINTEL: return "CacheControlLoadINTEL";
478 case Decoration::CacheControlStoreINTEL: return "CacheControlStoreINTEL";
479 default: return "Unknown";
480@@ -4200,6 +4218,8 @@ inline const char* CapabilityToString(Capability value) {
481 case Capability::Subgroup2DBlockTransposeINTEL: return "Subgroup2DBlockTransposeINTEL";
482 case Capability::SubgroupMatrixMultiplyAccumulateINTEL: return "SubgroupMatrixMultiplyAccumulateINTEL";
483 case Capability::TernaryBitwiseFunctionINTEL: return "TernaryBitwiseFunctionINTEL";
484+ case Capability::SpecConditionalINTEL: return "SpecConditionalINTEL";
485+ case Capability::FunctionVariantsINTEL: return "FunctionVariantsINTEL";
486 case Capability::GroupUniformArithmeticKHR: return "GroupUniformArithmeticKHR";
487 case Capability::TensorFloat32RoundingINTEL: return "TensorFloat32RoundingINTEL";
488 case Capability::MaskedGatherScatterINTEL: return "MaskedGatherScatterINTEL";
489@@ -5194,6 +5214,13 @@ inline const char* OpToString(Op value) {
490 case Op::OpSubgroup2DBlockStoreINTEL: return "OpSubgroup2DBlockStoreINTEL";
491 case Op::OpSubgroupMatrixMultiplyAccumulateINTEL: return "OpSubgroupMatrixMultiplyAccumulateINTEL";
492 case Op::OpBitwiseFunctionINTEL: return "OpBitwiseFunctionINTEL";
493+ case Op::OpConditionalExtensionINTEL: return "OpConditionalExtensionINTEL";
494+ case Op::OpConditionalEntryPointINTEL: return "OpConditionalEntryPointINTEL";
495+ case Op::OpConditionalCapabilityINTEL: return "OpConditionalCapabilityINTEL";
496+ case Op::OpSpecConstantTargetINTEL: return "OpSpecConstantTargetINTEL";
497+ case Op::OpSpecConstantArchitectureINTEL: return "OpSpecConstantArchitectureINTEL";
498+ case Op::OpSpecConstantCapabilitiesINTEL: return "OpSpecConstantCapabilitiesINTEL";
499+ case Op::OpConditionalCopyObjectINTEL: return "OpConditionalCopyObjectINTEL";
500 case Op::OpGroupIMulKHR: return "OpGroupIMulKHR";
501 case Op::OpGroupFMulKHR: return "OpGroupFMulKHR";
502 case Op::OpGroupBitwiseAndKHR: return "OpGroupBitwiseAndKHR";
503diff --git a/include/spirv/unified1/spirv.json b/include/spirv/unified1/spirv.json
504index 0668c98..e0c0230 100644
505--- a/include/spirv/unified1/spirv.json
506+++ b/include/spirv/unified1/spirv.json
507@@ -661,6 +661,7 @@
508 "HostAccessINTEL": 6188,
509 "InitModeINTEL": 6190,
510 "ImplementInRegisterMapINTEL": 6191,
511+ "ConditionalINTEL": 6247,
512 "CacheControlLoadINTEL": 6442,
513 "CacheControlStoreINTEL": 6443
514 }
515@@ -1254,6 +1255,8 @@
516 "Subgroup2DBlockTransposeINTEL": 6230,
517 "SubgroupMatrixMultiplyAccumulateINTEL": 6236,
518 "TernaryBitwiseFunctionINTEL": 6241,
519+ "SpecConditionalINTEL": 6245,
520+ "FunctionVariantsINTEL": 6246,
521 "GroupUniformArithmeticKHR": 6400,
522 "TensorFloat32RoundingINTEL": 6425,
523 "MaskedGatherScatterINTEL": 6427,
524@@ -2383,6 +2386,13 @@
525 "OpSubgroup2DBlockStoreINTEL": 6235,
526 "OpSubgroupMatrixMultiplyAccumulateINTEL": 6237,
527 "OpBitwiseFunctionINTEL": 6242,
528+ "OpConditionalExtensionINTEL": 6248,
529+ "OpConditionalEntryPointINTEL": 6249,
530+ "OpConditionalCapabilityINTEL": 6250,
531+ "OpSpecConstantTargetINTEL": 6251,
532+ "OpSpecConstantArchitectureINTEL": 6252,
533+ "OpSpecConstantCapabilitiesINTEL": 6253,
534+ "OpConditionalCopyObjectINTEL": 6254,
535 "OpGroupIMulKHR": 6401,
536 "OpGroupFMulKHR": 6402,
537 "OpGroupBitwiseAndKHR": 6403,
538diff --git a/include/spirv/unified1/spirv.lua b/include/spirv/unified1/spirv.lua
539index a612e5c..410060b 100644
540--- a/include/spirv/unified1/spirv.lua
541+++ b/include/spirv/unified1/spirv.lua
542@@ -629,6 +629,7 @@ spv = {
543 HostAccessINTEL = 6188,
544 InitModeINTEL = 6190,
545 ImplementInRegisterMapINTEL = 6191,
546+ ConditionalINTEL = 6247,
547 CacheControlLoadINTEL = 6442,
548 CacheControlStoreINTEL = 6443,
549 Max = 0x7fffffff,
550@@ -1269,6 +1270,8 @@ spv = {
551 Subgroup2DBlockTransposeINTEL = 6230,
552 SubgroupMatrixMultiplyAccumulateINTEL = 6236,
553 TernaryBitwiseFunctionINTEL = 6241,
554+ SpecConditionalINTEL = 6245,
555+ FunctionVariantsINTEL = 6246,
556 GroupUniformArithmeticKHR = 6400,
557 TensorFloat32RoundingINTEL = 6425,
558 MaskedGatherScatterINTEL = 6427,
559@@ -2393,6 +2396,13 @@ spv = {
560 OpSubgroup2DBlockStoreINTEL = 6235,
561 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
562 OpBitwiseFunctionINTEL = 6242,
563+ OpConditionalExtensionINTEL = 6248,
564+ OpConditionalEntryPointINTEL = 6249,
565+ OpConditionalCapabilityINTEL = 6250,
566+ OpSpecConstantTargetINTEL = 6251,
567+ OpSpecConstantArchitectureINTEL = 6252,
568+ OpSpecConstantCapabilitiesINTEL = 6253,
569+ OpConditionalCopyObjectINTEL = 6254,
570 OpGroupIMulKHR = 6401,
571 OpGroupFMulKHR = 6402,
572 OpGroupBitwiseAndKHR = 6403,
573diff --git a/include/spirv/unified1/spirv.py b/include/spirv/unified1/spirv.py
574index 5adfded..0b77b4f 100644
575--- a/include/spirv/unified1/spirv.py
576+++ b/include/spirv/unified1/spirv.py
577@@ -611,6 +611,7 @@ spv = {
578 'HostAccessINTEL' : 6188,
579 'InitModeINTEL' : 6190,
580 'ImplementInRegisterMapINTEL' : 6191,
581+ 'ConditionalINTEL' : 6247,
582 'CacheControlLoadINTEL' : 6442,
583 'CacheControlStoreINTEL' : 6443,
584 },
585@@ -1240,6 +1241,8 @@ spv = {
586 'Subgroup2DBlockTransposeINTEL' : 6230,
587 'SubgroupMatrixMultiplyAccumulateINTEL' : 6236,
588 'TernaryBitwiseFunctionINTEL' : 6241,
589+ 'SpecConditionalINTEL' : 6245,
590+ 'FunctionVariantsINTEL' : 6246,
591 'GroupUniformArithmeticKHR' : 6400,
592 'TensorFloat32RoundingINTEL' : 6425,
593 'MaskedGatherScatterINTEL' : 6427,
594@@ -2336,6 +2339,13 @@ spv = {
595 'OpSubgroup2DBlockStoreINTEL' : 6235,
596 'OpSubgroupMatrixMultiplyAccumulateINTEL' : 6237,
597 'OpBitwiseFunctionINTEL' : 6242,
598+ 'OpConditionalExtensionINTEL' : 6248,
599+ 'OpConditionalEntryPointINTEL' : 6249,
600+ 'OpConditionalCapabilityINTEL' : 6250,
601+ 'OpSpecConstantTargetINTEL' : 6251,
602+ 'OpSpecConstantArchitectureINTEL' : 6252,
603+ 'OpSpecConstantCapabilitiesINTEL' : 6253,
604+ 'OpConditionalCopyObjectINTEL' : 6254,
605 'OpGroupIMulKHR' : 6401,
606 'OpGroupFMulKHR' : 6402,
607 'OpGroupBitwiseAndKHR' : 6403,
608diff --git a/include/spirv/unified1/spv.d b/include/spirv/unified1/spv.d
609index 3c5130a..a5763e6 100644
610--- a/include/spirv/unified1/spv.d
611+++ b/include/spirv/unified1/spv.d
612@@ -657,6 +657,7 @@ enum Decoration : uint
613 HostAccessINTEL = 6188,
614 InitModeINTEL = 6190,
615 ImplementInRegisterMapINTEL = 6191,
616+ ConditionalINTEL = 6247,
617 CacheControlLoadINTEL = 6442,
618 CacheControlStoreINTEL = 6443,
619 Max = 0x7fffffff,
620@@ -1314,6 +1315,8 @@ enum Capability : uint
621 Subgroup2DBlockTransposeINTEL = 6230,
622 SubgroupMatrixMultiplyAccumulateINTEL = 6236,
623 TernaryBitwiseFunctionINTEL = 6241,
624+ SpecConditionalINTEL = 6245,
625+ FunctionVariantsINTEL = 6246,
626 GroupUniformArithmeticKHR = 6400,
627 TensorFloat32RoundingINTEL = 6425,
628 MaskedGatherScatterINTEL = 6427,
629@@ -2474,6 +2477,13 @@ enum Op : uint
630 OpSubgroup2DBlockStoreINTEL = 6235,
631 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
632 OpBitwiseFunctionINTEL = 6242,
633+ OpConditionalExtensionINTEL = 6248,
634+ OpConditionalEntryPointINTEL = 6249,
635+ OpConditionalCapabilityINTEL = 6250,
636+ OpSpecConstantTargetINTEL = 6251,
637+ OpSpecConstantArchitectureINTEL = 6252,
638+ OpSpecConstantCapabilitiesINTEL = 6253,
639+ OpConditionalCopyObjectINTEL = 6254,
640 OpGroupIMulKHR = 6401,
641 OpGroupFMulKHR = 6402,
642 OpGroupBitwiseAndKHR = 6403,
diff --git a/meta/recipes-graphics/spir/spirv-headers_1.4.321.0.bb b/meta/recipes-graphics/spir/spirv-headers_1.4.328.1.bb
index 807e34abcc..2b750e4b92 100644
--- a/meta/recipes-graphics/spir/spirv-headers_1.4.321.0.bb
+++ b/meta/recipes-graphics/spir/spirv-headers_1.4.328.1.bb
@@ -4,10 +4,9 @@ HOMEPAGE = "https://www.khronos.org/registry/spir-v"
4LICENSE = "MIT & CC-BY-4.0" 4LICENSE = "MIT & CC-BY-4.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=a0dcaa512cc2dee95fe0fd791ee83a18" 5LIC_FILES_CHKSUM = "file://LICENSE;md5=a0dcaa512cc2dee95fe0fd791ee83a18"
6 6
7SRCREV = "2a611a970fdbc41ac2e3e328802aed9985352dca" 7SRCREV = "01e0577914a75a2569c846778c2f93aa8e6feddd"
8SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=main \ 8SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=vulkan-sdk-1.4.328 \
9 file://0001-Add-SPV_INTEL_function_variants-532.patch \ 9"
10 "
11PE = "1" 10PE = "1"
12# These recipes need to be updated in lockstep with each other: 11# These recipes need to be updated in lockstep with each other:
13# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools 12# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools
diff --git a/meta/recipes-graphics/spir/spirv-tools/0001-SPV_INTEL_function_variants-basic-asm-dis-support-61.patch b/meta/recipes-graphics/spir/spirv-tools/0001-SPV_INTEL_function_variants-basic-asm-dis-support-61.patch
deleted file mode 100644
index d4ca23c729..0000000000
--- a/meta/recipes-graphics/spir/spirv-tools/0001-SPV_INTEL_function_variants-basic-asm-dis-support-61.patch
+++ /dev/null
@@ -1,289 +0,0 @@
1From 28a883ba4c67f58a9540fb0651c647bb02883622 Mon Sep 17 00:00:00 2001
2From: David Neto <dneto@google.com>
3Date: Wed, 25 Jun 2025 11:27:23 -0400
4Subject: [PATCH] SPV_INTEL_function_variants: basic asm, dis support (#6195)
5
6The challenging part is that there are instructions that
7take zero or more Capability operands. So we have to introduce
8SPV_TYPE_OPERAND_VARIABLE_CAPABILITY and SPV_TYPE_OPERAND_OPTIONAL_CAPABILITY.
9
10Remove deprecated enums for the first and last variable or optional
11enums.
12Upstream-Status: Backport [https://github.com/KhronosGroup/SPIRV-Tools/commit/28a883ba4c67f58a9540fb0651c647bb02883622]
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 DEPS | 2 +-
16 include/spirv-tools/libspirv.h | 48 +++++++----------
17 source/binary.cpp | 3 ++
18 source/disassemble.cpp | 1 +
19 source/operand.cpp | 7 +++
20 test/text_to_binary.extension_test.cpp | 73 ++++++++++++++++++++++++++
21 utils/ggt.py | 3 +-
22 7 files changed, 107 insertions(+), 30 deletions(-)
23
24diff --git a/DEPS b/DEPS
25index e25ca513..511fd718 100644
26--- a/DEPS
27+++ b/DEPS
28@@ -14,7 +14,7 @@ vars = {
29
30 're2_revision': 'c84a140c93352cdabbfb547c531be34515b12228',
31
32- 'spirv_headers_revision': '2a611a970fdbc41ac2e3e328802aed9985352dca',
33+ 'spirv_headers_revision': '9e3836d7d6023843a72ecd3fbf3f09b1b6747a9e',
34
35 'mimalloc_revision': '09a27098aa6e9286518bd9c74e6ffa7199c3f04e',
36 }
37diff --git a/include/spirv-tools/libspirv.h b/include/spirv-tools/libspirv.h
38index a2a032a0..2a604e94 100644
39--- a/include/spirv-tools/libspirv.h
40+++ b/include/spirv-tools/libspirv.h
41@@ -189,36 +189,24 @@ typedef enum spv_operand_type_t {
42 SPV_OPERAND_TYPE_MEMORY_ACCESS, // SPIR-V Sec 3.26
43 SPV_OPERAND_TYPE_FRAGMENT_SHADING_RATE, // SPIR-V Sec 3.FSR
44
45-// NOTE: New concrete enum values should be added at the end.
46-
47-// The "optional" and "variable" operand types are only used internally by
48-// the assembler and the binary parser.
49-// There are two categories:
50-// Optional : expands to 0 or 1 operand, like ? in regular expressions.
51-// Variable : expands to 0, 1 or many operands or pairs of operands.
52-// This is similar to * in regular expressions.
53-
54-// NOTE: These FIRST_* and LAST_* enum values are DEPRECATED.
55-// The concept of "optional" and "variable" operand types are only intended
56-// for use as an implementation detail of parsing SPIR-V, either in text or
57-// binary form. Instead of using enum ranges, use characteristic function
58-// spvOperandIsConcrete.
59-// The use of enum value ranges in a public API makes it difficult to insert
60-// new values into a range without also breaking binary compatibility.
61-//
62-// Macros for defining bounds on optional and variable operand types.
63-// Any variable operand type is also optional.
64-// TODO(dneto): Remove SPV_OPERAND_TYPE_FIRST_* and SPV_OPERAND_TYPE_LAST_*
65-#define FIRST_OPTIONAL(ENUM) ENUM, SPV_OPERAND_TYPE_FIRST_OPTIONAL_TYPE = ENUM
66-#define FIRST_VARIABLE(ENUM) ENUM, SPV_OPERAND_TYPE_FIRST_VARIABLE_TYPE = ENUM
67-#define LAST_VARIABLE(ENUM) \
68- ENUM, SPV_OPERAND_TYPE_LAST_VARIABLE_TYPE = ENUM, \
69- SPV_OPERAND_TYPE_LAST_OPTIONAL_TYPE = ENUM
70+ // NOTE: New concrete enum values should be added at the end.
71+
72+ // The "optional" and "variable" operand types are only used internally by
73+ // the assembler and the binary parser.
74+ // There are two categories:
75+ // Optional : expands to 0 or 1 operand, like ? in regular expressions.
76+ // Variable : expands to 0, 1 or many operands or pairs of operands.
77+ // This is similar to * in regular expressions.
78+
79+ // Use characteristic function spvOperandIsConcrete to classify the
80+ // operand types; when it returns false, the operand is optional or variable.
81+ //
82+ // Any variable operand type is also optional.
83
84 // An optional operand represents zero or one logical operands.
85 // In an instruction definition, this may only appear at the end of the
86 // operand types.
87- FIRST_OPTIONAL(SPV_OPERAND_TYPE_OPTIONAL_ID),
88+ SPV_OPERAND_TYPE_OPTIONAL_ID,
89 // An optional image operand type.
90 SPV_OPERAND_TYPE_OPTIONAL_IMAGE,
91 // An optional memory access type.
92@@ -243,7 +231,7 @@ typedef enum spv_operand_type_t {
93 // A variable operand represents zero or more logical operands.
94 // In an instruction definition, this may only appear at the end of the
95 // operand types.
96- FIRST_VARIABLE(SPV_OPERAND_TYPE_VARIABLE_ID),
97+ SPV_OPERAND_TYPE_VARIABLE_ID,
98 SPV_OPERAND_TYPE_VARIABLE_LITERAL_INTEGER,
99 // A sequence of zero or more pairs of (typed literal integer, Id).
100 // Expands to zero or more:
101@@ -251,7 +239,7 @@ typedef enum spv_operand_type_t {
102 // where the literal number must always be an integer of some sort.
103 SPV_OPERAND_TYPE_VARIABLE_LITERAL_INTEGER_ID,
104 // A sequence of zero or more pairs of (Id, Literal integer)
105- LAST_VARIABLE(SPV_OPERAND_TYPE_VARIABLE_ID_LITERAL_INTEGER),
106+ SPV_OPERAND_TYPE_VARIABLE_ID_LITERAL_INTEGER,
107
108 // The following are concrete enum types from the DebugInfo extended
109 // instruction set.
110@@ -343,6 +331,10 @@ typedef enum spv_operand_type_t {
111 SPV_OPERAND_TYPE_TENSOR_OPERANDS,
112 SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS,
113
114+ // SPV_INTEL_function_variants
115+ SPV_OPERAND_TYPE_OPTIONAL_CAPABILITY,
116+ SPV_OPERAND_TYPE_VARIABLE_CAPABILITY,
117+
118 // This is a sentinel value, and does not represent an operand type.
119 // It should come last.
120 SPV_OPERAND_TYPE_NUM_OPERAND_TYPES,
121diff --git a/source/binary.cpp b/source/binary.cpp
122index 180d0a99..8e4d899f 100644
123--- a/source/binary.cpp
124+++ b/source/binary.cpp
125@@ -636,6 +636,7 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
126 } break;
127
128 case SPV_OPERAND_TYPE_CAPABILITY:
129+ case SPV_OPERAND_TYPE_OPTIONAL_CAPABILITY:
130 case SPV_OPERAND_TYPE_EXECUTION_MODEL:
131 case SPV_OPERAND_TYPE_ADDRESSING_MODEL:
132 case SPV_OPERAND_TYPE_MEMORY_MODEL:
133@@ -689,6 +690,8 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
134 parsed_operand.type = SPV_OPERAND_TYPE_PACKED_VECTOR_FORMAT;
135 if (type == SPV_OPERAND_TYPE_OPTIONAL_FPENCODING)
136 parsed_operand.type = SPV_OPERAND_TYPE_FPENCODING;
137+ if (type == SPV_OPERAND_TYPE_OPTIONAL_CAPABILITY)
138+ parsed_operand.type = SPV_OPERAND_TYPE_CAPABILITY;
139
140 const spvtools::OperandDesc* entry = nullptr;
141 if (spvtools::LookupOperand(type, word, &entry)) {
142diff --git a/source/disassemble.cpp b/source/disassemble.cpp
143index 2d9bb0ff..4267333a 100644
144--- a/source/disassemble.cpp
145+++ b/source/disassemble.cpp
146@@ -907,6 +907,7 @@ void InstructionDisassembler::EmitOperand(std::ostream& stream,
147 stream << '"';
148 } break;
149 case SPV_OPERAND_TYPE_CAPABILITY:
150+ case SPV_OPERAND_TYPE_OPTIONAL_CAPABILITY:
151 case SPV_OPERAND_TYPE_SOURCE_LANGUAGE:
152 case SPV_OPERAND_TYPE_EXECUTION_MODEL:
153 case SPV_OPERAND_TYPE_ADDRESSING_MODEL:
154diff --git a/source/operand.cpp b/source/operand.cpp
155index c635c72d..d7fc535c 100644
156--- a/source/operand.cpp
157+++ b/source/operand.cpp
158@@ -111,6 +111,7 @@ const char* spvOperandTypeStr(spv_operand_type_t type) {
159 case SPV_OPERAND_TYPE_KERNEL_PROFILING_INFO:
160 return "kernel profiling info";
161 case SPV_OPERAND_TYPE_CAPABILITY:
162+ case SPV_OPERAND_TYPE_OPTIONAL_CAPABILITY:
163 return "capability";
164 case SPV_OPERAND_TYPE_RAY_FLAGS:
165 return "ray flags";
166@@ -394,6 +395,7 @@ bool spvOperandIsOptional(spv_operand_type_t type) {
167 case SPV_OPERAND_TYPE_OPTIONAL_RAW_ACCESS_CHAIN_OPERANDS:
168 case SPV_OPERAND_TYPE_OPTIONAL_FPENCODING:
169 case SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS:
170+ case SPV_OPERAND_TYPE_OPTIONAL_CAPABILITY:
171 return true;
172 default:
173 break;
174@@ -408,6 +410,7 @@ bool spvOperandIsVariable(spv_operand_type_t type) {
175 case SPV_OPERAND_TYPE_VARIABLE_LITERAL_INTEGER:
176 case SPV_OPERAND_TYPE_VARIABLE_LITERAL_INTEGER_ID:
177 case SPV_OPERAND_TYPE_VARIABLE_ID_LITERAL_INTEGER:
178+ case SPV_OPERAND_TYPE_VARIABLE_CAPABILITY:
179 return true;
180 default:
181 break;
182@@ -439,6 +442,10 @@ bool spvExpandOperandSequenceOnce(spv_operand_type_t type,
183 pattern->push_back(SPV_OPERAND_TYPE_LITERAL_INTEGER);
184 pattern->push_back(SPV_OPERAND_TYPE_OPTIONAL_ID);
185 return true;
186+ case SPV_OPERAND_TYPE_VARIABLE_CAPABILITY:
187+ pattern->push_back(type);
188+ pattern->push_back(SPV_OPERAND_TYPE_OPTIONAL_CAPABILITY);
189+ return true;
190 default:
191 break;
192 }
193diff --git a/test/text_to_binary.extension_test.cpp b/test/text_to_binary.extension_test.cpp
194index 65079d1b..39accfc1 100644
195--- a/test/text_to_binary.extension_test.cpp
196+++ b/test/text_to_binary.extension_test.cpp
197@@ -1495,5 +1495,78 @@ INSTANTIATE_TEST_SUITE_P(
198 SaturatedToLargestFloat8NormalConversionEXT)})},
199 })));
200
201+// SPV_INTEL_function_variants
202+// https://github.com/intel/llvm/blob/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_function_variants.asciidoc
203+INSTANTIATE_TEST_SUITE_P(
204+ SPV_INTEL_function_variants, ExtensionRoundTripTest,
205+ Combine(
206+ Values(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_6),
207+ ValuesIn(std::vector<AssemblyCase>{
208+ {"OpExtension \"SPV_INTEL_function_variants\"\n",
209+ MakeInstruction(spv::Op::OpExtension,
210+ MakeVector("SPV_INTEL_function_variants"))},
211+ {"OpCapability SpecConditionalINTEL\n",
212+ MakeInstruction(
213+ spv::Op::OpCapability,
214+ {(uint32_t)spv::Capability::SpecConditionalINTEL})},
215+ {"OpCapability FunctionVariantsINTEL\n",
216+ MakeInstruction(
217+ spv::Op::OpCapability,
218+ {(uint32_t)spv::Capability::FunctionVariantsINTEL})},
219+ {"OpDecorate %1 ConditionalINTEL %2\n",
220+ MakeInstruction(spv::Op::OpDecorate,
221+ {1, (uint32_t)spv::Decoration::ConditionalINTEL,
222+ 2})},
223+
224+ {"OpConditionalExtensionINTEL %1 \"foo\"\n",
225+ MakeInstruction(spv::Op::OpConditionalExtensionINTEL, {1},
226+ MakeVector("foo"))},
227+
228+ {"OpConditionalEntryPointINTEL %1 Kernel %2 \"foo\"\n",
229+ MakeInstruction(spv::Op::OpConditionalEntryPointINTEL,
230+ {1, (uint32_t)spv::ExecutionModel::Kernel, 2},
231+ MakeVector("foo"))},
232+
233+ {"OpConditionalCapabilityINTEL %1 Kernel\n",
234+ MakeInstruction(spv::Op::OpConditionalCapabilityINTEL,
235+ {1, (uint32_t)spv::ExecutionModel::Kernel})},
236+
237+ {"%2 = OpSpecConstantTargetINTEL %1 42\n",
238+ MakeInstruction(spv::Op::OpSpecConstantTargetINTEL, {1, 2, 42})},
239+
240+ {"%2 = OpSpecConstantTargetINTEL %1 42 99\n",
241+ MakeInstruction(spv::Op::OpSpecConstantTargetINTEL,
242+ {1, 2, 42, 99})},
243+
244+ {"%2 = OpSpecConstantTargetINTEL %1 42 99 108\n",
245+ MakeInstruction(spv::Op::OpSpecConstantTargetINTEL,
246+ {1, 2, 42, 99, 108})},
247+
248+ {"%2 = OpSpecConstantArchitectureINTEL %1 42 99 108 72\n",
249+ MakeInstruction(spv::Op::OpSpecConstantArchitectureINTEL,
250+ {1, 2, 42, 99, 108, 72})},
251+
252+ {"%2 = OpSpecConstantCapabilitiesINTEL %1\n",
253+ MakeInstruction(spv::Op::OpSpecConstantCapabilitiesINTEL, {1, 2})},
254+
255+ {"%2 = OpSpecConstantCapabilitiesINTEL %1 Kernel\n",
256+ MakeInstruction(spv::Op::OpSpecConstantCapabilitiesINTEL,
257+ {1, 2, (uint32_t)spv::Capability::Kernel})},
258+
259+ {"%2 = OpSpecConstantCapabilitiesINTEL %1 Kernel Shader\n",
260+ MakeInstruction(spv::Op::OpSpecConstantCapabilitiesINTEL,
261+ {1, 2, (uint32_t)spv::Capability::Kernel,
262+ (uint32_t)spv::Capability::Shader})},
263+
264+ {"%2 = OpConditionalCopyObjectINTEL %1 %3 %4\n",
265+ MakeInstruction(spv::Op::OpConditionalCopyObjectINTEL,
266+ {1, 2, 3, 4})},
267+
268+ {"%2 = OpConditionalCopyObjectINTEL %1 %3 %4 %5 %6\n",
269+ MakeInstruction(spv::Op::OpConditionalCopyObjectINTEL,
270+ {1, 2, 3, 4, 5, 6})},
271+
272+ })));
273+
274 } // namespace
275 } // namespace spvtools
276diff --git a/utils/ggt.py b/utils/ggt.py
277index 258c1b00..45262ba8 100755
278--- a/utils/ggt.py
279+++ b/utils/ggt.py
280@@ -242,7 +242,8 @@ class Grammar():
281 'MatrixMultiplyAccumulateOperands',
282 'RawAccessChainOperands',
283 'FPEncoding',
284- 'TensorOperands']
285+ 'TensorOperands',
286+ 'Capability']
287
288 def dump(self) -> None:
289 self.context.dump()
diff --git a/meta/recipes-graphics/spir/spirv-tools_1.4.321.0.bb b/meta/recipes-graphics/spir/spirv-tools_1.4.328.1.bb
index c3e0d17d87..e5aedb1620 100644
--- a/meta/recipes-graphics/spir/spirv-tools_1.4.321.0.bb
+++ b/meta/recipes-graphics/spir/spirv-tools_1.4.328.1.bb
@@ -7,9 +7,8 @@ SECTION = "graphics"
7LICENSE = "Apache-2.0" 7LICENSE = "Apache-2.0"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" 8LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
9 9
10SRCREV = "33e02568181e3312f49a3cf33df470bf96ef293a" 10SRCREV = "7f2d9ee926f98fc77a3ed1e1e0f113b8c9c49458"
11SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=main;protocol=https \ 11SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=vulkan-sdk-1.4.328;protocol=https \
12 file://0001-SPV_INTEL_function_variants-basic-asm-dis-support-61.patch \
13 " 12 "
14PE = "1" 13PE = "1"
15# These recipes need to be updated in lockstep with each other: 14# These recipes need to be updated in lockstep with each other:
diff --git a/meta/recipes-graphics/vulkan/vulkan-headers_1.4.321.0.bb b/meta/recipes-graphics/vulkan/vulkan-headers_1.4.328.1.bb
index b3413b0e6b..d531ec8e87 100644
--- a/meta/recipes-graphics/vulkan/vulkan-headers_1.4.321.0.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-headers_1.4.328.1.bb
@@ -9,9 +9,9 @@ SECTION = "libs"
9 9
10LICENSE = "Apache-2.0 & MIT" 10LICENSE = "Apache-2.0 & MIT"
11LIC_FILES_CHKSUM = "file://LICENSE.md;md5=1bc355d8c4196f774c8b87ed1a8dd625" 11LIC_FILES_CHKSUM = "file://LICENSE.md;md5=1bc355d8c4196f774c8b87ed1a8dd625"
12SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=main;protocol=https" 12SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=vulkan-sdk-1.4.328;protocol=https"
13 13
14SRCREV = "2cd90f9d20df57eac214c148f3aed885372ddcfe" 14SRCREV = "19725e4d48082fe78e26622b15d3080ccd54112b"
15 15
16inherit cmake 16inherit cmake
17 17
diff --git a/meta/recipes-graphics/vulkan/vulkan-loader_1.4.321.0.bb b/meta/recipes-graphics/vulkan/vulkan-loader_1.4.328.1.bb
index 8ad088fa7e..d80e84a34e 100644
--- a/meta/recipes-graphics/vulkan/vulkan-loader_1.4.321.0.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-loader_1.4.328.1.bb
@@ -9,8 +9,8 @@ SECTION = "libs"
9 9
10LICENSE = "Apache-2.0" 10LICENSE = "Apache-2.0"
11LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac" 11LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac"
12SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;branch=vulkan-sdk-1.4.321;protocol=https" 12SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;branch=vulkan-sdk-1.4.328;protocol=https"
13SRCREV = "da8d2caad9341ca8c5a7c3deba217d7da50a7c24" 13SRCREV = "0a278cc725089cb67bf6027076e5d72f97c04d86"
14 14
15REQUIRED_DISTRO_FEATURES = "vulkan" 15REQUIRED_DISTRO_FEATURES = "vulkan"
16 16
diff --git a/meta/recipes-graphics/vulkan/vulkan-tools_1.4.321.0.bb b/meta/recipes-graphics/vulkan/vulkan-tools_1.4.328.1.bb
index 26c196336e..34823b295c 100644
--- a/meta/recipes-graphics/vulkan/vulkan-tools_1.4.321.0.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-tools_1.4.328.1.bb
@@ -6,8 +6,8 @@ SECTION = "libs"
6 6
7LICENSE = "Apache-2.0" 7LICENSE = "Apache-2.0"
8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" 8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
9SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=vulkan-sdk-1.4.321;protocol=https" 9SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=vulkan-sdk-1.4.328;protocol=https"
10SRCREV = "06ae73a3dc3a03466817d8370355203dac7b79b1" 10SRCREV = "c08c91e473dcab3d5042e85856b005562fa5dbbb"
11 11
12inherit cmake features_check pkgconfig 12inherit cmake features_check pkgconfig
13ANY_OF_DISTRO_FEATURES = "x11 wayland" 13ANY_OF_DISTRO_FEATURES = "x11 wayland"
diff --git a/meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.4.321.0.bb b/meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.4.328.1.bb
index 54e8af6dcf..d59efaaaee 100644
--- a/meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.4.321.0.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.4.328.1.bb
@@ -9,8 +9,8 @@ SECTION = "libs"
9LICENSE = "Apache-2.0" 9LICENSE = "Apache-2.0"
10LIC_FILES_CHKSUM = "file://LICENSE.md;md5=4ca2d6799091aaa98a8520f1b793939b" 10LIC_FILES_CHKSUM = "file://LICENSE.md;md5=4ca2d6799091aaa98a8520f1b793939b"
11 11
12SRC_URI = "git://github.com/KhronosGroup/Vulkan-Utility-Libraries.git;branch=vulkan-sdk-1.4.321;protocol=https" 12SRC_URI = "git://github.com/KhronosGroup/Vulkan-Utility-Libraries.git;branch=vulkan-sdk-1.4.328;protocol=https"
13SRCREV = "ec329e2721921f79743b90307ee047d08e057788" 13SRCREV = "4322db5906e67b57ec9c327e6afe3d98ed893df7"
14 14
15REQUIRED_DISTRO_FEATURES = "vulkan" 15REQUIRED_DISTRO_FEATURES = "vulkan"
16 16
diff --git a/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.321.0.bb b/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.328.1.bb
index 466e757a90..76a87398c4 100644
--- a/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.321.0.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.328.1.bb
@@ -8,8 +8,8 @@ SECTION = "libs"
8LICENSE = "Apache-2.0 & MIT & BSL-1.0 " 8LICENSE = "Apache-2.0 & MIT & BSL-1.0 "
9LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b1a17d548e004bfbbfaa0c40988b6b31" 9LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b1a17d548e004bfbbfaa0c40988b6b31"
10 10
11SRC_URI = "git://github.com/KhronosGroup/Vulkan-ValidationLayers.git;branch=vulkan-sdk-1.4.321;protocol=https" 11SRC_URI = "git://github.com/KhronosGroup/Vulkan-ValidationLayers.git;branch=vulkan-sdk-1.4.328;protocol=https"
12SRCREV = "fee7b2b4a926355e48668e29570be129eb82cb36" 12SRCREV = "83bcbddf0813cbe5cbf1b916b612e493e2cacd70"
13 13
14REQUIRED_DISTRO_FEATURES = "vulkan" 14REQUIRED_DISTRO_FEATURES = "vulkan"
15 15
diff --git a/meta/recipes-graphics/vulkan/vulkan-volk_1.4.321.0.bb b/meta/recipes-graphics/vulkan/vulkan-volk_1.4.328.1.bb
index 17a290ed1d..a6b4b27355 100644
--- a/meta/recipes-graphics/vulkan/vulkan-volk_1.4.321.0.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-volk_1.4.328.1.bb
@@ -9,8 +9,8 @@ SECTION = "libs"
9LICENSE = "MIT" 9LICENSE = "MIT"
10LIC_FILES_CHKSUM = "file://LICENSE.md;md5=fb3d6e8051a71edca1e54bc38d35e5af" 10LIC_FILES_CHKSUM = "file://LICENSE.md;md5=fb3d6e8051a71edca1e54bc38d35e5af"
11 11
12SRC_URI = "git://github.com/zeux/volk.git;branch=master;protocol=https" 12SRC_URI = "git://github.com/zeux/volk.git;branch=vulkan-sdk-1.4.328;protocol=https"
13SRCREV = "a8da8ef3368482b0ee9b0ec0c6079a16a89c6924" 13SRCREV = "f30088b3f4160810b53e19258dd2f7395e5f0ba3"
14 14
15REQUIRED_DISTRO_FEATURES = "vulkan" 15REQUIRED_DISTRO_FEATURES = "vulkan"
16 16