zink: store total memory size on zink_screen
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 28 Sep 2020 14:50:23 +0000 (10:50 -0400)
committerMarge Bot <eric+marge@anholt.net>
Mon, 1 Mar 2021 19:36:26 +0000 (19:36 +0000)
need this for oom handling

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9274>

src/gallium/drivers/zink/zink_screen.c
src/gallium/drivers/zink/zink_screen.h

index 7624c82..0f76be2 100644 (file)
@@ -82,7 +82,7 @@ zink_get_name(struct pipe_screen *pscreen)
    return buf;
 }
 
-static int
+static VkDeviceSize
 get_video_mem(struct zink_screen *screen)
 {
    VkDeviceSize size = 0;
@@ -91,7 +91,7 @@ get_video_mem(struct zink_screen *screen)
           VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)
          size += screen->info.mem_props.memoryHeaps[i].size;
    }
-   return (int)(size >> 20);
+   return size;
 }
 
 static void
@@ -401,7 +401,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
    case PIPE_CAP_ACCELERATED:
       return 1;
    case PIPE_CAP_VIDEO_MEMORY:
-      return get_video_mem(screen);
+      return get_video_mem(screen) >> 20;
    case PIPE_CAP_UMA:
       return screen->info.props.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
 
@@ -1330,6 +1330,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config)
       screen->driconf.dual_color_blend_by_location = driQueryOptionb(config->options, "dual_color_blend_by_location");
 #endif
 
+   screen->total_mem = get_video_mem(screen);
+
    return screen;
 
 fail:
index 359c1d2..169c350 100644 (file)
@@ -60,6 +60,8 @@ struct zink_screen {
 
    unsigned shader_id;
 
+   uint64_t total_mem;
+
    VkInstance instance;
    struct zink_instance_info instance_info;