From 89f80c2185de42191a1658dbdcbce9cbd9a98058 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Thu, 14 Aug 2014 21:15:06 +0100 Subject: [PATCH] gallium/softpipe/llvmpipe: handle query_renderer caps Both report 0xffffffff as both vendor and device id, and the maximum amount of system memory as video memory. v2: Use aux helper os_get_total_physical_memory(). Cc: Brian Paul Signed-off-by: Emil Velikov --- src/gallium/drivers/llvmpipe/lp_screen.c | 19 +++++++++++++++++++ src/gallium/drivers/softpipe/sp_screen.c | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index f4f325709f7..fe52a41107f 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -37,6 +37,7 @@ #include "draw/draw_context.h" #include "gallivm/lp_bld_type.h" +#include "os/os_misc.h" #include "os/os_time.h" #include "lp_texture.h" #include "lp_fence.h" @@ -252,6 +253,24 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 0; case PIPE_CAP_FAKE_SW_MSAA: return 1; + + case PIPE_CAP_VENDOR_ID: + return 0xFFFFFFFF; + case PIPE_CAP_DEVICE_ID: + return 0xFFFFFFFF; + case PIPE_CAP_ACCELERATED: + return 0; + case PIPE_CAP_VIDEO_MEMORY: { + /* XXX: Do we want to return the full amount fo system memory ? */ + uint64_t system_memory; + + if (!os_get_total_physical_memory(&system_memory)) + return 0; + + return (int)(system_memory >> 20); + } + case PIPE_CAP_UMA: + return 0; } /* should only get here on unhandled cases */ debug_printf("Unexpected PIPE_CAP %d query\n", param); diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 5e2640dcbb1..ade68a83cda 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -30,6 +30,7 @@ #include "util/u_format.h" #include "util/u_format_s3tc.h" #include "util/u_video.h" +#include "os/os_misc.h" #include "os/os_time.h" #include "pipe/p_defines.h" #include "pipe/p_screen.h" @@ -203,6 +204,24 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 0; case PIPE_CAP_DRAW_INDIRECT: return 1; + + case PIPE_CAP_VENDOR_ID: + return 0xFFFFFFFF; + case PIPE_CAP_DEVICE_ID: + return 0xFFFFFFFF; + case PIPE_CAP_ACCELERATED: + return 0; + case PIPE_CAP_VIDEO_MEMORY: { + /* XXX: Do we want to return the full amount fo system memory ? */ + uint64_t system_memory; + + if (!os_get_total_physical_memory(&system_memory)) + return 0; + + return (int)(system_memory >> 20); + } + case PIPE_CAP_UMA: + return 0; } /* should only get here on unhandled cases */ debug_printf("Unexpected PIPE_CAP %d query\n", param); -- 2.30.2