summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChad Versace <[email protected]>2016-01-14 15:18:20 -0800
committerChad Versace <[email protected]>2016-01-14 22:53:05 -0800
commit11f543371599823bbc8b49cf44d6fb012b78ad3a (patch)
treef7b9decff55a71bba47bb8ccfabfebc23ce75aba /src
parentdeb8dd89b5b211436eea2b8142a6b0acceeec6fd (diff)
anv: Distinguish between subpass setup and subpass start
vkCmdBeginRenderPass, vkCmdNextSubpass, and vkBeginCommandBuffer with VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, all *setup* the command buffer for recording commands for some subpass. But only the first two, vkCmdBeginRenderPass and vkCmdNextSubpass, can *start* a subpass. Therefore, calling anv_cmd_buffer_begin_subpass() inside vkCmdBeginCommandBuffer is misleading. Clarify its purpose by renaming it to anv_cmd_buffer_set_subpass() and adding comments.
Diffstat (limited to 'src')
-rw-r--r--src/vulkan/anv_cmd_buffer.c24
-rw-r--r--src/vulkan/anv_private.h11
-rw-r--r--src/vulkan/gen7_cmd_buffer.c11
-rw-r--r--src/vulkan/gen8_cmd_buffer.c11
4 files changed, 37 insertions, 20 deletions
diff --git a/src/vulkan/anv_cmd_buffer.c b/src/vulkan/anv_cmd_buffer.c
index 065c2f64922..070b8490e32 100644
--- a/src/vulkan/anv_cmd_buffer.c
+++ b/src/vulkan/anv_cmd_buffer.c
@@ -386,7 +386,7 @@ VkResult anv_BeginCommandBuffer(
struct anv_subpass *subpass =
&cmd_buffer->state.pass->subpasses[pBeginInfo->pInheritanceInfo->subpass];
- anv_cmd_buffer_begin_subpass(cmd_buffer, subpass);
+ anv_cmd_buffer_set_subpass(cmd_buffer, subpass);
}
anv_cmd_buffer_emit_state_base_address(cmd_buffer);
@@ -954,19 +954,31 @@ anv_cmd_buffer_merge_dynamic(struct anv_cmd_buffer *cmd_buffer,
return state;
}
+/**
+ * @brief Setup the command buffer for recording commands inside the given
+ * subpass.
+ *
+ * This does not record all commands needed for starting the subpass.
+ * Starting the subpass may require additional commands.
+ *
+ * Note that vkCmdBeginRenderPass, vkCmdNextSubpass, and vkBeginCommandBuffer
+ * with VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, all setup the
+ * command buffer for recording commands for some subpass. But only the first
+ * two, vkCmdBeginRenderPass and vkCmdNextSubpass, can start a subpass.
+ */
void
-anv_cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
- struct anv_subpass *subpass)
+anv_cmd_buffer_set_subpass(struct anv_cmd_buffer *cmd_buffer,
+ struct anv_subpass *subpass)
{
switch (cmd_buffer->device->info.gen) {
case 7:
- gen7_cmd_buffer_begin_subpass(cmd_buffer, subpass);
+ gen7_cmd_buffer_set_subpass(cmd_buffer, subpass);
break;
case 8:
- gen8_cmd_buffer_begin_subpass(cmd_buffer, subpass);
+ gen8_cmd_buffer_set_subpass(cmd_buffer, subpass);
break;
case 9:
- gen9_cmd_buffer_begin_subpass(cmd_buffer, subpass);
+ gen9_cmd_buffer_set_subpass(cmd_buffer, subpass);
break;
default:
unreachable("unsupported gen\n");
diff --git a/src/vulkan/anv_private.h b/src/vulkan/anv_private.h
index a76e78aa8e4..e8ac70dc498 100644
--- a/src/vulkan/anv_private.h
+++ b/src/vulkan/anv_private.h
@@ -1243,15 +1243,14 @@ void anv_cmd_buffer_emit_state_base_address(struct anv_cmd_buffer *cmd_buffer);
void anv_cmd_state_setup_attachments(struct anv_cmd_buffer *cmd_buffer,
const VkRenderPassBeginInfo *info);
-void gen7_cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
- struct anv_subpass *subpass);
-void gen8_cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
+void gen7_cmd_buffer_set_subpass(struct anv_cmd_buffer *cmd_buffer,
struct anv_subpass *subpass);
-void gen9_cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
+void gen8_cmd_buffer_set_subpass(struct anv_cmd_buffer *cmd_buffer,
struct anv_subpass *subpass);
-
-void anv_cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
+void gen9_cmd_buffer_set_subpass(struct anv_cmd_buffer *cmd_buffer,
+ struct anv_subpass *subpass);
+void anv_cmd_buffer_set_subpass(struct anv_cmd_buffer *cmd_buffer,
struct anv_subpass *subpass);
struct anv_state
diff --git a/src/vulkan/gen7_cmd_buffer.c b/src/vulkan/gen7_cmd_buffer.c
index bea0abea1cc..b83bfdadbae 100644
--- a/src/vulkan/gen7_cmd_buffer.c
+++ b/src/vulkan/gen7_cmd_buffer.c
@@ -794,9 +794,12 @@ cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer)
anv_batch_emit(&cmd_buffer->batch, GEN7_3DSTATE_CLEAR_PARAMS);
}
+/**
+ * @see anv_cmd_buffer_set_subpass()
+ */
GENX_FUNC(GEN7, GEN7) void
-genX(cmd_buffer_begin_subpass)(struct anv_cmd_buffer *cmd_buffer,
- struct anv_subpass *subpass)
+genX(cmd_buffer_set_subpass)(struct anv_cmd_buffer *cmd_buffer,
+ struct anv_subpass *subpass)
{
cmd_buffer->state.subpass = subpass;
cmd_buffer->state.descriptors_dirty |= VK_SHADER_STAGE_FRAGMENT_BIT;
@@ -830,7 +833,7 @@ void genX(CmdBeginRenderPass)(
.DrawingRectangleOriginY = 0,
.DrawingRectangleOriginX = 0);
- gen7_cmd_buffer_begin_subpass(cmd_buffer, pass->subpasses);
+ gen7_cmd_buffer_set_subpass(cmd_buffer, pass->subpasses);
anv_cmd_buffer_clear_subpass(cmd_buffer);
}
@@ -842,7 +845,7 @@ void genX(CmdNextSubpass)(
assert(cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_PRIMARY);
- gen7_cmd_buffer_begin_subpass(cmd_buffer, cmd_buffer->state.subpass + 1);
+ gen7_cmd_buffer_set_subpass(cmd_buffer, cmd_buffer->state.subpass + 1);
anv_cmd_buffer_clear_subpass(cmd_buffer);
}
diff --git a/src/vulkan/gen8_cmd_buffer.c b/src/vulkan/gen8_cmd_buffer.c
index 10bc8f7bf54..e2bbd94ddf8 100644
--- a/src/vulkan/gen8_cmd_buffer.c
+++ b/src/vulkan/gen8_cmd_buffer.c
@@ -791,9 +791,12 @@ cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer)
anv_batch_emit(&cmd_buffer->batch, GENX(3DSTATE_CLEAR_PARAMS));
}
+/**
+ * @see anv_cmd_buffer_set_subpass()
+ */
void
-genX(cmd_buffer_begin_subpass)(struct anv_cmd_buffer *cmd_buffer,
- struct anv_subpass *subpass)
+genX(cmd_buffer_set_subpass)(struct anv_cmd_buffer *cmd_buffer,
+ struct anv_subpass *subpass)
{
cmd_buffer->state.subpass = subpass;
@@ -829,7 +832,7 @@ void genX(CmdBeginRenderPass)(
.DrawingRectangleOriginY = 0,
.DrawingRectangleOriginX = 0);
- genX(cmd_buffer_begin_subpass)(cmd_buffer, pass->subpasses);
+ genX(cmd_buffer_set_subpass)(cmd_buffer, pass->subpasses);
anv_cmd_buffer_clear_subpass(cmd_buffer);
}
@@ -841,7 +844,7 @@ void genX(CmdNextSubpass)(
assert(cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_PRIMARY);
- genX(cmd_buffer_begin_subpass)(cmd_buffer, cmd_buffer->state.subpass + 1);
+ genX(cmd_buffer_set_subpass)(cmd_buffer, cmd_buffer->state.subpass + 1);
anv_cmd_buffer_clear_subpass(cmd_buffer);
}