summaryrefslogtreecommitdiffstats
path: root/abs/core/mesa/0001-loader-dri3-add-get_dri_screen-to-the-vtable.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/mesa/0001-loader-dri3-add-get_dri_screen-to-the-vtable.patch')
-rw-r--r--abs/core/mesa/0001-loader-dri3-add-get_dri_screen-to-the-vtable.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/abs/core/mesa/0001-loader-dri3-add-get_dri_screen-to-the-vtable.patch b/abs/core/mesa/0001-loader-dri3-add-get_dri_screen-to-the-vtable.patch
new file mode 100644
index 0000000..8f8c536
--- /dev/null
+++ b/abs/core/mesa/0001-loader-dri3-add-get_dri_screen-to-the-vtable.patch
@@ -0,0 +1,91 @@
+From 0247e5ee3edd546b8598082d5b45d110f61853d0 Mon Sep 17 00:00:00 2001
+From: Martin Peres <martin.peres@linux.intel.com>
+Date: Thu, 6 Oct 2016 17:07:22 +0300
+Subject: [PATCH 1/2] loader/dri3: add get_dri_screen() to the vtable
+
+This allows querying the current active screen from the
+loader's common code.
+
+Cc: mesa-stable@lists.freedesktop.org
+Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
+Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
+---
+ src/egl/drivers/dri2/platform_x11_dri3.c | 12 ++++++++++++
+ src/glx/dri3_glx.c | 11 +++++++++++
+ src/loader/loader_dri3_helper.h | 1 +
+ 3 files changed, 24 insertions(+)
+
+diff --git a/src/egl/drivers/dri2/platform_x11_dri3.c b/src/egl/drivers/dri2/platform_x11_dri3.c
+index 31649fe..d93f5bc 100644
+--- a/src/egl/drivers/dri2/platform_x11_dri3.c
++++ b/src/egl/drivers/dri2/platform_x11_dri3.c
+@@ -103,6 +103,17 @@ egl_dri3_get_dri_context(struct loader_dri3_drawable *draw)
+ return dri2_ctx->dri_context;
+ }
+
++static __DRIscreen *
++egl_dri3_get_dri_screen(struct loader_dri3_drawable *draw)
++{
++ _EGLContext *ctx = _eglGetCurrentContext();
++ struct dri2_egl_context *dri2_ctx;
++ if (!ctx)
++ return NULL;
++ dri2_ctx = dri2_egl_context(ctx);
++ return dri2_egl_display(dri2_ctx->base.Resource.Display)->dri_screen;
++}
++
+ static void
+ egl_dri3_flush_drawable(struct loader_dri3_drawable *draw, unsigned flags)
+ {
+@@ -119,6 +130,7 @@ static struct loader_dri3_vtable egl_dri3_vtable = {
+ .set_drawable_size = egl_dri3_set_drawable_size,
+ .in_current_context = egl_dri3_in_current_context,
+ .get_dri_context = egl_dri3_get_dri_context,
++ .get_dri_screen = egl_dri3_get_dri_screen,
+ .flush_drawable = egl_dri3_flush_drawable,
+ .show_fps = NULL,
+ };
+diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
+index 90d7bba..51b6b1c 100644
+--- a/src/glx/dri3_glx.c
++++ b/src/glx/dri3_glx.c
+@@ -132,6 +132,16 @@ glx_dri3_get_dri_context(struct loader_dri3_drawable *draw)
+ return (gc != &dummyContext) ? dri3Ctx->driContext : NULL;
+ }
+
++static __DRIscreen *
++glx_dri3_get_dri_screen(struct loader_dri3_drawable *draw)
++{
++ struct glx_context *gc = __glXGetCurrentContext();
++ struct dri3_context *pcp = (struct dri3_context *) gc;
++ struct dri3_screen *psc = (struct dri3_screen *) pcp->base.psc;
++
++ return (gc != &dummyContext && psc) ? psc->driScreen : NULL;
++}
++
+ static void
+ glx_dri3_flush_drawable(struct loader_dri3_drawable *draw, unsigned flags)
+ {
+@@ -169,6 +179,7 @@ static struct loader_dri3_vtable glx_dri3_vtable = {
+ .set_drawable_size = glx_dri3_set_drawable_size,
+ .in_current_context = glx_dri3_in_current_context,
+ .get_dri_context = glx_dri3_get_dri_context,
++ .get_dri_screen = glx_dri3_get_dri_screen,
+ .flush_drawable = glx_dri3_flush_drawable,
+ .show_fps = glx_dri3_show_fps,
+ };
+diff --git a/src/loader/loader_dri3_helper.h b/src/loader/loader_dri3_helper.h
+index 5b8fd1d..658e190 100644
+--- a/src/loader/loader_dri3_helper.h
++++ b/src/loader/loader_dri3_helper.h
+@@ -103,6 +103,7 @@ struct loader_dri3_vtable {
+ void (*set_drawable_size)(struct loader_dri3_drawable *, int, int);
+ bool (*in_current_context)(struct loader_dri3_drawable *);
+ __DRIcontext *(*get_dri_context)(struct loader_dri3_drawable *);
++ __DRIscreen *(*get_dri_screen)(struct loader_dri3_drawable *);
+ void (*flush_drawable)(struct loader_dri3_drawable *, unsigned);
+ void (*show_fps)(struct loader_dri3_drawable *, uint64_t);
+ };
+--
+2.10.0
+