Mesa (main): turnip: estimate render pass costs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 8 13:20:11 UTC 2022


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

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Thu May 26 09:22:40 2022 -0700

turnip: estimate render pass costs

They will be used by autotuner.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16733>

---

 src/freedreno/vulkan/tu_pass.c    | 22 ++++++++++++++++++++++
 src/freedreno/vulkan/tu_private.h |  5 +++++
 2 files changed, 27 insertions(+)

diff --git a/src/freedreno/vulkan/tu_pass.c b/src/freedreno/vulkan/tu_pass.c
index c90498436e0..278283249f1 100644
--- a/src/freedreno/vulkan/tu_pass.c
+++ b/src/freedreno/vulkan/tu_pass.c
@@ -885,6 +885,28 @@ tu_CreateRenderPass2(VkDevice _device,
       tu_render_pass_gmem_config(pass, device->physical_device);
    }
 
+   for (uint32_t i = 0; i < pass->attachment_count; i++) {
+      const struct tu_render_pass_attachment *att = &pass->attachments[i];
+
+      /* approximate tu_load_gmem_attachment */
+      if (att->load)
+         pass->gmem_bandwidth_per_pixel += att->cpp;
+
+      /* approximate tu_store_gmem_attachment */
+      if (att->store)
+         pass->gmem_bandwidth_per_pixel += att->cpp;
+
+      /* approximate tu_clear_sysmem_attachment */
+      if (att->clear_mask)
+         pass->sysmem_bandwidth_per_pixel += att->cpp;
+
+      /* approximate tu6_emit_sysmem_resolves */
+      if (att->will_be_resolved) {
+         pass->sysmem_bandwidth_per_pixel +=
+            att->cpp + att->cpp / att->samples;
+      }
+   }
+
    for (unsigned i = 0; i < pCreateInfo->dependencyCount; ++i) {
       tu_render_pass_add_subpass_dep(pass, &pCreateInfo->pDependencies[i]);
    }
diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h
index a9fce74ff24..2992d40aeba 100644
--- a/src/freedreno/vulkan/tu_private.h
+++ b/src/freedreno/vulkan/tu_private.h
@@ -1912,6 +1912,11 @@ struct tu_render_pass
    uint32_t subpass_count;
    uint32_t gmem_pixels;
    uint32_t tile_align_w;
+
+   /* memory bandwidth costs (in bytes) for gmem / sysmem rendering */
+   uint32_t gmem_bandwidth_per_pixel;
+   uint32_t sysmem_bandwidth_per_pixel;
+
    struct tu_subpass_attachment *subpass_attachments;
    struct tu_render_pass_attachment *attachments;
    struct tu_subpass_barrier end_barrier;



More information about the mesa-commit mailing list