X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fegl%2Fdrivers%2Fdri2%2Fplatform_surfaceless.c;h=fd6ec6e602d3ebede8a49e32e0bad6006944737d;hb=a7ecf78b900c28aafdc1cd1e1a4117feb30a66c9;hp=4fe364ab22e7b24e1db2bbeab36ac1c8b91833c6;hpb=7ad1a05c8314b4b6887f0a23892fa4f7fbca9720;p=mesa.git diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c index 4fe364ab22e..fd6ec6e602d 100644 --- a/src/egl/drivers/dri2/platform_surfaceless.c +++ b/src/egl/drivers/dri2/platform_surfaceless.c @@ -124,7 +124,8 @@ dri2_surfaceless_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type, return NULL; } - if (!dri2_init_surface(&dri2_surf->base, disp, type, conf, attrib_list, false)) + if (!dri2_init_surface(&dri2_surf->base, disp, type, conf, attrib_list, + false, NULL)) goto cleanup_surface; config = dri2_get_dri_config(dri2_conf, type, @@ -135,13 +136,8 @@ dri2_surfaceless_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type, goto cleanup_surface; } - dri2_surf->dri_drawable = - dri2_dpy->image_driver->createNewDrawable(dri2_dpy->dri_screen, config, - dri2_surf); - if (dri2_surf->dri_drawable == NULL) { - _eglError(EGL_BAD_ALLOC, "image->createNewDrawable"); + if (!dri2_create_drawable(dri2_dpy, config, dri2_surf, dri2_surf)) goto cleanup_surface; - } if (conf->RedSize == 5) dri2_surf->visual = __DRI_IMAGE_FORMAT_RGB565; @@ -301,8 +297,13 @@ surfaceless_probe_device(_EGLDisplay *disp, bool swrast) char *driver_name = loader_get_driver_for_fd(dri2_dpy->fd); if (swrast) { - /* Use kms swrast only with vgem */ - if (strcmp(driver_name, "vgem") == 0) + /* Use kms swrast only with vgem / virtio_gpu. + * virtio-gpu fallbacks to software rendering when 3D features + * are unavailable since 6c5ab, and kms_swrast is more + * feature complete than swrast. + */ + if (strcmp(driver_name, "vgem") == 0 || + strcmp(driver_name, "virtio_gpu") == 0) dri2_dpy->driver_name = strdup("kms_swrast"); free(driver_name); } else {