Merge pull request #1783 from cdavis5e/discarded-frag-checks

MVKPipeline: Force extra checks for stores after fragment discard.
This commit is contained in:
Bill Hollings 2022-11-23 13:32:52 -05:00 committed by GitHub
commit 13535d0f35
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

View File

@ -1 +1 @@
57639196694a8b5c572c9358f5d9cb443dd341e5
c77b09b57c27837dc2d41aa371ed3d236ce9ce47

View File

@ -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<class Archive>