Mesa (main): dzn: Pass an image view to dzn_cmd_buffer_clear_attachment()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 22 08:50:54 UTC 2022


Module: Mesa
Branch: main
Commit: 39851688df772fb258f45433d5d7b822d8dde06f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=39851688df772fb258f45433d5d7b822d8dde06f

Author: Boris Brezillon <boris.brezillon at collabora.com>
Date:   Wed Apr 20 10:12:06 2022 +0200

dzn: Pass an image view to dzn_cmd_buffer_clear_attachment()

Let the caller extract the image view from the attachment index, so
we can make this function framebuffer-agnostic and re-use it in the
dynamic rendering path.

Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15913>

---

 src/microsoft/vulkan/dzn_cmd_buffer.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/microsoft/vulkan/dzn_cmd_buffer.c b/src/microsoft/vulkan/dzn_cmd_buffer.c
index 3a4d4841255..3519e6a28b2 100644
--- a/src/microsoft/vulkan/dzn_cmd_buffer.c
+++ b/src/microsoft/vulkan/dzn_cmd_buffer.c
@@ -1172,7 +1172,7 @@ dzn_cmd_buffer_clear_ranges_with_copy(struct dzn_cmd_buffer *cmdbuf,
 
 static void
 dzn_cmd_buffer_clear_attachment(struct dzn_cmd_buffer *cmdbuf,
-                                uint32_t idx,
+                                struct dzn_image_view *view,
                                 const VkClearValue *value,
                                 VkImageAspectFlags aspects,
                                 uint32_t base_layer,
@@ -1180,11 +1180,8 @@ dzn_cmd_buffer_clear_attachment(struct dzn_cmd_buffer *cmdbuf,
                                 uint32_t rect_count,
                                 D3D12_RECT *rects)
 {
-   if (idx == VK_ATTACHMENT_UNUSED)
-      return;
-
-   struct dzn_image_view *view = cmdbuf->state.framebuffer->attachments[idx];
-   struct dzn_image *image = container_of(view->vk.image, struct dzn_image, vk);
+   struct dzn_image *image =
+      container_of(view->vk.image, struct dzn_image, vk);
 
    VkImageSubresourceRange range = {
       .aspectMask = aspects,
@@ -2120,12 +2117,17 @@ dzn_cmd_buffer_clear_attachments(struct dzn_cmd_buffer *cmdbuf,
       else
          idx = subpass->zs.idx;
 
+      if (idx == VK_ATTACHMENT_UNUSED)
+         continue;
+
+      struct dzn_image_view *view = cmdbuf->state.framebuffer->attachments[idx];
+
       for (uint32_t j = 0; j < rect_count; j++) {
          D3D12_RECT rect;
 
          dzn_translate_rect(&rect, &rects[j].rect);
-         dzn_cmd_buffer_clear_attachment(cmdbuf,
-                                         idx, &attachments[i].clearValue,
+         dzn_cmd_buffer_clear_attachment(cmdbuf, view,
+                                         &attachments[i].clearValue,
                                          attachments[i].aspectMask,
                                          rects[j].baseArrayLayer,
                                          rects[j].layerCount,
@@ -3453,7 +3455,9 @@ dzn_CmdBeginRenderPass2(VkCommandBuffer commandBuffer,
          aspectMask |= VK_IMAGE_ASPECT_COLOR_BIT;
       }
 
-      dzn_cmd_buffer_clear_attachment(cmdbuf, i, &pRenderPassBeginInfo->pClearValues[i],
+      struct dzn_image_view *view = cmdbuf->state.framebuffer->attachments[i];
+
+      dzn_cmd_buffer_clear_attachment(cmdbuf, view, &pRenderPassBeginInfo->pClearValues[i],
                                       aspectMask, 0, ~0, 1, &cmdbuf->state.render_area);
    }
 }



More information about the mesa-commit mailing list