mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 11:00:11 +01:00
Revert "anv: Stop doing too much per-sample shading"
This reverts commit1f559930b6. 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> (cherry picked from commitb05d228695)
This commit is contained in:
parent
a65ad66c47
commit
4e143b9c0b
1 changed files with 22 additions and 19 deletions
|
|
@ -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,
|
||||
|
|
@ -552,8 +545,15 @@ 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->frag_coord_adds_sample_pos = key->persample_interp;
|
||||
}
|
||||
|
||||
|
|
@ -2403,16 +2403,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) {
|
||||
|
|
@ -2494,6 +2488,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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue