summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Marek <jonathan@marek.ca>2019-12-04 14:29:58 -0500
committerJonathan Marek <jonathan@marek.ca>2019-12-04 17:35:18 -0500
commitec28714b7810b07d48164f8efa90c8d47e65e19f (patch)
treecec884a8f8feb510c12082877c6850142294fec1
parent372ed42d222a274abe712b62f4b037cbeb6fddb5 (diff)
downloadmesa-ec28714b7810b07d48164f8efa90c8d47e65e19f.tar.gz
turnip: allow writes to draw_cs outside of render pass
This is for state commands like CmdSetViewport that can be used outside of a renderpass. Accumulating those into draw_cs outside of the renderpass should have the desired effect. Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r--src/freedreno/vulkan/tu_cmd_buffer.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index 91baac6f7ec..5e93395dff5 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -1640,6 +1640,7 @@ tu_BeginCommandBuffer(VkCommandBuffer commandBuffer,
cmd_buffer->usage_flags = pBeginInfo->flags;
tu_cs_begin(&cmd_buffer->cs);
+ tu_cs_begin(&cmd_buffer->draw_cs);
cmd_buffer->marker_seqno = 0;
cmd_buffer->scratch_seqno = 0;
@@ -1788,6 +1789,7 @@ tu_EndCommandBuffer(VkCommandBuffer commandBuffer)
}
tu_cs_end(&cmd_buffer->cs);
+ tu_cs_end(&cmd_buffer->draw_cs);
assert(!cmd_buffer->state.attachments);
@@ -2084,10 +2086,6 @@ tu_CmdBeginRenderPass(VkCommandBuffer commandBuffer,
tu_cmd_update_tiling_config(cmd_buffer, &pRenderPassBegin->renderArea);
tu_cmd_prepare_tile_load_ib(cmd_buffer);
tu_cmd_prepare_tile_store_ib(cmd_buffer);
-
- /* draw_cs should contain entries only for this render pass */
- assert(!cmd_buffer->draw_cs.entry_count);
- tu_cs_begin(&cmd_buffer->draw_cs);
}
void
@@ -2988,6 +2986,7 @@ tu_CmdEndRenderPass(VkCommandBuffer commandBuffer)
/* discard draw_cs entries now that the tiles are rendered */
tu_cs_discard_entries(&cmd_buffer->draw_cs);
+ tu_cs_begin(&cmd_buffer->draw_cs);
vk_free(&cmd_buffer->pool->alloc, cmd_buffer->state.attachments);
cmd_buffer->state.attachments = NULL;