Mesa (main): virgl: return -1 for PIPE_CAP_ACCELERATED
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jun 6 19:05:07 UTC 2022
Module: Mesa
Branch: main
Commit: e8658adaa8dd5fecebc88eaf9d92108c32194455
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e8658adaa8dd5fecebc88eaf9d92108c32194455
Author: Qiang Yu <yuq825 at gmail.com>
Date: Sat May 21 20:55:00 2022 +0800
virgl: return -1 for PIPE_CAP_ACCELERATED
There's no way currently in virgl to determine whether it's running
above CPU or GPU. This info will be used to disable HW SELECT.
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Signed-off-by: Qiang Yu <yuq825 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15765>
---
docs/gallium/screen.rst | 5 ++++-
src/gallium/drivers/virgl/virgl_screen.c | 2 +-
src/gallium/frontends/dri/dri_query_renderer.c | 4 ++--
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/docs/gallium/screen.rst b/docs/gallium/screen.rst
index 71239a5bc56..1309705db32 100644
--- a/docs/gallium/screen.rst
+++ b/docs/gallium/screen.rst
@@ -256,7 +256,10 @@ The integer capabilities:
not available one should return 0xFFFFFFFF.
* ``PIPE_CAP_DEVICE_ID``: The device ID (PCI ID) of the underlying hardware.
0xFFFFFFFF if not available.
-* ``PIPE_CAP_ACCELERATED``: Whether the renderer is hardware accelerated.
+* ``PIPE_CAP_ACCELERATED``: Whether the renderer is hardware accelerated. 0 means
+ not accelerated (ie. CPU rendering), 1 means accelerated (ie. GPU rendering),
+ -1 means unknown (ie. an API translation driver which doesn't known what kind of
+ hardware it's running above).
* ``PIPE_CAP_VIDEO_MEMORY``: The amount of video memory in megabytes.
* ``PIPE_CAP_UMA``: If the device has a unified memory architecture or on-card
memory and GART.
diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
index 135ccf2fd03..b85b8a33d44 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -330,7 +330,7 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
case PIPE_CAP_DEVICE_ID:
return 0x1010;
case PIPE_CAP_ACCELERATED:
- return 1;
+ return -1; /* -1 means unknown */
case PIPE_CAP_UMA:
case PIPE_CAP_VIDEO_MEMORY:
if (vscreen->caps.caps.v2.capability_bits_v2 & VIRGL_CAP_V2_VIDEO_MEMORY)
diff --git a/src/gallium/frontends/dri/dri_query_renderer.c b/src/gallium/frontends/dri/dri_query_renderer.c
index 11790fd0f45..7b4870cdb8d 100644
--- a/src/gallium/frontends/dri/dri_query_renderer.c
+++ b/src/gallium/frontends/dri/dri_query_renderer.c
@@ -98,8 +98,8 @@ dri2_query_renderer_integer(__DRIscreen *_screen, int param,
return 0;
case __DRI2_RENDERER_ACCELERATED:
value[0] =
- (unsigned int)screen->base.screen->get_param(screen->base.screen,
- PIPE_CAP_ACCELERATED);
+ (unsigned int)!!screen->base.screen->get_param(screen->base.screen,
+ PIPE_CAP_ACCELERATED);
return 0;
case __DRI2_RENDERER_VIDEO_MEMORY: {
More information about the mesa-commit
mailing list