@@ -120,6 +120,13 @@ const BUILTINS: &[(&str, BuiltIn)] = {
120
120
( "bary_coord_no_persp_nv" , BuiltIn :: BaryCoordNoPerspNV ) ,
121
121
( "bary_coord" , BaryCoordKHR ) ,
122
122
( "bary_coord_no_persp" , BaryCoordNoPerspKHR ) ,
123
+ ( "primitive_point_indices_ext" , PrimitivePointIndicesEXT ) ,
124
+ ( "primitive_line_indices_ext" , PrimitiveLineIndicesEXT ) ,
125
+ (
126
+ "primitive_triangle_indices_ext" ,
127
+ PrimitiveTriangleIndicesEXT ,
128
+ ) ,
129
+ ( "cull_primitive_ext" , CullPrimitiveEXT ) ,
123
130
( "frag_size_ext" , FragSizeEXT ) ,
124
131
( "frag_invocation_count_ext" , FragInvocationCountEXT ) ,
125
132
( "launch_id" , BuiltIn :: LaunchIdKHR ) ,
@@ -169,6 +176,7 @@ const STORAGE_CLASSES: &[(&str, StorageClass)] = {
169
176
( "incoming_ray_payload" , StorageClass :: IncomingRayPayloadKHR ) ,
170
177
( "shader_record_buffer" , StorageClass :: ShaderRecordBufferKHR ) ,
171
178
( "physical_storage_buffer" , PhysicalStorageBuffer ) ,
179
+ ( "task_payload_workgroup_ext" , TaskPayloadWorkgroupEXT ) ,
172
180
]
173
181
} ;
174
182
@@ -183,6 +191,8 @@ const EXECUTION_MODELS: &[(&str, ExecutionModel)] = {
183
191
( "compute" , GLCompute ) ,
184
192
( "task_nv" , TaskNV ) ,
185
193
( "mesh_nv" , MeshNV ) ,
194
+ ( "task_ext" , TaskEXT ) ,
195
+ ( "mesh_ext" , MeshEXT ) ,
186
196
( "ray_generation" , ExecutionModel :: RayGenerationKHR ) ,
187
197
( "intersection" , ExecutionModel :: IntersectionKHR ) ,
188
198
( "any_hit" , ExecutionModel :: AnyHitKHR ) ,
@@ -263,6 +273,17 @@ const EXECUTION_MODES: &[(&str, ExecutionMode, ExecutionModeExtraDim)] = {
263
273
( "output_primitives_nv" , OutputPrimitivesNV , Value ) ,
264
274
( "derivative_group_quads_nv" , DerivativeGroupQuadsNV , None ) ,
265
275
( "output_triangles_nv" , OutputTrianglesNV , None ) ,
276
+ ( "output_lines_ext" , ExecutionMode :: OutputLinesEXT , None ) ,
277
+ (
278
+ "output_triangles_ext" ,
279
+ ExecutionMode :: OutputTrianglesEXT ,
280
+ None ,
281
+ ) ,
282
+ (
283
+ "output_primitives_ext" ,
284
+ ExecutionMode :: OutputPrimitivesEXT ,
285
+ Value ,
286
+ ) ,
266
287
(
267
288
"pixel_interlock_ordered_ext" ,
268
289
PixelInterlockOrderedEXT ,
@@ -717,7 +738,7 @@ fn parse_entry_attrs(
717
738
. execution_modes
718
739
. push ( ( origin_mode, ExecutionModeExtra :: new ( [ ] ) ) ) ;
719
740
}
720
- GLCompute | MeshNV | TaskNV => {
741
+ GLCompute | MeshNV | TaskNV | TaskEXT | MeshEXT => {
721
742
if let Some ( local_size) = local_size {
722
743
entry
723
744
. execution_modes
@@ -726,7 +747,7 @@ fn parse_entry_attrs(
726
747
return Err ( (
727
748
arg. span ( ) ,
728
749
String :: from (
729
- "The `threads` argument must be specified when using `#[spirv(compute)]`, `#[spirv(mesh_nv)]` or `#[spirv(task_nv )]`" ,
750
+ "The `threads` argument must be specified when using `#[spirv(compute)]`, `#[spirv(mesh_nv)]`, `#[spirv(task_nv)]`, `#[spirv(task_ext)]` or `#[spirv(mesh_ext )]`" ,
730
751
) ,
731
752
) ) ;
732
753
}
0 commit comments