From ad5f46ff8c43ef639f65bf20ff9d859dc3dac722 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sat, 6 Apr 2024 11:47:51 -0400 Subject: [PATCH] asahi: implement PIPE_CAP_QUERY_MEMORY_INFO Steam uses it. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/asahi/agx_pipe.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index 22ebda24089..b0f63daed74 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -1532,6 +1532,21 @@ agx_get_name(struct pipe_screen *pscreen) return dev->name; } +static void +agx_query_memory_info(struct pipe_screen *pscreen, + struct pipe_memory_info *info) +{ + uint64_t mem_B = 0; + os_get_total_physical_memory(&mem_B); + + uint64_t mem_kB = mem_B / 1024; + + *info = (struct pipe_memory_info){ + .total_device_memory = mem_kB, + .avail_device_memory = mem_kB, + }; +} + static int agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) { @@ -1566,6 +1581,7 @@ agx_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_QUERY_TIMESTAMP: case PIPE_CAP_QUERY_TIME_ELAPSED: case PIPE_CAP_QUERY_SO_OVERFLOW: + case PIPE_CAP_QUERY_MEMORY_INFO: case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX: case PIPE_CAP_ANISOTROPIC_FILTER: @@ -2233,6 +2249,7 @@ agx_screen_create(int fd, struct renderonly *ro, screen->get_paramf = agx_get_paramf; screen->is_format_supported = agx_is_format_supported; screen->query_dmabuf_modifiers = agx_query_dmabuf_modifiers; + screen->query_memory_info = agx_query_memory_info; screen->is_dmabuf_modifier_supported = agx_is_dmabuf_modifier_supported; screen->context_create = agx_create_context; screen->resource_from_handle = agx_resource_from_handle;