egl/surfaceless: Define DRI_SWRastLoader extension when using swrast.

Signed-off-by: David Riley <davidriley@chromium.org>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
[chadv: Dropped spurious hunk]
Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
David Riley
2018-07-17 17:12:04 -07:00
committed by Chad Versace
parent d934492ff9
commit b169b84be6
+21 -4
View File
@@ -260,6 +260,13 @@ static const __DRIimageLoaderExtension image_loader_extension = {
.flushFrontBuffer = surfaceless_flush_front_buffer,
};
static const __DRIswrastLoaderExtension swrast_loader_extension = {
.base = { __DRI_SWRAST_LOADER, 1 },
.getDrawableInfo = NULL,
.putImage = NULL,
.getImage = NULL,
};
#define DRM_RENDER_DEV_NAME "%s/renderD%d"
static const __DRIextension *image_loader_extensions[] = {
@@ -269,6 +276,14 @@ static const __DRIextension *image_loader_extensions[] = {
NULL,
};
static const __DRIextension *swrast_loader_extensions[] = {
&swrast_loader_extension.base,
&image_loader_extension.base,
&image_lookup_extension.base,
&use_invalidate.base,
NULL,
};
static bool
surfaceless_probe_device(_EGLDisplay *dpy, bool swrast)
{
@@ -288,10 +303,13 @@ surfaceless_probe_device(_EGLDisplay *dpy, bool swrast)
if (fd < 0)
continue;
if (swrast)
if (swrast) {
dri2_dpy->driver_name = strdup("kms_swrast");
else
dri2_dpy->loader_extensions = swrast_loader_extensions;
} else {
dri2_dpy->driver_name = loader_get_driver_for_fd(fd);
dri2_dpy->loader_extensions = image_loader_extensions;
}
if (!dri2_dpy->driver_name) {
close(fd);
continue;
@@ -305,6 +323,7 @@ surfaceless_probe_device(_EGLDisplay *dpy, bool swrast)
dri2_dpy->fd = -1;
free(dri2_dpy->driver_name);
dri2_dpy->driver_name = NULL;
dri2_dpy->loader_extensions = NULL;
}
return false;
@@ -338,8 +357,6 @@ dri2_initialize_surfaceless(_EGLDriver *drv, _EGLDisplay *disp)
goto cleanup;
}
dri2_dpy->loader_extensions = image_loader_extensions;
if (!dri2_create_screen(disp)) {
err = "DRI2: failed to create screen";
goto cleanup;