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