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

Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Feb 20 09:01:32 2023 -0500

zink: add ZINK_DEBUG=map

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

---

 docs/drivers/zink.rst                  | 2 ++
 src/gallium/drivers/zink/zink_bo.c     | 8 ++++++++
 src/gallium/drivers/zink/zink_screen.c | 1 +
 src/gallium/drivers/zink/zink_types.h  | 2 ++
 4 files changed, 13 insertions(+)

diff --git a/docs/drivers/zink.rst b/docs/drivers/zink.rst
index c72cf03aea3..82a5d329f08 100644
--- a/docs/drivers/zink.rst
+++ b/docs/drivers/zink.rst
@@ -295,6 +295,8 @@ variable:
     Enable renderpass optimizations (for tiling GPUs)
   ``norp``
     Disable renderpass optimizations (for tiling GPUs)
+  ``map``
+    Print info about mapped VRAM
 
 Vulkan Validation Layers
 ^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/src/gallium/drivers/zink/zink_bo.c 
b/src/gallium/drivers/zink/zink_bo.c
index 646d063d2f3..f5ad823d752 100644
--- a/src/gallium/drivers/zink/zink_bo.c
+++ b/src/gallium/drivers/zink/zink_bo.c
@@ -702,6 +702,10 @@ zink_bo_map(struct zink_screen *screen, struct zink_bo *bo)
             simple_mtx_unlock(&real->lock);
             return NULL;
          }
+         if (unlikely(zink_debug & ZINK_DEBUG_MAP)) {
+            p_atomic_add(&screen->mapped_vram, real->base.size);
+            mesa_loge("NEW MAP(%"PRIu64") TOTAL(%"PRIu64")", real->base.size, 
screen->mapped_vram);
+         }
          p_atomic_set(&real->u.real.cpu_ptr, cpu);
       }
       simple_mtx_unlock(&real->lock);
@@ -720,6 +724,10 @@ zink_bo_unmap(struct zink_screen *screen, struct zink_bo 
*bo)
 
    if (p_atomic_dec_zero(&real->u.real.map_count)) {
       p_atomic_set(&real->u.real.cpu_ptr, NULL);
+      if (unlikely(zink_debug & ZINK_DEBUG_MAP)) {
+         p_atomic_add(&screen->mapped_vram, -real->base.size);
+         mesa_loge("UNMAP(%"PRIu64") TOTAL(%"PRIu64")", real->base.size, 
screen->mapped_vram);
+      }
       VKSCR(UnmapMemory)(screen->dev, real->mem);
    }
 }
diff --git a/src/gallium/drivers/zink/zink_screen.c 
b/src/gallium/drivers/zink/zink_screen.c
index b5462bcb578..c23f3ca6518 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -84,6 +84,7 @@ zink_debug_options[] = {
    { "shaderdb", ZINK_DEBUG_SHADERDB, "Do stuff to make shader-db work" },
    { "rp", ZINK_DEBUG_RP, "Enable renderpass tracking/optimizations" },
    { "norp", ZINK_DEBUG_NORP, "Disable renderpass tracking/optimizations" },
+   { "map", ZINK_DEBUG_MAP, "Track amount of mapped VRAM" },
    DEBUG_NAMED_VALUE_END
 };
 
diff --git a/src/gallium/drivers/zink/zink_types.h 
b/src/gallium/drivers/zink/zink_types.h
index 88460bd7a4d..29f03a680dd 100644
--- a/src/gallium/drivers/zink/zink_types.h
+++ b/src/gallium/drivers/zink/zink_types.h
@@ -219,6 +219,7 @@ enum zink_debug {
    ZINK_DEBUG_SHADERDB = (1<<8),
    ZINK_DEBUG_RP = (1<<9),
    ZINK_DEBUG_NORP = (1<<10),
+   ZINK_DEBUG_MAP = (1<<11),
 };
 
 
@@ -1319,6 +1320,7 @@ struct zink_screen {
    uint64_t total_video_mem;
    uint64_t clamp_video_mem;
    uint64_t total_mem;
+   uint64_t mapped_vram;
 
    VkInstance instance;
    struct zink_instance_info instance_info;

Reply via email to