@@ -139,7 +139,8 @@ impl crate::AddressSpace {
139139 | crate :: AddressSpace :: Uniform
140140 | crate :: AddressSpace :: Storage { .. }
141141 | crate :: AddressSpace :: Handle
142- | crate :: AddressSpace :: PushConstant => false ,
142+ | crate :: AddressSpace :: PushConstant
143+ | crate :: AddressSpace :: TaskPayload => false ,
143144 }
144145 }
145146}
@@ -1300,6 +1301,9 @@ impl<'a, W: Write> Writer<'a, W> {
13001301 crate :: AddressSpace :: Storage { .. } => {
13011302 self . write_interface_block ( handle, global) ?;
13021303 }
1304+ crate :: AddressSpace :: TaskPayload => {
1305+ self . write_interface_block ( handle, global) ?;
1306+ }
13031307 // A global variable in the `Function` address space is a
13041308 // contradiction in terms.
13051309 crate :: AddressSpace :: Function => unreachable ! ( ) ,
@@ -1614,6 +1618,7 @@ impl<'a, W: Write> Writer<'a, W> {
16141618 interpolation,
16151619 sampling,
16161620 blend_src,
1621+ per_primitive : _,
16171622 } => ( location, interpolation, sampling, blend_src) ,
16181623 crate :: Binding :: BuiltIn ( built_in) => {
16191624 match built_in {
@@ -1732,6 +1737,7 @@ impl<'a, W: Write> Writer<'a, W> {
17321737 interpolation : None ,
17331738 sampling : None ,
17341739 blend_src,
1740+ per_primitive : false ,
17351741 } ,
17361742 stage : self . entry_point . stage ,
17371743 options : VaryingOptions :: from_writer_options ( self . options , output) ,
@@ -1873,7 +1879,7 @@ impl<'a, W: Write> Writer<'a, W> {
18731879 writeln ! ( self . out, ") {{" ) ?;
18741880
18751881 if self . options . zero_initialize_workgroup_memory
1876- && ctx. ty . is_compute_entry_point ( self . module )
1882+ && ctx. ty . is_compute_like_entry_point ( self . module )
18771883 {
18781884 self . write_workgroup_variables_initialization ( & ctx) ?;
18791885 }
@@ -2669,6 +2675,11 @@ impl<'a, W: Write> Writer<'a, W> {
26692675 self . write_image_atomic ( ctx, image, coordinate, array_index, fun, value) ?
26702676 }
26712677 Statement :: RayQuery { .. } => unreachable ! ( ) ,
2678+ Statement :: MeshFunction (
2679+ crate :: MeshFunction :: SetMeshOutputs { .. }
2680+ | crate :: MeshFunction :: SetVertex { .. }
2681+ | crate :: MeshFunction :: SetPrimitive { .. } ,
2682+ ) => unreachable ! ( ) ,
26722683 Statement :: SubgroupBallot { result, predicate } => {
26732684 write ! ( self . out, "{level}" ) ?;
26742685 let res_name = Baked ( result) . to_string ( ) ;
@@ -5248,6 +5259,15 @@ const fn glsl_built_in(built_in: crate::BuiltIn, options: VaryingOptions) -> &'s
52485259 Bi :: SubgroupId => "gl_SubgroupID" ,
52495260 Bi :: SubgroupSize => "gl_SubgroupSize" ,
52505261 Bi :: SubgroupInvocationId => "gl_SubgroupInvocationID" ,
5262+ // mesh
5263+ // TODO: figure out how to map these to glsl things as glsl treats them as arrays
5264+ Bi :: CullPrimitive
5265+ | Bi :: PointIndex
5266+ | Bi :: LineIndices
5267+ | Bi :: TriangleIndices
5268+ | Bi :: MeshTaskSize => {
5269+ unimplemented ! ( )
5270+ }
52515271 }
52525272}
52535273
@@ -5263,6 +5283,7 @@ const fn glsl_storage_qualifier(space: crate::AddressSpace) -> Option<&'static s
52635283 As :: Handle => Some ( "uniform" ) ,
52645284 As :: WorkGroup => Some ( "shared" ) ,
52655285 As :: PushConstant => Some ( "uniform" ) ,
5286+ As :: TaskPayload => unreachable ! ( ) ,
52665287 }
52675288}
52685289
0 commit comments