@@ -122,6 +122,13 @@ const BUILTINS: &[(&str, BuiltIn)] = {
122
122
( "bary_coord_no_persp_nv" , BuiltIn :: BaryCoordNoPerspNV ) ,
123
123
( "bary_coord" , BaryCoordKHR ) ,
124
124
( "bary_coord_no_persp" , BaryCoordNoPerspKHR ) ,
125
+ ( "primitive_point_indices_ext" , PrimitivePointIndicesEXT ) ,
126
+ ( "primitive_line_indices_ext" , PrimitiveLineIndicesEXT ) ,
127
+ (
128
+ "primitive_triangle_indices_ext" ,
129
+ PrimitiveTriangleIndicesEXT ,
130
+ ) ,
131
+ ( "cull_primitive_ext" , CullPrimitiveEXT ) ,
125
132
( "frag_size_ext" , FragSizeEXT ) ,
126
133
( "frag_invocation_count_ext" , FragInvocationCountEXT ) ,
127
134
( "launch_id" , BuiltIn :: LaunchIdKHR ) ,
@@ -171,6 +178,7 @@ const STORAGE_CLASSES: &[(&str, StorageClass)] = {
171
178
( "incoming_ray_payload" , StorageClass :: IncomingRayPayloadKHR ) ,
172
179
( "shader_record_buffer" , StorageClass :: ShaderRecordBufferKHR ) ,
173
180
( "physical_storage_buffer" , PhysicalStorageBuffer ) ,
181
+ ( "task_payload_workgroup_ext" , TaskPayloadWorkgroupEXT ) ,
174
182
]
175
183
} ;
176
184
@@ -185,6 +193,8 @@ const EXECUTION_MODELS: &[(&str, ExecutionModel)] = {
185
193
( "compute" , GLCompute ) ,
186
194
( "task_nv" , TaskNV ) ,
187
195
( "mesh_nv" , MeshNV ) ,
196
+ ( "task_ext" , TaskEXT ) ,
197
+ ( "mesh_ext" , MeshEXT ) ,
188
198
( "ray_generation" , ExecutionModel :: RayGenerationKHR ) ,
189
199
( "intersection" , ExecutionModel :: IntersectionKHR ) ,
190
200
( "any_hit" , ExecutionModel :: AnyHitKHR ) ,
@@ -265,6 +275,17 @@ const EXECUTION_MODES: &[(&str, ExecutionMode, ExecutionModeExtraDim)] = {
265
275
( "output_primitives_nv" , OutputPrimitivesNV , Value ) ,
266
276
( "derivative_group_quads_nv" , DerivativeGroupQuadsNV , None ) ,
267
277
( "output_triangles_nv" , OutputTrianglesNV , None ) ,
278
+ ( "output_lines_ext" , ExecutionMode :: OutputLinesEXT , None ) ,
279
+ (
280
+ "output_triangles_ext" ,
281
+ ExecutionMode :: OutputTrianglesEXT ,
282
+ None ,
283
+ ) ,
284
+ (
285
+ "output_primitives_ext" ,
286
+ ExecutionMode :: OutputPrimitivesEXT ,
287
+ Value ,
288
+ ) ,
268
289
(
269
290
"pixel_interlock_ordered_ext" ,
270
291
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