MVKPipeline: Force extra checks for stores after fragment discard.

Update SPIRV-Cross to pull in multiple CTS fixes. Handle the new
`check_discarded_frag_stores` and `manual_helper_invocation_updates`
options.
This commit is contained in:
Chip Davis 2022-11-20 14:33:19 -08:00
parent 417d27da72
commit 03ce25da20
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>