radv: fix needed dynamic state for VRS

If the pipeline struct isn't found, the state might still be dynamic.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10193>
This commit is contained in:
Samuel Pitoiset 2021-04-12 18:00:51 +02:00
parent 437ed05708
commit 3720c6a6f6
1 changed files with 3 additions and 2 deletions

View File

@ -1407,7 +1407,8 @@ radv_pipeline_needed_dynamic_state(const VkGraphicsPipelineCreateInfo *pCreateIn
states &= ~RADV_DYNAMIC_LINE_STIPPLE;
if (!vk_find_struct_const(pCreateInfo->pNext,
PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR))
PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR) &&
!radv_is_state_dynamic(pCreateInfo, VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR))
states &= ~RADV_DYNAMIC_FRAGMENT_SHADING_RATE;
/* TODO: blend constants & line width. */
@ -1717,7 +1718,7 @@ radv_pipeline_init_dynamic_state(struct radv_pipeline *pipeline,
const VkPipelineFragmentShadingRateStateCreateInfoKHR *shading_rate = vk_find_struct_const(
pCreateInfo->pNext, PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR);
if (needed_states & RADV_DYNAMIC_FRAGMENT_SHADING_RATE) {
if (states & RADV_DYNAMIC_FRAGMENT_SHADING_RATE) {
dynamic->fragment_shading_rate.size = shading_rate->fragmentSize;
for (int i = 0; i < 2; i++)
dynamic->fragment_shading_rate.combiner_ops[i] = shading_rate->combinerOps[i];