From 42e797b1395f8be582ad5f42f29ff420e45fa5bf Mon Sep 17 00:00:00 2001 From: Ian Forbes Date: Thu, 4 Dec 2025 13:00:45 -0600 Subject: [PATCH] svga: Report "VRAM" more accurately While the concept of "VRAM" is somewhat nebulous on SVGA devices this is the value above which some performance degradation is likely to occur. Signed-off-by: Ian Forbes Part-of: --- src/gallium/drivers/svga/svga_screen.c | 2 +- src/gallium/drivers/svga/svga_winsys.h | 4 ++++ src/gallium/winsys/svga/drm/vmw_screen.c | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 8f6f327bd84..0d55621de53 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -527,7 +527,7 @@ svga_init_screen_caps(struct svga_screen *svgascreen) caps->vendor_id = 0x15ad; /* VMware Inc. */ caps->device_id = sws->device_id ? sws->device_id : 0x0405; /* assume SVGA II */ - caps->video_memory = 1; /* XXX: Query the host ? */ + caps->video_memory = sws->max_mob_memory_mib ? sws->max_mob_memory_mib : 1; caps->copy_between_compressed_and_plain_formats = sws->have_vgpu10; caps->doubles = sws->have_sm5; caps->uma = false; diff --git a/src/gallium/drivers/svga/svga_winsys.h b/src/gallium/drivers/svga/svga_winsys.h index 95a509d95c5..22598037eb1 100644 --- a/src/gallium/drivers/svga/svga_winsys.h +++ b/src/gallium/drivers/svga/svga_winsys.h @@ -707,6 +707,10 @@ struct svga_winsys_screen /** Do we support coherent surface memory? */ bool have_coherent; + + /** Max MOB Memory in MiB */ + uint32_t max_mob_memory_mib; + /** * Create and define a GB shader. */ diff --git a/src/gallium/winsys/svga/drm/vmw_screen.c b/src/gallium/winsys/svga/drm/vmw_screen.c index 229518acc1c..c42a6948738 100644 --- a/src/gallium/winsys/svga/drm/vmw_screen.c +++ b/src/gallium/winsys/svga/drm/vmw_screen.c @@ -138,6 +138,7 @@ vmw_winsys_create( int fd ) goto out_no_ioctl; vws->base.have_gb_dma = !vws->force_coherent; + vws->base.max_mob_memory_mib = vws->ioctl.max_mob_memory >> 20; vws->base.need_to_rebind_resources = false; vws->base.have_transfer_from_buffer_cmd = vws->base.have_vgpu10; vws->base.have_constant_buffer_offset_cmd =