blob: a1f408f35caa3f4426c5a0016a32f95fb77657e8 [file] [log] [blame]
From 3ad757fd28b38cfb9abc8fa26625eaf4d87c0647 Mon Sep 17 00:00:00 2001
From: Zach Reizner <zachr@chromium.org>
Date: Wed, 21 Jan 2015 13:23:58 -0800
Subject: [PATCH] CHROMIUM: egl/dri2: add support for image, config query, and
robustness extensions
This patch enables exposing image, config query and robustness
extensions if swrast driver is used, to improve feature completeness of
software rendering and make it usable by Freon running in a virtual
machine. In addition, swrast is now used as a fallback for
platform_surfaceless if no other driver can be used.
BUG=chromium:394868
TEST=None
Signed-off-by: Prince Agyeman <prince.agyeman@intel.com>
Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Signed-off-by: James Ausmus <james.ausmus@intel.com>
Signed-off-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org>
---
src/egl/drivers/dri2/egl_dri2.c | 1 +
src/egl/drivers/dri2/platform_surfaceless.c | 10 ++++++++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index cf26242702..748a08afef 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -432,6 +432,7 @@ static const struct dri2_extension_match optional_core_extensions[] = {
{ __DRI2_FENCE, 1, offsetof(struct dri2_egl_display, fence) },
{ __DRI2_RENDERER_QUERY, 1, offsetof(struct dri2_egl_display, rendererQuery) },
{ __DRI2_INTEROP, 1, offsetof(struct dri2_egl_display, interop) },
+ { __DRI_IMAGE, 1, offsetof(struct dri2_egl_display, image) },
{ NULL, 0, 0 }
};
diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c
index 1091b4febd..ab4e30410d 100644
--- a/src/egl/drivers/dri2/platform_surfaceless.c
+++ b/src/egl/drivers/dri2/platform_surfaceless.c
@@ -310,8 +310,14 @@ dri2_initialize_surfaceless(_EGLDriver *drv, _EGLDisplay *disp)
}
if (!driver_loaded) {
- err = "DRI2: failed to load driver";
- goto cleanup;
+ dri2_dpy->driver_name = strdup("swrast");
+ if (!dri2_load_driver_swrast(disp))
+ {
+ err = "DRI2: failed to load driver";
+ free(dri2_dpy->driver_name);
+ dri2_dpy->driver_name = NULL;
+ goto cleanup;
+ }
}
dri2_dpy->loader_extensions = image_loader_extensions;
--
2.12.2