Mesa (master): anv/clear: Only clear the render area when doing subpass clears

Jason Ekstrand jekstrand at kemper.freedesktop.org
Fri May 27 22:18:41 UTC 2016


Module: Mesa
Branch: master
Commit: b26bd6790dd1b09e377bd926e9145ec20ce6ac3f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b26bd6790dd1b09e377bd926e9145ec20ce6ac3f

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Fri May 20 00:11:32 2016 -0700

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

Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

---

 src/intel/vulkan/anv_meta_clear.c  | 5 +----
 src/intel/vulkan/anv_private.h     | 1 +
 src/intel/vulkan/genX_cmd_buffer.c | 1 +
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_clear.c b/src/intel/vulkan/anv_meta_clear.c
index eb4e569..87f3733 100644
--- a/src/intel/vulkan/anv_meta_clear.c
+++ b/src/intel/vulkan/anv_meta_clear.c
@@ -709,10 +709,7 @@ anv_cmd_buffer_clear_subpass(struct anv_cmd_buffer *cmd_buffer)
       anv_finishme("clearing multi-layer framebuffer");
 
    VkClearRect clear_rect = {
-      .rect = {
-         .offset = { 0, 0 },
-         .extent = { fb->width, fb->height },
-      },
+      .rect = cmd_state->render_area,
       .baseArrayLayer = 0,
       .layerCount = 1, /* FINISHME: clear multi-layer framebuffer */
    };
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index d8fffc3..f6ce31d 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1174,6 +1174,7 @@ struct anv_cmd_state {
    struct anv_framebuffer *                     framebuffer;
    struct anv_render_pass *                     pass;
    struct anv_subpass *                         subpass;
+   VkRect2D                                     render_area;
    uint32_t                                     restart_index;
    struct anv_vertex_binding                    vertex_bindings[MAX_VBS];
    struct anv_descriptor_set *                  descriptors[MAX_SETS];
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index f5e3530..9f61a10 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -1100,6 +1100,7 @@ void genX(CmdBeginRenderPass)(
 
    cmd_buffer->state.framebuffer = framebuffer;
    cmd_buffer->state.pass = pass;
+   cmd_buffer->state.render_area = pRenderPassBegin->renderArea;
    anv_cmd_state_setup_attachments(cmd_buffer, pRenderPassBegin);
 
    genX(flush_pipeline_select_3d)(cmd_buffer);




More information about the mesa-commit mailing list