@@ -120,6 +120,13 @@ const BUILTINS: &[(&str, BuiltIn)] = {
120120 ( "bary_coord_no_persp_nv" , BuiltIn :: BaryCoordNoPerspNV ) ,
121121 ( "bary_coord" , BaryCoordKHR ) ,
122122 ( "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 ) ,
123130 ( "frag_size_ext" , FragSizeEXT ) ,
124131 ( "frag_invocation_count_ext" , FragInvocationCountEXT ) ,
125132 ( "launch_id" , BuiltIn :: LaunchIdKHR ) ,
@@ -169,6 +176,7 @@ const STORAGE_CLASSES: &[(&str, StorageClass)] = {
169176 ( "incoming_ray_payload" , StorageClass :: IncomingRayPayloadKHR ) ,
170177 ( "shader_record_buffer" , StorageClass :: ShaderRecordBufferKHR ) ,
171178 ( "physical_storage_buffer" , PhysicalStorageBuffer ) ,
179+ ( "task_payload_workgroup_ext" , TaskPayloadWorkgroupEXT ) ,
172180 ]
173181} ;
174182
@@ -183,6 +191,8 @@ const EXECUTION_MODELS: &[(&str, ExecutionModel)] = {
183191 ( "compute" , GLCompute ) ,
184192 ( "task_nv" , TaskNV ) ,
185193 ( "mesh_nv" , MeshNV ) ,
194+ ( "task_ext" , TaskEXT ) ,
195+ ( "mesh_ext" , MeshEXT ) ,
186196 ( "ray_generation" , ExecutionModel :: RayGenerationKHR ) ,
187197 ( "intersection" , ExecutionModel :: IntersectionKHR ) ,
188198 ( "any_hit" , ExecutionModel :: AnyHitKHR ) ,
@@ -263,6 +273,17 @@ const EXECUTION_MODES: &[(&str, ExecutionMode, ExecutionModeExtraDim)] = {
263273 ( "output_primitives_nv" , OutputPrimitivesNV , Value ) ,
264274 ( "derivative_group_quads_nv" , DerivativeGroupQuadsNV , None ) ,
265275 ( "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+ ) ,
266287 (
267288 "pixel_interlock_ordered_ext" ,
268289 PixelInterlockOrderedEXT ,
@@ -717,7 +738,7 @@ fn parse_entry_attrs(
717738 . execution_modes
718739 . push ( ( origin_mode, ExecutionModeExtra :: new ( [ ] ) ) ) ;
719740 }
720- GLCompute | MeshNV | TaskNV => {
741+ GLCompute | MeshNV | TaskNV | TaskEXT | MeshEXT => {
721742 if let Some ( local_size) = local_size {
722743 entry
723744 . execution_modes
@@ -726,7 +747,7 @@ fn parse_entry_attrs(
726747 return Err ( (
727748 arg. span ( ) ,
728749 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 )]`" ,
730751 ) ,
731752 ) ) ;
732753 }
0 commit comments