diff options
author | Jonathan Marek <[email protected]> | 2020-06-18 15:41:31 -0400 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-07-14 17:00:07 +0000 |
commit | bf997ca306543326c9ab4070ce2156f320b7b61f (patch) | |
tree | 7d5394194d33c09fceb684b4360b9fe5ec4bb4c3 /src/freedreno/vulkan | |
parent | dce6cb11961f8e3b9106b89205adea1ee899e599 (diff) |
turnip: emit compute pipeline directly in CmdBindPipeline
There's no need to defer it, and can get rid DIRTY_COMPUTE_PIPELINE.
Signed-off-by: Jonathan Marek <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5558>
Diffstat (limited to 'src/freedreno/vulkan')
-rw-r--r-- | src/freedreno/vulkan/tu_cmd_buffer.c | 14 | ||||
-rw-r--r-- | src/freedreno/vulkan/tu_private.h | 3 |
2 files changed, 6 insertions, 11 deletions
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index f8d19bf3a56..43a7284220a 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -1744,7 +1744,7 @@ tu_CmdBindDescriptorSets(VkCommandBuffer commandBuffer, hlsq_bindless_base_reg = REG_A6XX_HLSQ_CS_BINDLESS_BASE(0); hlsq_invalidate_value = A6XX_HLSQ_INVALIDATE_CMD_CS_BINDLESS(0x1f); - cmd->state.dirty |= TU_CMD_DIRTY_COMPUTE_DESCRIPTOR_SETS; + cmd->state.dirty |= TU_CMD_DIRTY_COMPUTE_DESC_SETS_LOAD; } tu_cs_begin_sub_stream(&cmd->sub_cs, 24, &cs); @@ -2033,7 +2033,7 @@ tu_CmdBindPipeline(VkCommandBuffer commandBuffer, if (pipelineBindPoint == VK_PIPELINE_BIND_POINT_COMPUTE) { cmd->state.compute_pipeline = pipeline; - cmd->state.dirty |= TU_CMD_DIRTY_COMPUTE_PIPELINE; + tu_cs_emit_ib(&cmd->cs, &pipeline->program.state_ib); return; } @@ -3051,7 +3051,7 @@ tu6_draw_common(struct tu_cmd_buffer *cmd, * bits to preserve instead. The only things not emitted here are * compute-related state. */ - cmd->state.dirty &= (TU_CMD_DIRTY_COMPUTE_DESCRIPTOR_SETS | TU_CMD_DIRTY_COMPUTE_PIPELINE); + cmd->state.dirty &= TU_CMD_DIRTY_COMPUTE_DESC_SETS_LOAD; return VK_SUCCESS; } @@ -3370,9 +3370,6 @@ tu_dispatch(struct tu_cmd_buffer *cmd, */ tu_emit_cache_flush(cmd, cs); - if (cmd->state.dirty & TU_CMD_DIRTY_COMPUTE_PIPELINE) - tu_cs_emit_ib(cs, &pipeline->program.state_ib); - struct tu_cs_entry ib; ib = tu6_emit_consts(cmd, pipeline, descriptors_state, MESA_SHADER_COMPUTE); @@ -3381,13 +3378,12 @@ tu_dispatch(struct tu_cmd_buffer *cmd, tu_emit_compute_driver_params(cs, pipeline, info); - if ((cmd->state.dirty & TU_CMD_DIRTY_COMPUTE_DESCRIPTOR_SETS) && + if ((cmd->state.dirty & TU_CMD_DIRTY_COMPUTE_DESC_SETS_LOAD) && pipeline->load_state.state_ib.size > 0) { tu_cs_emit_ib(cs, &pipeline->load_state.state_ib); } - cmd->state.dirty &= - ~(TU_CMD_DIRTY_COMPUTE_DESCRIPTOR_SETS | TU_CMD_DIRTY_COMPUTE_PIPELINE); + cmd->state.dirty &= ~TU_CMD_DIRTY_COMPUTE_DESC_SETS_LOAD; tu_cs_emit_pkt7(cs, CP_SET_MARKER, 1); tu_cs_emit(cs, A6XX_CP_SET_MARKER_0_MODE(RM6_COMPUTE)); diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h index c0ad2bc041e..aeb0c57b07e 100644 --- a/src/freedreno/vulkan/tu_private.h +++ b/src/freedreno/vulkan/tu_private.h @@ -705,10 +705,9 @@ struct tu_descriptor_state enum tu_cmd_dirty_bits { - TU_CMD_DIRTY_COMPUTE_PIPELINE = 1 << 1, TU_CMD_DIRTY_VERTEX_BUFFERS = 1 << 2, TU_CMD_DIRTY_DESC_SETS_LOAD = 1 << 3, - TU_CMD_DIRTY_COMPUTE_DESCRIPTOR_SETS = 1 << 4, + TU_CMD_DIRTY_COMPUTE_DESC_SETS_LOAD = 1 << 4, TU_CMD_DIRTY_SHADER_CONSTS = 1 << 5, /* all draw states were disabled and need to be re-enabled: */ TU_CMD_DIRTY_DRAW_STATE = 1 << 7, |