diff options
5 files changed, 5 insertions, 1 deletions
diff --git a/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert b/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert index 89f96795..f7b1acb5 100644 --- a/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert +++ b/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert @@ -21,6 +21,7 @@ struct main0_out kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(28)]]) { + V _22 = {}; device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; diff --git a/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert b/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert index ad36282b..25fd5f50 100644 --- a/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert +++ b/reference/opt/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert @@ -21,6 +21,7 @@ struct main0_out kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(28)]]) { + V _22 = {}; device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; diff --git a/reference/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert b/reference/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert index 89f96795..f7b1acb5 100644 --- a/reference/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert +++ b/reference/shaders-msl/masking/write-outputs-block.mask-location-0.for-tess.vert @@ -21,6 +21,7 @@ struct main0_out kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(28)]]) { + V _22 = {}; device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; diff --git a/reference/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert b/reference/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert index ad36282b..25fd5f50 100644 --- a/reference/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert +++ b/reference/shaders-msl/masking/write-outputs-block.mask-location-1.for-tess.vert @@ -21,6 +21,7 @@ struct main0_out kernel void main0(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint3 spvStageInputSize [[grid_size]], device main0_out* spvOut [[buffer(28)]]) { + V _22 = {}; device main0_out& out = spvOut[gl_GlobalInvocationID.y * spvStageInputSize.x + gl_GlobalInvocationID.x]; if (any(gl_GlobalInvocationID >= spvStageInputSize)) return; diff --git a/spirv_msl.cpp b/spirv_msl.cpp index 1ffd937d..4b93092d 100644 --- a/spirv_msl.cpp +++ b/spirv_msl.cpp @@ -2907,7 +2907,7 @@ void CompilerMSL::add_variable_to_interface_block(StorageClass storage, const st if (var_type.basetype == SPIRType::Struct) { - if (!is_builtin_type(var_type) && (!capture_output_to_buffer || storage == StorageClassInput) && + if (!is_builtin_type(var_type) && (!capture_output_to_buffer || is_block || storage == StorageClassInput) && !meta.strip_array) { // For I/O blocks or structs, we will need to pass the block itself around |