diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision index 11efbbb3..4cff295d 100644 --- a/ExternalRevisions/SPIRV-Cross_repo_revision +++ b/ExternalRevisions/SPIRV-Cross_repo_revision @@ -1 +1 @@ -57639196694a8b5c572c9358f5d9cb443dd341e5 +c77b09b57c27837dc2d41aa371ed3d236ce9ce47 diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm index 035ccdc0..44f7e3d9 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm @@ -1149,6 +1149,7 @@ bool MVKGraphicsPipeline::addFragmentShaderToPipeline(MTLRenderPipelineDescripto shaderConfig.options.entryPointName = _pFragmentSS->pName; shaderConfig.options.mslOptions.capture_output_to_buffer = false; shaderConfig.options.mslOptions.fixed_subgroup_size = mvkIsAnyFlagEnabled(_pFragmentSS->flags, VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT) ? 0 : _device->_pMetalFeatures->maxSubgroupSize; + shaderConfig.options.mslOptions.check_discarded_frag_stores = true; if (_isRasterizing && pCreateInfo->pMultisampleState) { // Must ignore allowed bad pMultisampleState pointer if rasterization disabled if (pCreateInfo->pMultisampleState->pSampleMask && pCreateInfo->pMultisampleState->pSampleMask[0] != 0xffffffff) { shaderConfig.options.mslOptions.additional_fixed_sample_mask = pCreateInfo->pMultisampleState->pSampleMask[0]; @@ -2240,13 +2241,15 @@ namespace SPIRV_CROSS_NAMESPACE { opt.force_native_arrays, opt.enable_clip_distance_user_varying, opt.multi_patch_workgroup, + opt.raw_buffer_tese_input, opt.vertex_for_tessellation, opt.arrayed_subpass_input, opt.ios_use_simdgroup_functions, opt.emulate_subgroups, opt.vertex_index_type, opt.force_sample_rate_shading, - opt.raw_buffer_tese_input); + opt.manual_helper_invocation_updates, + opt.check_discarded_frag_stores); } template