tu: Clear viewport dirty state with static viewports

Vulkan allows the user to set extraneous dynamic state which then gets
ignored if a pipeline with static state is bound. We weren't
implementing this correctly for viewports because we weren't clearing
the dirty bit, but it was happening to work until changes for dynamic
depth negative-one-to-one broke
dEQP-VK.pipeline.*.depth.depth_clip_control.d32_sfloat_less_viewport_before_static.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18912>
This commit is contained in:
Connor Abbott
2022-10-10 22:05:00 +02:00
committed by Marge Bot
parent 6da2320a92
commit 9061f5f57d
+3
View File
@@ -2613,6 +2613,9 @@ tu_CmdBindPipeline(VkCommandBuffer commandBuffer,
cmd->state.dirty |= TU_CMD_DIRTY_VIEWPORTS;
}
if (!(pipeline->dynamic_state_mask & BIT(VK_DYNAMIC_STATE_VIEWPORT)))
cmd->state.dirty &= ~TU_CMD_DIRTY_VIEWPORTS;
if (!(pipeline->dynamic_state_mask & BIT(TU_DYNAMIC_STATE_VERTEX_INPUT)))
tu_update_num_vbs(cmd, pipeline->vi.num_vbs);