Mesa (main): v3dv: account for multisampling when computing subpass granularity

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 12 11:22:12 UTC 2021


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Fri Nov 12 08:09:26 2021 +0100

v3dv: account for multisampling when computing subpass granularity

The granularity is defined by the tile size, which is also determined
by multisampling.

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13775>

---

 src/broadcom/vulkan/v3dv_pass.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/broadcom/vulkan/v3dv_pass.c b/src/broadcom/vulkan/v3dv_pass.c
index 8a262a86e73..3eb70a250e5 100644
--- a/src/broadcom/vulkan/v3dv_pass.c
+++ b/src/broadcom/vulkan/v3dv_pass.c
@@ -302,6 +302,7 @@ subpass_get_granularity(struct v3dv_device *device,
    struct v3dv_subpass *subpass = &pass->subpasses[subpass_idx];
    const uint32_t color_attachment_count = subpass->color_count;
 
+   bool msaa = false;
    uint32_t max_internal_bpp = 0;
    for (uint32_t i = 0; i < color_attachment_count; i++) {
       uint32_t attachment_idx = subpass->color_attachments[i].attachment;
@@ -315,6 +316,9 @@ subpass_get_granularity(struct v3dv_device *device,
          (format->rt_type, &internal_type, &internal_bpp);
 
       max_internal_bpp = MAX2(max_internal_bpp, internal_bpp);
+
+      if (desc->samples > VK_SAMPLE_COUNT_1_BIT)
+         msaa = true;
    }
 
    uint32_t idx = 0;
@@ -323,6 +327,9 @@ subpass_get_granularity(struct v3dv_device *device,
    else if (color_attachment_count > 1)
       idx += 1;
 
+   if (msaa)
+      idx += 2;
+
    idx += max_internal_bpp;
 
    assert(idx < ARRAY_SIZE(tile_sizes));



More information about the mesa-commit mailing list