Mesa (main): anv: Split out state attachments allocation

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 26 02:46:03 UTC 2022


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

Author: Iván Briano <ivan.briano at intel.com>
Date:   Mon Nov  8 11:32:37 2021 -0800

anv: Split out state attachments allocation

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13980>

---

 src/intel/vulkan/genX_cmd_buffer.c | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index f08aa26a7a0..6dc178064b7 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -1540,18 +1540,16 @@ transition_color_buffer(struct anv_cmd_buffer *cmd_buffer,
 }
 
 static VkResult
-genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer,
-                                   const struct anv_render_pass *pass,
-                                   const struct anv_framebuffer *framebuffer,
-                                   const VkRenderPassBeginInfo *begin)
+cmd_buffer_alloc_state_attachments(struct anv_cmd_buffer *cmd_buffer,
+                                   uint32_t attachment_count)
 {
    struct anv_cmd_state *state = &cmd_buffer->state;
 
    vk_free(&cmd_buffer->pool->alloc, state->attachments);
 
-   if (pass->attachment_count > 0) {
+   if (attachment_count > 0) {
       state->attachments = vk_zalloc(&cmd_buffer->pool->alloc,
-                                     pass->attachment_count *
+                                     attachment_count *
                                           sizeof(state->attachments[0]),
                                      8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
       if (state->attachments == NULL) {
@@ -1563,6 +1561,23 @@ genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer,
       state->attachments = NULL;
    }
 
+   return VK_SUCCESS;
+}
+
+static VkResult
+genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer,
+                                   const struct anv_render_pass *pass,
+                                   const struct anv_framebuffer *framebuffer,
+                                   const VkRenderPassBeginInfo *begin)
+{
+   struct anv_cmd_state *state = &cmd_buffer->state;
+   VkResult result;
+
+   result = cmd_buffer_alloc_state_attachments(cmd_buffer,
+                                               pass->attachment_count);
+   if (result != VK_SUCCESS)
+      return result;
+
    const VkRenderPassAttachmentBeginInfoKHR *attach_begin =
       vk_find_struct_const(begin, RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR);
    if (begin && !attach_begin)



More information about the mesa-commit mailing list