diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index cc473fb4356..5fb05e79940 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -5322,7 +5322,10 @@ tu_bind_vs(struct tu_cmd_buffer *cmd, struct tu_shader *vs) static void tu_bind_tcs(struct tu_cmd_buffer *cmd, struct tu_shader *tcs) { - cmd->state.shaders[MESA_SHADER_TESS_CTRL] = tcs; + if (cmd->state.shaders[MESA_SHADER_TESS_CTRL] != tcs) { + cmd->state.shaders[MESA_SHADER_TESS_CTRL] = tcs; + cmd->state.dirty |= TU_CMD_DIRTY_TCS; + } } static void diff --git a/src/freedreno/vulkan/tu_cmd_buffer.h b/src/freedreno/vulkan/tu_cmd_buffer.h index 4e974e12827..04e83a8af99 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.h +++ b/src/freedreno/vulkan/tu_cmd_buffer.h @@ -76,8 +76,10 @@ enum tu_cmd_dirty_bits TU_CMD_DIRTY_FS = BIT(14), TU_CMD_DIRTY_SHADING_RATE = BIT(15), TU_CMD_DIRTY_DISABLE_FS = BIT(16), + TU_CMD_DIRTY_TCS = BIT(17), + /* all draw states were disabled and need to be re-enabled: */ - TU_CMD_DIRTY_DRAW_STATE = BIT(17) + TU_CMD_DIRTY_DRAW_STATE = BIT(18) }; /* There are only three cache domains we have to care about: the CCU, or