[Mesa-dev] [PATCH v2] virgl: disable virgl when no 3D for virtio gpu.

Lepton Wu lepton at chromium.org
Mon Apr 16 20:25:47 UTC 2018


On Thu, Apr 5, 2018 at 12:38 PM, Lepton Wu <lepton at chromium.org> wrote:
> If users are running mesa under old version of qemu or have turned off
> GL at runtime, virtio gpu driver actually doesn't work. Adds a detection
> here so mesa can fall back to software rendering.
>
> v2:
>  - move detection from loader to virgl (Ilia, Emil)
Ping. Thanks.
>
> Signed-off-by: Lepton Wu <lepton at chromium.org>
> ---
>  src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
> index cf3c3bac4b..4198ed7feb 100644
> --- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
> +++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
> @@ -800,8 +800,15 @@ virgl_drm_winsys_create(int drmFD)
>  {
>     struct virgl_drm_winsys *qdws;
>     int ret;
> +   int gl = 0;
>     struct drm_virtgpu_getparam getparam = {0};
>
> +   getparam.param = VIRTGPU_PARAM_3D_FEATURES;
> +   getparam.value = (uint64_t)(uintptr_t)≷
> +   ret = drmIoctl(drmFD, DRM_IOCTL_VIRTGPU_GETPARAM, &getparam);
> +   if (ret < 0 || !gl)
> +      return NULL;
> +
>     qdws = CALLOC_STRUCT(virgl_drm_winsys);
>     if (!qdws)
>        return NULL;
> @@ -914,6 +921,10 @@ virgl_drm_screen_create(int fd)
>        int dup_fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
>
>        vws = virgl_drm_winsys_create(dup_fd);
> +      if (!vws) {
> +         close(dup_fd);
> +         goto unlock;
> +      }
>
>        pscreen = virgl_create_screen(vws);
>        if (pscreen) {
> --
> 2.17.0.484.g0c8726318c-goog
>


More information about the mesa-dev mailing list