Revert "anv: Stop doing too much per-sample shading"

This reverts commit 1f559930b6.  Turns
out, this approach won't work.

Fixes: 1f559930b6 ("anv: Stop doing too much per-sample shading")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14196>
This commit is contained in:
Jason Ekstrand 2021-12-14 11:55:06 -06:00 committed by Marge Bot
parent ae4065f0b2
commit b05d228695

View file

@ -497,13 +497,6 @@ pipeline_has_coarse_pixel(const struct anv_graphics_pipeline *pipeline,
return true;
}
static bool
is_sample_shading(const VkPipelineMultisampleStateCreateInfo *ms_info)
{
return ms_info->sampleShadingEnable &&
(ms_info->minSampleShading * ms_info->rasterizationSamples) > 1;
}
static void
populate_wm_prog_key(const struct anv_graphics_pipeline *pipeline,
VkPipelineShaderStageCreateFlags flags,
@ -549,8 +542,14 @@ populate_wm_prog_key(const struct anv_graphics_pipeline *pipeline,
key->alpha_test_replicate_alpha = false;
if (ms_info) {
key->persample_interp = is_sample_shading(ms_info);
key->multisample_fbo = ms_info->rasterizationSamples > 1;
/* We should probably pull this out of the shader, but it's fairly
* harmless to compute it and then let dead-code take care of it.
*/
if (ms_info->rasterizationSamples > 1) {
key->persample_interp = ms_info->sampleShadingEnable &&
(ms_info->minSampleShading * ms_info->rasterizationSamples) > 1;
key->multisample_fbo = true;
}
}
key->coarse_pixel =
@ -2430,16 +2429,10 @@ anv_graphics_pipeline_init(struct anv_graphics_pipeline *pipeline,
PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT);
pipeline->depth_clip_enable = clip_info ? clip_info->depthClipEnable : !pipeline->depth_clamp_enable;
/* If rasterization is not enabled, ms_info must be ignored. */
const bool raster_enabled =
!pCreateInfo->pRasterizationState->rasterizerDiscardEnable ||
(pipeline->dynamic_states &
ANV_CMD_DIRTY_DYNAMIC_RASTERIZER_DISCARD_ENABLE);
const VkPipelineMultisampleStateCreateInfo *ms_info =
raster_enabled ? pCreateInfo->pMultisampleState : NULL;
pipeline->sample_shading_enable = ms_info && is_sample_shading(ms_info);
pipeline->sample_shading_enable =
!pCreateInfo->pRasterizationState->rasterizerDiscardEnable &&
pCreateInfo->pMultisampleState &&
pCreateInfo->pMultisampleState->sampleShadingEnable;
result = anv_pipeline_compile_graphics(pipeline, cache, pCreateInfo);
if (result != VK_SUCCESS) {
@ -2521,6 +2514,15 @@ anv_graphics_pipeline_init(struct anv_graphics_pipeline *pipeline,
pipeline->topology = vk_to_intel_primitive_type[ia_info->topology];
}
/* If rasterization is not enabled, ms_info must be ignored. */
const bool raster_enabled =
!pCreateInfo->pRasterizationState->rasterizerDiscardEnable ||
(pipeline->dynamic_states &
ANV_CMD_DIRTY_DYNAMIC_RASTERIZER_DISCARD_ENABLE);
const VkPipelineMultisampleStateCreateInfo *ms_info =
raster_enabled ? pCreateInfo->pMultisampleState : NULL;
const VkPipelineRasterizationLineStateCreateInfoEXT *line_info =
vk_find_struct_const(pCreateInfo->pRasterizationState->pNext,
PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT);