For further optimizations.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 src/amd/vulkan/radv_device.c  | 7 +++++++
 src/amd/vulkan/radv_private.h | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 79dbbd886d..be4c9719c1 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -4201,14 +4201,21 @@ VkResult radv_CreateFramebuffer(
        framebuffer->width = pCreateInfo->width;
        framebuffer->height = pCreateInfo->height;
        framebuffer->layers = pCreateInfo->layers;
+       framebuffer->has_CB_metadata = false;
+       framebuffer->has_DB_metadata = false;
+
        for (uint32_t i = 0; i < pCreateInfo->attachmentCount; i++) {
                VkImageView _iview = pCreateInfo->pAttachments[i];
                struct radv_image_view *iview = 
radv_image_view_from_handle(_iview);
                framebuffer->attachments[i].attachment = iview;
                if (iview->aspect_mask & VK_IMAGE_ASPECT_COLOR_BIT) {
                        radv_initialise_color_surface(device, 
&framebuffer->attachments[i].cb, iview);
+                       if (radv_image_has_CB_metadata(iview->image))
+                               framebuffer->has_CB_metadata = true;
                } else if (iview->aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | 
VK_IMAGE_ASPECT_STENCIL_BIT)) {
                        radv_initialise_ds_surface(device, 
&framebuffer->attachments[i].ds, iview);
+                       if (radv_image_has_htile(iview->image))
+                               framebuffer->has_DB_metadata = true;
                }
                framebuffer->width = MIN2(framebuffer->width, 
iview->extent.width);
                framebuffer->height = MIN2(framebuffer->height, 
iview->extent.height);
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 01a5a698a0..17660439d5 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -1715,6 +1715,9 @@ struct radv_framebuffer {
        uint32_t                                     height;
        uint32_t                                     layers;
 
+       bool                                         has_CB_metadata;
+       bool                                         has_DB_metadata;
+
        uint32_t                                     attachment_count;
        struct radv_attachment_info                  attachments[0];
 };
-- 
2.18.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to