anv/clear: Only clear the render area when doing subpass clears

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Jason Ekstrand
2016-05-20 00:11:32 -07:00
parent 5432487792
commit b26bd6790d
3 changed files with 3 additions and 4 deletions

View File

@@ -709,10 +709,7 @@ anv_cmd_buffer_clear_subpass(struct anv_cmd_buffer *cmd_buffer)
anv_finishme("clearing multi-layer framebuffer"); anv_finishme("clearing multi-layer framebuffer");
VkClearRect clear_rect = { VkClearRect clear_rect = {
.rect = { .rect = cmd_state->render_area,
.offset = { 0, 0 },
.extent = { fb->width, fb->height },
},
.baseArrayLayer = 0, .baseArrayLayer = 0,
.layerCount = 1, /* FINISHME: clear multi-layer framebuffer */ .layerCount = 1, /* FINISHME: clear multi-layer framebuffer */
}; };

View File

@@ -1174,6 +1174,7 @@ struct anv_cmd_state {
struct anv_framebuffer * framebuffer; struct anv_framebuffer * framebuffer;
struct anv_render_pass * pass; struct anv_render_pass * pass;
struct anv_subpass * subpass; struct anv_subpass * subpass;
VkRect2D render_area;
uint32_t restart_index; uint32_t restart_index;
struct anv_vertex_binding vertex_bindings[MAX_VBS]; struct anv_vertex_binding vertex_bindings[MAX_VBS];
struct anv_descriptor_set * descriptors[MAX_SETS]; struct anv_descriptor_set * descriptors[MAX_SETS];

View File

@@ -1100,6 +1100,7 @@ void genX(CmdBeginRenderPass)(
cmd_buffer->state.framebuffer = framebuffer; cmd_buffer->state.framebuffer = framebuffer;
cmd_buffer->state.pass = pass; cmd_buffer->state.pass = pass;
cmd_buffer->state.render_area = pRenderPassBegin->renderArea;
anv_cmd_state_setup_attachments(cmd_buffer, pRenderPassBegin); anv_cmd_state_setup_attachments(cmd_buffer, pRenderPassBegin);
genX(flush_pipeline_select_3d)(cmd_buffer); genX(flush_pipeline_select_3d)(cmd_buffer);