summaryrefslogtreecommitdiff
path: root/src/glx
diff options
context:
space:
mode:
authorEmil Velikov <emil.l.velikov@gmail.com>2014-02-18 03:04:03 +0000
committerEmil Velikov <emil.l.velikov@gmail.com>2014-04-28 19:11:27 +0100
commit9b42fd1772b13b10f397d80d11aa8351e6313085 (patch)
treef9c4028a8105c3aa8a7ec57c261aef753d34a4a1 /src/glx
parentec8ebff342839138bc8141b8a739d9bce6d7ac39 (diff)
dri_interface: Update __DRItexBufferExtensionRec to version 3
With commit e59fa4c46c8("dri2: release texture image.") we updated the extension without bumping the version number. The patch itself added an interface required to enable texture_from_pixmap on certain platforms. The new code was effectively never build, as it depended on __DRI_TEX_BUFFER_VERSION >= 3, which never came to be in upstream mesa. This commit bumps the version number, drops the __DRI_TEX_BUFFER_VERSION checks and resolves all the build conflicts. Additionally it add a version check as egl and dri3, as require version 2 of the extension which does not have the releaseTexBuffer hook. Cc: Juan Zhao <juan.j.zhao@intel.com> Cc: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Diffstat (limited to 'src/glx')
-rw-r--r--src/glx/dri2_glx.c6
-rw-r--r--src/glx/dri3_glx.c3
-rw-r--r--src/glx/drisw_glx.c12
3 files changed, 8 insertions, 13 deletions
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 79f6ecc9933..49659081221 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -1032,17 +1032,14 @@ dri2_bind_tex_image(Display * dpy,
static void
dri2_release_tex_image(Display * dpy, GLXDrawable drawable, int buffer)
{
-#if __DRI_TEX_BUFFER_VERSION >= 3
struct glx_context *gc = __glXGetCurrentContext();
struct dri2_context *pcp = (struct dri2_context *) gc;
__GLXDRIdrawable *base = GetGLXDRIDrawable(dpy, drawable);
struct glx_display *dpyPriv = __glXInitialize(dpy);
struct dri2_drawable *pdraw = (struct dri2_drawable *) base;
- struct dri2_display *pdp =
- (struct dri2_display *) dpyPriv->dri2Display;
struct dri2_screen *psc;
- if (pdraw != NULL) {
+ if (dpyPriv != NULL && pdraw != NULL) {
psc = (struct dri2_screen *) base->psc;
if (psc->texBuffer->base.version >= 3 &&
@@ -1052,7 +1049,6 @@ dri2_release_tex_image(Display * dpy, GLXDrawable drawable, int buffer)
pdraw->driDrawable);
}
}
-#endif
}
static const struct glx_context_vtable dri2_context_vtable = {
diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
index b7dac8e67b5..653b1e5c5f6 100644
--- a/src/glx/dri3_glx.c
+++ b/src/glx/dri3_glx.c
@@ -1527,7 +1527,8 @@ dri3_release_tex_image(Display * dpy, GLXDrawable drawable, int buffer)
if (pdraw != NULL) {
psc = (struct dri3_screen *) base->psc;
- if (psc->texBuffer->releaseTexBuffer)
+ if (psc->texBuffer->base.version >= 3 &&
+ psc->texBuffer->releaseTexBuffer != NULL)
(*psc->texBuffer->releaseTexBuffer) (pcp->driContext,
pdraw->base.textureTarget,
pdraw->driDrawable);
diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c
index 33d347a6e16..a77be4e429a 100644
--- a/src/glx/drisw_glx.c
+++ b/src/glx/drisw_glx.c
@@ -342,16 +342,15 @@ drisw_bind_tex_image(Display * dpy,
static void
drisw_release_tex_image(Display * dpy, GLXDrawable drawable, int buffer)
{
-#if __DRI_TEX_BUFFER_VERSION >= 3
struct glx_context *gc = __glXGetCurrentContext();
- struct dri2_context *pcp = (struct dri2_context *) gc;
+ struct drisw_context *pcp = (struct drisw_context *) gc;
__GLXDRIdrawable *base = GetGLXDRIDrawable(dpy, drawable);
struct glx_display *dpyPriv = __glXInitialize(dpy);
- struct dri2_drawable *pdraw = (struct dri2_drawable *) base;
- struct dri2_screen *psc;
+ struct drisw_drawable *pdraw = (struct drisw_drawable *) base;
+ struct drisw_screen *psc;
- if (pdraw != NULL) {
- psc = (struct dri2_screen *) base->psc;
+ if (dpyPriv != NULL && pdraw != NULL) {
+ psc = (struct drisw_screen *) base->psc;
if (!psc->texBuffer)
return;
@@ -363,7 +362,6 @@ drisw_release_tex_image(Display * dpy, GLXDrawable drawable, int buffer)
pdraw->driDrawable);
}
}
-#endif
}
static const struct glx_context_vtable drisw_context_vtable = {