From 6a3e3402888c8da9d1ad621a9ce3088a81e77995 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 28 Sep 2020 10:50:23 -0400 Subject: [PATCH] zink: store total memory size on zink_screen need this for oom handling Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/zink/zink_screen.c | 8 +++++--- src/gallium/drivers/zink/zink_screen.h | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 7624c82..0f76be2 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -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: diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index 359c1d2..169c350 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -60,6 +60,8 @@ struct zink_screen { unsigned shader_id; + uint64_t total_mem; + VkInstance instance; struct zink_instance_info instance_info; -- 2.7.4