Mesa (master): Revert "i965: Enable flush control"
Module: Mesa Branch: master Commit: f2a5d27ce2c7c4e64afb5fa46005fe522268766c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f2a5d27ce2c7c4e64afb5fa46005fe522268766c Author: Adam Jackson Date: Mon Jan 15 13:47:01 2018 -0500 Revert "i965: Enable flush control" This reverts commit 6ce9006d76c050663af0be61cc88c3215d6f8cea. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104490 Signed-off-by: Adam Jackson --- src/mesa/drivers/dri/i965/brw_context.c | 20 +--- src/mesa/drivers/dri/i965/intel_screen.c | 2 -- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index f765cff76b..c30eae420c 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -860,9 +860,7 @@ brwCreateContext(gl_api api, return false; } - if (ctx_config->attribute_mask & - ~(__DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY | - __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR)) { + if (ctx_config->attribute_mask & ~__DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) { *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; return false; } @@ -871,20 +869,6 @@ brwCreateContext(gl_api api, ((ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) && ctx_config->reset_strategy != __DRI_CTX_RESET_NO_NOTIFICATION); - GLenum release_behavior = GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH; - if (ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR) { - switch (ctx_config->release_behavior) { - case __DRI_CTX_RELEASE_BEHAVIOR_NONE: - release_behavior = GL_NONE; - break; - case __DRI_CTX_RELEASE_BEHAVIOR_FLUSH: - break; - default: - *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; - return false; - } - } - struct brw_context *brw = rzalloc(NULL, struct brw_context); if (!brw) { fprintf(stderr, "%s: failed to alloc context\n", __func__); @@ -1064,8 +1048,6 @@ brwCreateContext(gl_api api, ctx->Const.RobustAccess = GL_TRUE; } - ctx->Const.ContextReleaseBehavior = release_behavior; - if (INTEL_DEBUG & DEBUG_SHADER_TIME) brw_init_shader_time(brw); diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 08032c9b22..190d8ecb11 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -1503,7 +1503,6 @@ static const __DRIextension *screenExtensions[] = { &intelRendererQueryExtension.base, &dri2ConfigQueryExtension.base, &dri2NoErrorExtension.base, -&dri2FlushControlExtension.base, NULL }; @@ -1514,7 +1513,6 @@ static const __DRIextension *intelRobustScreenExtensions[] = { &intelImageExtension.base, &intelRendererQueryExtension.base, &dri2ConfigQueryExtension.base, -&dri2FlushControlExtension.base, &dri2Robustness.base, &dri2NoErrorExtension.base, NULL ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): Revert "gallium/dri2: Enable {GLX_ARB,EGL_KHR}_context_flush_control"
Module: Mesa Branch: master Commit: 138f4e380520c748cd9f2143a1c6d8ef6dc77ff9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=138f4e380520c748cd9f2143a1c6d8ef6dc77ff9 Author: Adam Jackson Date: Mon Jan 15 13:47:13 2018 -0500 Revert "gallium/dri2: Enable {GLX_ARB,EGL_KHR}_context_flush_control" This reverts commit 0d044351b7043cd0bc94c1cb9b7a2213f8054414. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104490 Signed-off-by: Adam Jackson --- src/gallium/state_trackers/dri/dri2.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index d073141952..415002d2cd 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -2003,7 +2003,6 @@ static const __DRIextension *dri_screen_extensions[] = { &dri2FenceExtension.base, &dri2InteropExtension.base, &dri2NoErrorExtension.base, - &dri2FlushControlExtension.base, NULL }; @@ -2018,7 +2017,6 @@ static const __DRIextension *dri_robust_screen_extensions[] = { &dri2InteropExtension.base, &dri2Robustness.base, &dri2NoErrorExtension.base, - &dri2FlushControlExtension.base, NULL }; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): Revert "docs: Mark GLX_ARB_context_flush_control done"
Module: Mesa Branch: master Commit: 1cbcd70b64860b7e23202919229595b18cd4fbb6 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1cbcd70b64860b7e23202919229595b18cd4fbb6 Author: Adam Jackson Date: Mon Jan 15 13:47:24 2018 -0500 Revert "docs: Mark GLX_ARB_context_flush_control done" This reverts commit d547e18184978affd95a72dc524ca648efbe9812. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104490 Signed-off-by: Adam Jackson --- docs/features.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index a5f34edd41..980140f60d 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -334,7 +334,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve GL_OES_texture_half_float_linear DONE (freedreno, i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) GL_OES_texture_view not started - based on GL_ARB_texture_view GL_OES_viewport_array DONE (i965, nvc0, radeonsi) - GLX_ARB_context_flush_control DONE + GLX_ARB_context_flush_control not started GLX_ARB_robustness_application_isolation not started GLX_ARB_robustness_share_group_isolation not started ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): link mesautil with pthreads
Module: Mesa Branch: master Commit: 23ce168048698eeea3df6bb8c9de5be3ca4784cd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=23ce168048698eeea3df6bb8c9de5be3ca4784cd Author: Igor Gnatenko Date: Mon Jan 1 22:49:00 2018 +0100 link mesautil with pthreads ../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_setname': /builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:66: undefined reference to `pthread_setname_np' ../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `thrd_join': /builddir/build/BUILD/mesa-17.3.1/src/util/../../include/c11/threads_posix.h:336: undefined reference to `pthread_join' ../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_create': /builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:48: undefined reference to `pthread_sigmask' ../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `thrd_create': /builddir/build/BUILD/mesa-17.3.1/src/util/../../include/c11/threads_posix.h:296: undefined reference to `pthread_create' ../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_create': /builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:50: undefined reference to `pthread_sigmask' /builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:50: undefined reference to `pthread_sigmask' ../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `call_once': /builddir/build/BUILD/mesa-17.3.1/src/util/../../include/c11/threads_posix.h:96: undefined reference to `pthread_once' ../../src/util/.libs/libmesautil.a(libmesautil_la-u_queue.o): In function `u_thread_get_time_nano': /builddir/build/BUILD/mesa-17.3.1/src/util/../../src/util/u_thread.h:84: undefined reference to `pthread_getcpuclockid' collect2: error: ld returned 1 exit status Reviewed-by: Adam Jackson Signed-off-by: Igor Gnatenko --- src/util/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/util/Makefile.am b/src/util/Makefile.am index a5241ad27b..633907b9fd 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -31,6 +31,7 @@ noinst_LTLIBRARIES = \ libxmlconfig.la AM_CPPFLAGS = \ + $(PTHREAD_CFLAGS) \ -I$(top_srcdir)/include libmesautil_la_CPPFLAGS = \ @@ -50,6 +51,7 @@ libmesautil_la_SOURCES = \ $(MESA_UTIL_GENERATED_FILES) libmesautil_la_LIBADD = \ + $(PTHREAD_LIBS) \ $(CLOCK_LIB) \ $(ZLIB_LIBS) \ $(LIBATOMIC_LIBS) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Prepare driFetchDrawable for no-config contexts
Module: Mesa Branch: master Commit: a48a6b8a400e6e92961cf7b7b4c287e8e9875f39 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a48a6b8a400e6e92961cf7b7b4c287e8e9875f39 Author: Adam Jackson Date: Tue Nov 14 15:13:05 2017 -0500 glx: Prepare driFetchDrawable for no-config contexts When we look up the DRI drawable state we need to associate an fbconfig with the drawable. With GLX_EXT_no_config_context we can no longer infer that from the context and must instead query the server. Signed-off-by: Adam Jackson Reviewed-by: Ian Romanick --- src/glx/dri_common.c | 22 -- src/glx/glx_pbuffer.c | 12 ++-- src/glx/glxclient.h | 4 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 3b82309fa2..ab5d6c5bc0 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -396,12 +396,25 @@ driDestroyConfigs(const __DRIconfig **configs) free(configs); } +static struct glx_config * +driInferDrawableConfig(struct glx_screen *psc, GLXDrawable draw) +{ + unsigned int fbconfig = 0; + + if (__glXGetDrawableAttribute(psc->dpy, draw, GLX_FBCONFIG_ID, &fbconfig)) { + return glx_config_find_fbconfig(psc->configs, fbconfig); + } + + return NULL; +} + _X_HIDDEN __GLXDRIdrawable * driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable) { struct glx_display *const priv = __glXInitialize(gc->psc->dpy); __GLXDRIdrawable *pdraw; struct glx_screen *psc; + struct glx_config *config = gc->config; if (priv == NULL) return NULL; @@ -418,8 +431,13 @@ driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable) return pdraw; } - pdraw = psc->driScreen->createDrawable(psc, glxDrawable, - glxDrawable, gc->config); + if (config == NULL) + config = driInferDrawableConfig(gc->psc, glxDrawable); + if (config == NULL) + return NULL; + + pdraw = psc->driScreen->createDrawable(psc, glxDrawable, glxDrawable, + config); if (pdraw == NULL) { ErrorMessageF("failed to create drawable\n"); diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c index 933b5d9ecd..fd3327f120 100644 --- a/src/glx/glx_pbuffer.c +++ b/src/glx/glx_pbuffer.c @@ -272,9 +272,9 @@ DestroyDRIDrawable(Display *dpy, GLXDrawable drawable, int destroy_xdrawable) * 10. Given that, this routine should try to use an array on the stack to * capture the reply rather than always calling Xmalloc. */ -static int -GetDrawableAttribute(Display * dpy, GLXDrawable drawable, - int attribute, unsigned int *value) +int +__glXGetDrawableAttribute(Display * dpy, GLXDrawable drawable, + int attribute, unsigned int *value) { struct glx_display *priv; xGLXGetDrawableAttributesReply reply; @@ -825,7 +825,7 @@ glXQueryDrawable(Display * dpy, GLXDrawable drawable, } } #else - GetDrawableAttribute(dpy, drawable, attribute, value); + __glXGetDrawableAttribute(dpy, drawable, attribute, value); #endif } @@ -838,7 +838,7 @@ _GLX_PUBLIC int glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable, int attribute, unsigned int *value) { - return GetDrawableAttribute(dpy, drawable, attribute, value); + return __glXGetDrawableAttribute(dpy, drawable, attribute, value); } #endif @@ -909,7 +909,7 @@ glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask) * we could just type-cast the pointer, but why? */ - GetDrawableAttribute(dpy, drawable, GLX_EVENT_MASK_SGIX, &value); + __glXGetDrawableAttribute(dpy, drawable, GLX_EVENT_MASK_SGIX, &value); *mask = value; #endif } diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h index 0d29e5635e..f3a36cf106 100644 --- a/src/glx/glxclient.h +++ b/src/glx/glxclient.h @@ -841,6 +841,10 @@ indirect_create_context_attribs(struct glx_screen *base, const uint32_t *attribs, unsigned *error); + +extern int __glXGetDrawableAttribute(Display * dpy, GLXDrawable drawable, + int attribute, unsigned int *value); + #ifdef __cplusplus } #endif ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Simplify some dummy vtable interactions
Module: Mesa Branch: master Commit: bcb15bee52aff0faae37d4b933f462735ccb918b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bcb15bee52aff0faae37d4b933f462735ccb918b Author: Adam Jackson Date: Tue Nov 14 15:13:01 2017 -0500 glx: Simplify some dummy vtable interactions The dummy vtable has these slots as NULL already, no need to check for the dummy context explicitly. Signed-off-by: Adam Jackson Reviewed-by: Emil Velikov --- src/glx/glxcmds.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index c707d0cedf..bc93d62510 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -528,7 +528,7 @@ glXWaitGL(void) { struct glx_context *gc = __glXGetCurrentContext(); - if (gc != &dummyContext && gc->vtable->wait_gl) + if (gc->vtable->wait_gl) gc->vtable->wait_gl(gc); } @@ -541,7 +541,7 @@ glXWaitX(void) { struct glx_context *gc = __glXGetCurrentContext(); - if (gc != &dummyContext && gc->vtable->wait_x) + if (gc->vtable->wait_x) gc->vtable->wait_x(gc); } @@ -550,7 +550,7 @@ glXUseXFont(Font font, int first, int count, int listBase) { struct glx_context *gc = __glXGetCurrentContext(); - if (gc != &dummyContext && gc->vtable->use_x_font) + if (gc->vtable->use_x_font) gc->vtable->use_x_font(gc, font, first, count, listBase); } @@ -2431,7 +2431,7 @@ __glXBindTexImageEXT(Display * dpy, { struct glx_context *gc = __glXGetCurrentContext(); - if (gc == &dummyContext || gc->vtable->bind_tex_image == NULL) + if (gc->vtable->bind_tex_image == NULL) return; gc->vtable->bind_tex_image(dpy, drawable, buffer, attrib_list); @@ -2442,7 +2442,7 @@ __glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer) { struct glx_context *gc = __glXGetCurrentContext(); - if (gc == &dummyContext || gc->vtable->release_tex_image == NULL) + if (gc->vtable->release_tex_image == NULL) return; gc->vtable->release_tex_image(dpy, drawable, buffer); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Use __glXSendError instead of open-coding it
Module: Mesa Branch: master Commit: 75d5d22fb790d856809a9dd896ffc22a268d1d96 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=75d5d22fb790d856809a9dd896ffc22a268d1d96 Author: Adam Jackson Date: Tue Nov 14 15:13:02 2017 -0500 glx: Use __glXSendError instead of open-coding it This also fixes a bug, the error path through MakeCurrent didn't translate the error code by the extension's error base. Signed-off-by: Adam Jackson Reviewed-by: Ian Romanick --- src/glx/glxcmds.c| 10 +- src/glx/glxcurrent.c | 20 +++- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index bc93d62510..eee45d962d 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -392,15 +392,7 @@ glXCreateContext(Display * dpy, XVisualInfo * vis, config = glx_config_find_visual(psc->visuals, vis->visualid); if (config == NULL) { - xError error; - - error.errorCode = BadValue; - error.resourceID = vis->visualid; - error.sequenceNumber = dpy->request; - error.type = X_Error; - error.majorCode = __glXSetupForCommand(dpy); - error.minorCode = X_GLXCreateContext; - _XError(dpy, &error); + __glXSendError(dpy, BadValue, vis->visualid, X_GLXCreateContext, True); return None; } diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c index d1193265f9..fd04929b89 100644 --- a/src/glx/glxcurrent.c +++ b/src/glx/glxcurrent.c @@ -36,8 +36,8 @@ #include #include "glxclient.h" - #include "glapi.h" +#include "glx_error.h" /* ** We setup some dummy structures here so that the API can be used @@ -165,21 +165,6 @@ glXGetCurrentDrawable(void) return gc->currentDrawable; } -static void -__glXGenerateError(Display * dpy, XID resource, - BYTE errorCode, CARD16 minorCode) -{ - xError error; - - error.errorCode = errorCode; - error.resourceID = resource; - error.sequenceNumber = dpy->request; - error.type = X_Error; - error.majorCode = __glXSetupForCommand(dpy); - error.minorCode = minorCode; - _XError(dpy, &error); -} - /** * Make a particular context current. * @@ -228,7 +213,8 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw, if (gc->vtable->bind(gc, oldGC, draw, read) != Success) { __glXSetCurrentContextNull(); __glXUnlock(); - __glXGenerateError(dpy, None, GLXBadContext, X_GLXMakeContextCurrent); + __glXSendError(dpy, GLXBadContext, None, X_GLXMakeContextCurrent, +False); return GL_FALSE; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): gallium/dri2: Enable {GLX_ARB, EGL_KHR}_context_flush_control
Module: Mesa Branch: master Commit: 0d044351b7043cd0bc94c1cb9b7a2213f8054414 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d044351b7043cd0bc94c1cb9b7a2213f8054414 Author: Adam Jackson Date: Mon Nov 6 16:28:36 2017 -0500 gallium/dri2: Enable {GLX_ARB,EGL_KHR}_context_flush_control Reviewed-and-tested-by: Nicolai Hähnle Signed-off-by: Adam Jackson --- src/gallium/state_trackers/dri/dri2.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index a70f37fe09..d5ae9cbd69 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -1955,6 +1955,7 @@ static const __DRIextension *dri_screen_extensions[] = { &dri2FenceExtension.base, &dri2InteropExtension.base, &dri2NoErrorExtension.base, + &dri2FlushControlExtension.base, NULL }; @@ -1969,6 +1970,7 @@ static const __DRIextension *dri_robust_screen_extensions[] = { &dri2InteropExtension.base, &dri2Robustness.base, &dri2NoErrorExtension.base, + &dri2FlushControlExtension.base, NULL }; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Convert int to attrib in eglGetPlatformDisplay
Module: Mesa Branch: master Commit: ddcd4b05a35fdad400637c3decfa9fe183b3e8c7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ddcd4b05a35fdad400637c3decfa9fe183b3e8c7 Author: Adam Jackson Date: Thu Nov 16 13:27:27 2017 -0500 egl: Convert int to attrib in eglGetPlatformDisplay ... because converting attrib to int truncates, and that's bad. Signed-off-by: Adam Jackson Reviewed-by: Eric Engestrom Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 27 +-- src/egl/main/egldisplay.c | 15 --- src/egl/main/egldisplay.h | 8 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index c1bf5bbfe1..cec67425e1 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -376,7 +376,7 @@ eglGetDisplay(EGLNativeDisplayType nativeDisplay) static EGLDisplay _eglGetPlatformDisplayCommon(EGLenum platform, void *native_display, - const EGLint *attrib_list) + const EGLAttrib *attrib_list) { _EGLDisplay *dpy; @@ -412,28 +412,27 @@ _eglGetPlatformDisplayCommon(EGLenum platform, void *native_display, static EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, - const EGLint *attrib_list) + const EGLint *int_attribs) { + EGLAttrib *attrib_list; + EGLDisplay display; + _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL, EGL_NO_DISPLAY); - return _eglGetPlatformDisplayCommon(platform, native_display, attrib_list); + + if (_eglConvertIntsToAttribs(int_attribs, &attrib_list) != EGL_SUCCESS) + RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, NULL); + + display = _eglGetPlatformDisplayCommon(platform, native_display, attrib_list); + free(attrib_list); + return display; } EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list) { - EGLDisplay display; - EGLint *int_attribs; - _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL, EGL_NO_DISPLAY); - - int_attribs = _eglConvertAttribsToInt(attrib_list); - if (attrib_list && !int_attribs) - RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, NULL); - - display = _eglGetPlatformDisplayCommon(platform, native_display, int_attribs); - free(int_attribs); - return display; + return _eglGetPlatformDisplayCommon(platform, native_display, attrib_list); } /** diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 690728d2f7..fe963c805e 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -447,7 +447,8 @@ _eglUnlinkResource(_EGLResource *res, _EGLResourceType type) #ifdef HAVE_X11_PLATFORM static EGLBoolean -_eglParseX11DisplayAttribList(_EGLDisplay *display, const EGLint *attrib_list) +_eglParseX11DisplayAttribList(_EGLDisplay *display, + const EGLAttrib *attrib_list) { int i; @@ -456,8 +457,8 @@ _eglParseX11DisplayAttribList(_EGLDisplay *display, const EGLint *attrib_list) } for (i = 0; attrib_list[i] != EGL_NONE; i += 2) { - EGLint attrib = attrib_list[i]; - EGLint value = attrib_list[i + 1]; + EGLAttrib attrib = attrib_list[i]; + EGLAttrib value = attrib_list[i + 1]; /* EGL_EXT_platform_x11 recognizes exactly one attribute, * EGL_PLATFORM_X11_SCREEN_EXT, which is optional. @@ -473,7 +474,7 @@ _eglParseX11DisplayAttribList(_EGLDisplay *display, const EGLint *attrib_list) _EGLDisplay* _eglGetX11Display(Display *native_display, - const EGLint *attrib_list) + const EGLAttrib *attrib_list) { _EGLDisplay *display = _eglFindDisplay(_EGL_PLATFORM_X11, native_display); @@ -494,7 +495,7 @@ _eglGetX11Display(Display *native_display, #ifdef HAVE_DRM_PLATFORM _EGLDisplay* _eglGetGbmDisplay(struct gbm_device *native_display, - const EGLint *attrib_list) + const EGLAttrib *attrib_list) { /* EGL_MESA_platform_gbm recognizes no attributes. */ if (attrib_list != NULL && attrib_list[0] != EGL_NONE) { @@ -509,7 +510,7 @@ _eglGetGbmDisplay(struct gbm_device *native_display, #ifdef HAVE_WAYLAND_PLATFORM _EGLDisplay* _eglGetWaylandDisplay(struct wl_display *native_display, - const EGLint *attrib_list) + const EGLAttrib *attrib_list) { /* EGL_EXT_platform_wayland recognizes no attributes. */ if (attrib_list != NULL && attrib_list[0] != EGL_NONE) { @@ -524,7 +525,7 @@ _eglGetWaylandDisplay(struct wl_display *native_display, #ifdef HAVE_SURFACELESS_PLATFORM _EGLDisplay* _eglGetSurfacelessDisplay(void *native_display, - const EGLint *attrib_list) + const EGLAttrib *attrib_list) { /* This platform has no native display. */ i
Mesa (master): glx/dri3: Fix passing renderType into glXCreateContext
Module: Mesa Branch: master Commit: 257edb5b9aedc9fc5d5c13eb2f48a0c11d15456f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=257edb5b9aedc9fc5d5c13eb2f48a0c11d15456f Author: Adam Jackson Date: Thu Nov 9 16:57:31 2017 -0500 glx/dri3: Fix passing renderType into glXCreateContext Without this, trying to create a GLX_RGBA_FLOAT_TYPE_ARB context would fail, because GLX_RGBA_TYPE would be a mismatch with the fbconfig. Cc: mesa-sta...@lists.freedesktop.org Reviewed-by: Tapani Pälli Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/glx/dri3_glx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index fa048f990a..a10306fe32 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -324,9 +324,10 @@ dri3_create_context(struct glx_screen *base, struct glx_context *shareList, int renderType) { unsigned int error; + uint32_t attribs[2] = { GLX_RENDER_TYPE, renderType }; return dri3_create_context_attribs(base, config_base, shareList, - 0, NULL, &error); + 1, attribs, &error); } static void ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx/drisw: Fix glXMakeCurrent(dpy, None, ctx)
Module: Mesa Branch: master Commit: 033cfb17db85b38bc012d74f30f6c92cddf85216 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=033cfb17db85b38bc012d74f30f6c92cddf85216 Author: Adam Jackson Date: Thu Nov 9 16:57:30 2017 -0500 glx/drisw: Fix glXMakeCurrent(dpy, None, ctx) This is perfectly legal in GL 3.0+. Fixes piglit/glx-create-context-current-no-framebuffer. Cc: mesa-sta...@lists.freedesktop.org Reviewed-by: Tapani Pälli Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/glx/drisw_glx.c | 6 ++ 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 2f0675addb..df2467a5c2 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -255,11 +255,9 @@ drisw_bind_context(struct glx_context *context, struct glx_context *old, driReleaseDrawables(&pcp->base); - if (pdraw == NULL || pread == NULL) - return GLXBadDrawable; - if ((*psc->core->bindContext) (pcp->driContext, - pdraw->driDrawable, pread->driDrawable)) + pdraw ? pdraw->driDrawable : NULL, + pread ? pread->driDrawable : NULL)) return Success; return GLXBadContext; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Lower GLX opcode lookup into SendMakeCurrentRequest
Module: Mesa Branch: master Commit: bc1bc6f512f1ab9fd34086a93fbbc591cd310e79 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc1bc6f512f1ab9fd34086a93fbbc591cd310e79 Author: Adam Jackson Date: Thu Nov 9 16:57:29 2017 -0500 glx: Lower GLX opcode lookup into SendMakeCurrentRequest Reviewed-by: Tapani Pälli Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/glx/indirect_glx.c | 16 +++- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/glx/indirect_glx.c b/src/glx/indirect_glx.c index 4302a8ff28..cfae12f6c0 100644 --- a/src/glx/indirect_glx.c +++ b/src/glx/indirect_glx.c @@ -62,13 +62,13 @@ indirect_destroy_context(struct glx_context *gc) } static Bool -SendMakeCurrentRequest(Display * dpy, CARD8 opcode, - GLXContextID gc_id, GLXContextTag gc_tag, - GLXDrawable draw, GLXDrawable read, - GLXContextTag *out_tag) +SendMakeCurrentRequest(Display * dpy, GLXContextID gc_id, + GLXContextTag gc_tag, GLXDrawable draw, + GLXDrawable read, GLXContextTag *out_tag) { xGLXMakeCurrentReply reply; Bool ret; + int opcode = __glXSetupForCommand(dpy); LockDisplay(dpy); @@ -136,7 +136,6 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, { GLXContextTag tag; Display *dpy = gc->psc->dpy; - int opcode = __glXSetupForCommand(dpy); Bool sent; if (old != &dummyContext && !old->isDirect && old->psc->dpy == dpy) { @@ -146,7 +145,7 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, tag = 0; } - sent = SendMakeCurrentRequest(dpy, opcode, gc->xid, tag, draw, read, + sent = SendMakeCurrentRequest(dpy, gc->xid, tag, draw, read, &gc->currentContextTag); if (!IndirectAPI) @@ -160,7 +159,6 @@ static void indirect_unbind_context(struct glx_context *gc, struct glx_context *new) { Display *dpy = gc->psc->dpy; - int opcode = __glXSetupForCommand(dpy); if (gc == new) return; @@ -170,8 +168,8 @@ indirect_unbind_context(struct glx_context *gc, struct glx_context *new) * to send a request to the dpy to unbind the previous context. */ if (!new || new->isDirect || new->psc->dpy != dpy) { - SendMakeCurrentRequest(dpy, opcode, None, -gc->currentContextTag, None, None, NULL); + SendMakeCurrentRequest(dpy, None, gc->currentContextTag, None, None, + NULL); gc->currentContextTag = 0; } } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): Revert "glx: Implement GLX_EXT_no_config_context (v2)"
Module: Mesa Branch: master Commit: 015cc6bb7cd1199ce43018bb47c89c0a26adc96a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=015cc6bb7cd1199ce43018bb47c89c0a26adc96a Author: Adam Jackson Date: Thu Nov 9 11:41:14 2017 -0500 Revert "glx: Implement GLX_EXT_no_config_context (v2)" Pushed ahead of things actually working. This reverts commit 5293b96b160b904c0e53cbce93679c3aa090f846. --- src/glx/create_context.c | 39 +-- src/glx/dri2_glx.c | 1 - src/glx/dri3_glx.c | 1 - src/glx/drisw_glx.c | 1 - src/glx/glxextensions.c | 1 - src/glx/glxextensions.h | 1 - 6 files changed, 13 insertions(+), 31 deletions(-) diff --git a/src/glx/create_context.c b/src/glx/create_context.c index eab6511ad8..38e949ab4c 100644 --- a/src/glx/create_context.c +++ b/src/glx/create_context.c @@ -47,41 +47,28 @@ glXCreateContextAttribsARB(Display *dpy, GLXFBConfig config, xcb_generic_error_t *err; xcb_void_cookie_t cookie; unsigned dummy_err = 0; - int screen = -1; - if (dpy == NULL) - return NULL; - - /* Count the number of attributes specified by the application. All -* attributes appear in pairs, except the terminating None. -*/ - if (attrib_list != NULL) { - for (/* empty */; attrib_list[num_attribs * 2] != 0; num_attribs++) -/* empty */ ; - } - if (cfg) { - screen = cfg->screen; - } else { - int i; - for (i = 0; i < num_attribs; i++) { - if (attrib_list[i * 2] == GLX_SCREEN) -screen = attrib_list[i * 2 + 1]; - } - } + if (dpy == NULL || cfg == NULL) + return NULL; /* This means that either the caller passed the wrong display pointer or * one of the internal GLX data structures (probably the fbconfig) has an * error. There is nothing sensible to do, so return an error. */ - psc = GetGLXScreenConfigs(dpy, screen); + psc = GetGLXScreenConfigs(dpy, cfg->screen); if (psc == NULL) return NULL; - assert(screen == psc->scr); + assert(cfg->screen == psc->scr); - if (!cfg && !__glXExtensionBitIsEnabled(psc, EXT_no_config_context_bit)) - return NULL; + /* Count the number of attributes specified by the application. All +* attributes appear in pairs, except the terminating None. +*/ + if (attrib_list != NULL) { + for (/* empty */; attrib_list[num_attribs * 2] != 0; num_attribs++) +/* empty */ ; + } if (direct && psc->vtable->create_context_attribs) { /* GLX drops the error returned by the driver. The expectation is that @@ -117,8 +104,8 @@ glXCreateContextAttribsARB(Display *dpy, GLXFBConfig config, cookie = xcb_glx_create_context_attribs_arb_checked(c, gc->xid, -cfg ? cfg->fbconfigID : 0, -screen, +cfg->fbconfigID, +cfg->screen, gc->share_xid, gc->isDirect, num_attribs, diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index eeec4f0d60..0f44635725 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -1129,7 +1129,6 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv, __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context"); __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile"); - __glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context"); if ((mask & ((1 << __DRI_API_GLES) | (1 << __DRI_API_GLES2) | diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index 4470d1ef68..fa048f990a 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -719,7 +719,6 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv, __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context"); __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile"); - __glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context"); if ((mask & ((1 << __DRI_API_GLES) | (1 << __DRI_API_GLES2) | diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 1f86ac2d4c..2f0675addb 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -630,7 +630,6 @@ driswBindExtensions(struct drisw_screen *psc, const __DRIextension **extensions) if (psc->swrast->base.version >= 3) { __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context"); __glXEnableDirectExtension(&psc->b
Mesa (master): glx: Implement GLX_EXT_no_config_context (v2)
Module: Mesa Branch: master Commit: 5293b96b160b904c0e53cbce93679c3aa090f846 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5293b96b160b904c0e53cbce93679c3aa090f846 Author: Adam Jackson Date: Tue Nov 7 11:36:53 2017 -0500 glx: Implement GLX_EXT_no_config_context (v2) This more or less ports EGL_KHR_no_config_context to GLX. v2: Enable the extension only for those backends that support it. Khronos: https://github.com/KhronosGroup/OpenGL-Registry/pull/102 Reviewed-by: Kenneth Graunke Signed-off-by: Adam Jackson --- src/glx/create_context.c | 39 ++- src/glx/dri2_glx.c | 1 + src/glx/dri3_glx.c | 1 + src/glx/drisw_glx.c | 1 + src/glx/glxextensions.c | 1 + src/glx/glxextensions.h | 1 + 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/glx/create_context.c b/src/glx/create_context.c index 38e949ab4c..eab6511ad8 100644 --- a/src/glx/create_context.c +++ b/src/glx/create_context.c @@ -47,28 +47,41 @@ glXCreateContextAttribsARB(Display *dpy, GLXFBConfig config, xcb_generic_error_t *err; xcb_void_cookie_t cookie; unsigned dummy_err = 0; + int screen = -1; - - if (dpy == NULL || cfg == NULL) + if (dpy == NULL) return NULL; + /* Count the number of attributes specified by the application. All +* attributes appear in pairs, except the terminating None. +*/ + if (attrib_list != NULL) { + for (/* empty */; attrib_list[num_attribs * 2] != 0; num_attribs++) +/* empty */ ; + } + + if (cfg) { + screen = cfg->screen; + } else { + int i; + for (i = 0; i < num_attribs; i++) { + if (attrib_list[i * 2] == GLX_SCREEN) +screen = attrib_list[i * 2 + 1]; + } + } + /* This means that either the caller passed the wrong display pointer or * one of the internal GLX data structures (probably the fbconfig) has an * error. There is nothing sensible to do, so return an error. */ - psc = GetGLXScreenConfigs(dpy, cfg->screen); + psc = GetGLXScreenConfigs(dpy, screen); if (psc == NULL) return NULL; - assert(cfg->screen == psc->scr); + assert(screen == psc->scr); - /* Count the number of attributes specified by the application. All -* attributes appear in pairs, except the terminating None. -*/ - if (attrib_list != NULL) { - for (/* empty */; attrib_list[num_attribs * 2] != 0; num_attribs++) -/* empty */ ; - } + if (!cfg && !__glXExtensionBitIsEnabled(psc, EXT_no_config_context_bit)) + return NULL; if (direct && psc->vtable->create_context_attribs) { /* GLX drops the error returned by the driver. The expectation is that @@ -104,8 +117,8 @@ glXCreateContextAttribsARB(Display *dpy, GLXFBConfig config, cookie = xcb_glx_create_context_attribs_arb_checked(c, gc->xid, -cfg->fbconfigID, -cfg->screen, +cfg ? cfg->fbconfigID : 0, +screen, gc->share_xid, gc->isDirect, num_attribs, diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 0f44635725..eeec4f0d60 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -1129,6 +1129,7 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv, __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context"); __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile"); + __glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context"); if ((mask & ((1 << __DRI_API_GLES) | (1 << __DRI_API_GLES2) | diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index fa048f990a..4470d1ef68 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -719,6 +719,7 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv, __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context"); __glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile"); + __glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context"); if ((mask & ((1 << __DRI_API_GLES) | (1 << __DRI_API_GLES2) | diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 2f0675addb..1f86ac2d4c 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -630,6 +630,7 @@ driswBindExtensions(struct drisw_screen *psc, const __DRIextension **extensions) if (psc->swrast->base.version >= 3) { __glXEnableDirectE
Mesa (master): glx: Relax validate_renderType_against_config for EXT_no_config_context
Module: Mesa Branch: master Commit: 74b701d84cd33b83c96525e70487091a05bb6ad6 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=74b701d84cd33b83c96525e70487091a05bb6ad6 Author: Adam Jackson Date: Tue Nov 7 11:36:51 2017 -0500 glx: Relax validate_renderType_against_config for EXT_no_config_context Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/glx/glxcmds.c | 30 +- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index 10c7c2c3eb..c707d0cedf 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -235,19 +235,23 @@ Bool validate_renderType_against_config(const struct glx_config *config, int renderType) { -switch (renderType) { -case GLX_RGBA_TYPE: -return (config->renderType & GLX_RGBA_BIT) != 0; -case GLX_COLOR_INDEX_TYPE: -return (config->renderType & GLX_COLOR_INDEX_BIT) != 0; -case GLX_RGBA_FLOAT_TYPE_ARB: -return (config->renderType & GLX_RGBA_FLOAT_BIT_ARB) != 0; -case GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT: -return (config->renderType & GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT) != 0; -default: -break; -} -return 0; + /* GLX_EXT_no_config_context supports any render type */ + if (!config) + return True; + + switch (renderType) { + case GLX_RGBA_TYPE: + return (config->renderType & GLX_RGBA_BIT) != 0; + case GLX_COLOR_INDEX_TYPE: + return (config->renderType & GLX_COLOR_INDEX_BIT) != 0; + case GLX_RGBA_FLOAT_TYPE_ARB: + return (config->renderType & GLX_RGBA_FLOAT_BIT_ARB) != 0; + case GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT: + return (config->renderType & GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT) != 0; + default: + break; + } + return 0; } _X_HIDDEN Bool ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Prepare the DRI backends for GLX_EXT_no_config_context
Module: Mesa Branch: master Commit: 3f66d54a2a59b6f295671ea03aa9f83ce1aee34a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3f66d54a2a59b6f295671ea03aa9f83ce1aee34a Author: Adam Jackson Date: Tue Nov 7 11:36:52 2017 -0500 glx: Prepare the DRI backends for GLX_EXT_no_config_context This should be safe as these backends already support the EGL version of this extension. DRI1 is not affected because it does not support GLX_ARB_create_context anyway. DRI-Windows is not prepared to implement this as there's no equivalent WGL extension, and wglCreateContextAttribs seems to really want the HDC's pixel format to be set. Signed-off-by: Adam Jackson Reviewed-by: Eric Anholt --- src/glx/dri2_glx.c | 4 ++-- src/glx/dri3_glx.c | 5 +++-- src/glx/drisw_glx.c | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index e67a15f9da..0f44635725 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -278,7 +278,7 @@ dri2_create_context_attribs(struct glx_screen *base, goto error_exit; } - if (!glx_context_init(&pcp->base, &psc->base, &config->base)) + if (!glx_context_init(&pcp->base, &psc->base, config_base)) goto error_exit; ctx_attribs[num_ctx_attribs++] = __DRI_CTX_ATTRIB_MAJOR_VERSION; @@ -317,7 +317,7 @@ dri2_create_context_attribs(struct glx_screen *base, pcp->driContext = (*psc->dri2->createContextAttribs) (psc->driScreen, api, - config->driConfig, + config ? config->driConfig : NULL, shared, num_ctx_attribs / 2, ctx_attribs, diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index d613073994..fa048f990a 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -263,7 +263,7 @@ dri3_create_context_attribs(struct glx_screen *base, goto error_exit; } - if (!glx_context_init(&pcp->base, &psc->base, &config->base)) + if (!glx_context_init(&pcp->base, &psc->base, config_base)) goto error_exit; ctx_attribs[num_ctx_attribs++] = __DRI_CTX_ATTRIB_MAJOR_VERSION; @@ -297,7 +297,8 @@ dri3_create_context_attribs(struct glx_screen *base, pcp->driContext = (*psc->image_driver->createContextAttribs) (psc->driScreen, api, - config->driConfig, + config ? config->driConfig + : NULL, shared, num_ctx_attribs / 2, ctx_attribs, diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index a471856634..2f0675addb 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -455,7 +455,7 @@ drisw_create_context_attribs(struct glx_screen *base, if (pcp == NULL) return NULL; - if (!glx_context_init(&pcp->base, &psc->base, &config->base)) { + if (!glx_context_init(&pcp->base, &psc->base, config_base)) { free(pcp); return NULL; } @@ -483,7 +483,7 @@ drisw_create_context_attribs(struct glx_screen *base, pcp->driContext = (*psc->swrast->createContextAttribs) (psc->driScreen, api, - config->driConfig, + config ? config->driConfig : 0, shared, num_ctx_attribs / 2, ctx_attribs, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri: Add a flush control extension
Module: Mesa Branch: master Commit: b89067c84faed94b2b31cdebf2cc7ecfc41952f2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b89067c84faed94b2b31cdebf2cc7ecfc41952f2 Author: Neil Roberts Date: Wed Oct 1 20:00:47 2014 +0100 dri: Add a flush control extension This advertises that the driver can accept a new context attribute __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR. Reviewed-by: Adam Jackson Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov Signed-off-by: Neil Roberts --- include/GL/internal/dri_interface.h| 25 + src/mesa/drivers/dri/common/dri_util.c | 14 ++ src/mesa/drivers/dri/common/dri_util.h | 9 +++-- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index 98402eae05..b47947380c 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -1107,6 +1107,16 @@ struct __DRIdri2LoaderExtensionRec { #define __DRI_CTX_PRIORITY_HIGH2 /** + * \name Context release behaviors. + */ +/*@{*/ +#define __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR 5 + +#define __DRI_CTX_RELEASE_BEHAVIOR_NONE 0 +#define __DRI_CTX_RELEASE_BEHAVIOR_FLUSH1 +/*@}*/ + +/** * \name Reasons that __DRIdri2Extension::createContextAttribs might fail */ /*@{*/ @@ -1715,6 +1725,21 @@ typedef struct __DRInoErrorExtensionRec { __DRIextension base; } __DRInoErrorExtension; +/* + * Flush control driver extension. + * + * Existence of this extension means the driver can accept the + * \c __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR attribute in + * \c __DRIdri2ExtensionRec::createContextAttribs. + */ +#define __DRI2_FLUSH_CONTROL "DRI_FlushControl" +#define __DRI2_FLUSH_CONTROL_VERSION 1 + +typedef struct __DRI2flushControlExtensionRec __DRI2flushControlExtension; +struct __DRI2flushControlExtensionRec { + __DRIextension base; +}; + /** * DRI config options extension. * diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index dc5260ca5b..d504751c39 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -361,6 +361,16 @@ driCreateContextAttribs(__DRIscreen *screen, int api, ctx_config.attribute_mask |= __DRIVER_CONTEXT_ATTRIB_PRIORITY; ctx_config.priority = attribs[i * 2 + 1]; break; +case __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR: +if (attribs[i * 2 + 1] != __DRI_CTX_RELEASE_BEHAVIOR_FLUSH) { +ctx_config.attribute_mask |= +__DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR; +ctx_config.release_behavior = attribs[i * 2 + 1]; +} else { +ctx_config.attribute_mask &= +~__DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR; +} +break; default: /* We can't create a context that satisfies the requirements of an * attribute that we don't understand. Return failure. @@ -833,6 +843,10 @@ const __DRI2configQueryExtension dri2ConfigQueryExtension = { .configQueryf= dri2ConfigQueryf, }; +const __DRI2flushControlExtension dri2FlushControlExtension = { + .base = { __DRI2_FLUSH_CONTROL, 1 } +}; + void dri2InvalidateDrawable(__DRIdrawable *drawable) { diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h index 13d07dd513..5018f2fbf6 100644 --- a/src/mesa/drivers/dri/common/dri_util.h +++ b/src/mesa/drivers/dri/common/dri_util.h @@ -67,6 +67,7 @@ extern const __DRIswrastExtension driSWRastExtension; extern const __DRIdri2Extension driDRI2Extension; extern const __DRI2configQueryExtension dri2ConfigQueryExtension; extern const __DRIcopySubBufferExtension driCopySubBufferExtension; +extern const __DRI2flushControlExtension dri2FlushControlExtension; /** * Description of the attributes used to create a config. @@ -93,10 +94,14 @@ struct __DriverContextConfig { /* Only valid if __DRIVER_CONTEXT_PRIORITY is set */ unsigned priority; + +/* Only valid if __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR is set */ +int release_behavior; }; -#define __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY (1 << 0) -#define __DRIVER_CONTEXT_ATTRIB_PRIORITY(1 << 1) +#define __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY (1 << 0) +#define __DRIVER_CONTEXT_ATTRIB_PRIORITY (1 << 1) +#define __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR (1 << 2) /** * Driver callback functions. ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): intel: Don't flush the old context in intelMakeCurrent
Module: Mesa Branch: master Commit: 8c0729fd99c8548ceaf40e273b809ce0a69d8a44 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c0729fd99c8548ceaf40e273b809ce0a69d8a44 Author: Neil Roberts Date: Wed Feb 4 10:20:12 2015 -0500 intel: Don't flush the old context in intelMakeCurrent It shouldn't be necessary to flush the context within the driver implementation because the old context is explicitly flushed in _mesa_make_current which is called a little further on. It is useful to only have a single place that flushes when switching contexts to make it easier to later implement the GL_KHR_context_flush_control extension. The flush in intelMakeCurrent was added in commit 5505865 to implement the GLX semantics that the context should be flushed when it is released. When the commit was made there was no flush in _mesa_make_current because it was only added later in 93102b4c. I think that later commit effectively makes the first commit redundant. Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov Reviewed-by: Kenneth Graunke Signed-off-by: Neil Roberts --- src/mesa/drivers/dri/i915/intel_context.c | 9 - src/mesa/drivers/dri/i965/brw_context.c | 9 - 2 files changed, 18 deletions(-) diff --git a/src/mesa/drivers/dri/i915/intel_context.c b/src/mesa/drivers/dri/i915/intel_context.c index e0766a0e3f..96d09ca947 100644 --- a/src/mesa/drivers/dri/i915/intel_context.c +++ b/src/mesa/drivers/dri/i915/intel_context.c @@ -626,21 +626,12 @@ intelMakeCurrent(__DRIcontext * driContextPriv, __DRIdrawable * driReadPriv) { struct intel_context *intel; - GET_CURRENT_CONTEXT(curCtx); if (driContextPriv) intel = (struct intel_context *) driContextPriv->driverPrivate; else intel = NULL; - /* According to the glXMakeCurrent() man page: "Pending commands to -* the previous context, if any, are flushed before it is released." -* But only flush if we're actually changing contexts. -*/ - if (intel_context(curCtx) && intel_context(curCtx) != intel) { - _mesa_flush(curCtx); - } - if (driContextPriv) { struct gl_context *ctx = &intel->ctx; struct gl_framebuffer *fb, *readFb; diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 037e349fdb..fae7631266 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -1171,21 +1171,12 @@ intelMakeCurrent(__DRIcontext * driContextPriv, __DRIdrawable * driReadPriv) { struct brw_context *brw; - GET_CURRENT_CONTEXT(curCtx); if (driContextPriv) brw = (struct brw_context *) driContextPriv->driverPrivate; else brw = NULL; - /* According to the glXMakeCurrent() man page: "Pending commands to -* the previous context, if any, are flushed before it is released." -* But only flush if we're actually changing contexts. -*/ - if (brw_context(curCtx) && brw_context(curCtx) != brw) { - _mesa_flush(curCtx); - } - if (driContextPriv) { struct gl_context *ctx = &brw->ctx; struct gl_framebuffer *fb, *readFb; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Implement EGL_KHR_context_flush_control
Module: Mesa Branch: master Commit: c0be3aae6cfe1e8a51ed21e6fa10c5a51a216c36 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0be3aae6cfe1e8a51ed21e6fa10c5a51a216c36 Author: Adam Jackson Date: Thu Sep 22 03:47:55 2016 -0400 egl: Implement EGL_KHR_context_flush_control Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/egl/drivers/dri2/egl_dri2.c | 11 ++- src/egl/drivers/dri2/egl_dri2.h | 1 + src/egl/main/eglapi.c | 1 + src/egl/main/eglcontext.c | 10 ++ src/egl/main/eglcontext.h | 1 + src/egl/main/egldisplay.h | 1 + 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 44cddfd0ed..b486be7487 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -92,7 +92,7 @@ #define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1) #endif -#define NUM_ATTRIBS 10 +#define NUM_ATTRIBS 12 static void dri_set_background_context(void *loaderPrivate) @@ -457,6 +457,7 @@ static const struct dri2_extension_match optional_core_extensions[] = { { __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) }, + { __DRI2_FLUSH_CONTROL, 1, offsetof(struct dri2_egl_display, flush_control) }, { NULL, 0, 0 } }; @@ -766,6 +767,9 @@ dri2_setup_screen(_EGLDisplay *disp) } #endif } + + if (dri2_dpy->flush_control) + disp->Extensions.KHR_context_flush_control = EGL_TRUE; } void @@ -1227,6 +1231,11 @@ dri2_fill_context_attribs(struct dri2_egl_context *dri2_ctx, ctx_attribs[pos++] = val; } + if (dri2_ctx->base.ReleaseBehavior == EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR) { + ctx_attribs[pos++] = __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR; + ctx_attribs[pos++] = __DRI_CTX_RELEASE_BEHAVIOR_NONE; + } + *num_attribs = pos; return true; diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index cd2487ab22..0ec8f44dce 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -164,6 +164,7 @@ struct dri2_egl_display const __DRIdri2Extension *dri2; const __DRIswrastExtension *swrast; const __DRI2flushExtension *flush; + const __DRI2flushControlExtension *flush_control; const __DRItexBufferExtension *tex_buffer; const __DRIimageExtension *image; const __DRIrobustnessExtension *robustness; diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 215332f99c..76dabba2eb 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -494,6 +494,7 @@ _eglCreateExtensionsString(_EGLDisplay *dpy) _EGL_CHECK_EXTENSION(KHR_cl_event2); _EGL_CHECK_EXTENSION(KHR_config_attribs); + _EGL_CHECK_EXTENSION(KHR_context_flush_control); _EGL_CHECK_EXTENSION(KHR_create_context); _EGL_CHECK_EXTENSION(KHR_create_context_no_error); _EGL_CHECK_EXTENSION(KHR_fence_sync); diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index 8c64f9ab82..18c1bc59ac 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -386,6 +386,15 @@ _eglParseContextAttribList(_EGLContext *ctx, _EGLDisplay *dpy, break; } + case EGL_CONTEXT_RELEASE_BEHAVIOR_KHR: + if (val == EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR || + val == EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR) { +ctx->ReleaseBehavior = val; + } else { +err = EGL_BAD_ATTRIBUTE; + } + break; + default: err = EGL_BAD_ATTRIBUTE; break; @@ -588,6 +597,7 @@ _eglInitContext(_EGLContext *ctx, _EGLDisplay *dpy, _EGLConfig *conf, ctx->Profile = EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR; ctx->ResetNotificationStrategy = EGL_NO_RESET_NOTIFICATION_KHR; ctx->ContextPriority = EGL_CONTEXT_PRIORITY_MEDIUM_IMG; + ctx->ReleaseBehavior = EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR; err = _eglParseContextAttribList(ctx, dpy, attrib_list); if (err == EGL_SUCCESS && ctx->Config) { diff --git a/src/egl/main/eglcontext.h b/src/egl/main/eglcontext.h index a752368313..8d97ef9eab 100644 --- a/src/egl/main/eglcontext.h +++ b/src/egl/main/eglcontext.h @@ -64,6 +64,7 @@ struct _egl_context EGLint ResetNotificationStrategy; EGLint ContextPriority; EGLBoolean NoError; + EGLint ReleaseBehavior; /* The real render buffer when a window surface is bound */ EGLint WindowRenderBuffer; diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index 952bfe53f0..981cbf4ca0 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -112,6 +112,7 @@ struct _egl_extensions EGLBoolean KHR_cl_event2; EGLBoolean KHR_config_attribs; + EGLBoolean
Mesa (master): glx: Implement GLX_ARB_context_flush_control
Module: Mesa Branch: master Commit: ba7679f48d6414c16655cb41689f2214630f04e5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba7679f48d6414c16655cb41689f2214630f04e5 Author: Neil Roberts Date: Wed Oct 1 20:00:48 2014 +0100 glx: Implement GLX_ARB_context_flush_control Reviewed-by: Adam Jackson Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov Signed-off-by: Neil Roberts --- src/glx/dri2_glx.c | 18 -- src/glx/dri3_glx.c | 14 -- src/glx/dri_common.c| 16 +++- src/glx/dri_common.h| 2 +- src/glx/drisw_glx.c | 17 +++-- src/glx/glxextensions.c | 1 + src/glx/glxextensions.h | 3 ++- 7 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index ae8cb11ef8..e67a15f9da 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -247,7 +247,8 @@ dri2_create_context_attribs(struct glx_screen *base, uint32_t flags; unsigned api; int reset; - uint32_t ctx_attribs[2 * 5]; + int release; + uint32_t ctx_attribs[2 * 6]; unsigned num_ctx_attribs = 0; if (psc->dri2->base.version < 3) { @@ -259,7 +260,7 @@ dri2_create_context_attribs(struct glx_screen *base, */ if (!dri2_convert_glx_attribs(num_attribs, attribs, &major_ver, &minor_ver, &renderType, &flags, - &api, &reset, error)) + &api, &reset, &release, error)) goto error_exit; /* Check the renderType value */ @@ -294,6 +295,11 @@ dri2_create_context_attribs(struct glx_screen *base, ctx_attribs[num_ctx_attribs++] = reset; } + if (release != __DRI_CTX_RELEASE_BEHAVIOR_FLUSH) { + ctx_attribs[num_ctx_attribs++] = __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR; + ctx_attribs[num_ctx_attribs++] = release; + } + if (flags != 0) { ctx_attribs[num_ctx_attribs++] = __DRI_CTX_ATTRIB_FLAGS; @@ -1170,6 +1176,14 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv, if (strcmp(extensions[i]->name, __DRI2_INTEROP) == 0) psc->interop = (__DRI2interopExtension*)extensions[i]; + + /* DRI2 version 3 is also required because + * GLX_ARB_control_flush_control requires GLX_ARB_create_context. + */ + if (psc->dri2->base.version >= 3 + && strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) + __glXEnableDirectExtension(&psc->base, +"GLX_ARB_context_flush_control"); } } diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index b79fec7335..d613073994 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -235,7 +235,8 @@ dri3_create_context_attribs(struct glx_screen *base, uint32_t flags = 0; unsigned api; int reset = __DRI_CTX_RESET_NO_NOTIFICATION; - uint32_t ctx_attribs[2 * 5]; + int release = __DRI_CTX_RELEASE_BEHAVIOR_FLUSH; + uint32_t ctx_attribs[2 * 6]; unsigned num_ctx_attribs = 0; uint32_t render_type; @@ -244,7 +245,7 @@ dri3_create_context_attribs(struct glx_screen *base, if (!dri2_convert_glx_attribs(num_attribs, attribs, &major_ver, &minor_ver, &render_type, &flags, &api, - &reset, error)) + &reset, &release, error)) goto error_exit; /* Check the renderType value */ @@ -279,6 +280,11 @@ dri3_create_context_attribs(struct glx_screen *base, ctx_attribs[num_ctx_attribs++] = reset; } + if (release != __DRI_CTX_RELEASE_BEHAVIOR_FLUSH) { + ctx_attribs[num_ctx_attribs++] = __DRI_CTX_ATTRIB_RELEASE_BEHAVIOR; + ctx_attribs[num_ctx_attribs++] = release; + } + if (flags != 0) { ctx_attribs[num_ctx_attribs++] = __DRI_CTX_ATTRIB_FLAGS; @@ -755,6 +761,10 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv, if (strcmp(extensions[i]->name, __DRI2_INTEROP) == 0) psc->interop = (__DRI2interopExtension*)extensions[i]; + + if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) + __glXEnableDirectExtension(&psc->base, +"GLX_ARB_context_flush_control"); } } diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index e2bbd48d3a..3b82309fa2 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -475,7 +475,7 @@ _X_HIDDEN bool dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs, unsigned *major_ver, unsigned *minor_ver, uint32_t *render_type, uint32_t *flags, unsigned *api, - int *reset, unsigned *error) + int *reset, int *release, unsigned *error) { unsigne
Mesa (master): egl/dri2: Factor out context attribute initialization
Module: Mesa Branch: master Commit: 9ef7158a0985d789958eb43cf08476d50af00f2a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ef7158a0985d789958eb43cf08476d50af00f2a Author: Adam Jackson Date: Thu Sep 22 03:38:01 2016 -0400 egl/dri2: Factor out context attribute initialization Signed-off-by: Adam Jackson Reviewed-by: Eric Engestrom Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov --- src/egl/drivers/dri2/egl_dri2.c | 31 +++ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 503450542e..44cddfd0ed 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1247,6 +1247,9 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf, struct dri2_egl_config *dri2_config = dri2_egl_config(conf); const __DRIconfig *dri_config; int api; + unsigned error; + unsigned num_attribs = NUM_ATTRIBS; + uint32_t ctx_attribs[NUM_ATTRIBS]; (void) drv; @@ -1339,15 +1342,11 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf, else dri_config = NULL; - if (dri2_dpy->image_driver) { - unsigned error; - unsigned num_attribs = NUM_ATTRIBS; - uint32_t ctx_attribs[NUM_ATTRIBS]; - - if (!dri2_fill_context_attribs(dri2_ctx, dri2_dpy, ctx_attribs, -&num_attribs)) - goto cleanup; + if (!dri2_fill_context_attribs(dri2_ctx, dri2_dpy, ctx_attribs, + &num_attribs)) + goto cleanup; + if (dri2_dpy->image_driver) { dri2_ctx->dri_context = dri2_dpy->image_driver->createContextAttribs(dri2_dpy->dri_screen, api, @@ -1360,14 +1359,6 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf, dri2_create_context_attribs_error(error); } else if (dri2_dpy->dri2) { if (dri2_dpy->dri2->base.version >= 3) { - unsigned error; - unsigned num_attribs = NUM_ATTRIBS; - uint32_t ctx_attribs[NUM_ATTRIBS]; - - if (!dri2_fill_context_attribs(dri2_ctx, dri2_dpy, ctx_attribs, -&num_attribs)) -goto cleanup; - dri2_ctx->dri_context = dri2_dpy->dri2->createContextAttribs(dri2_dpy->dri_screen, api, @@ -1389,14 +1380,6 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf, } else { assert(dri2_dpy->swrast); if (dri2_dpy->swrast->base.version >= 3) { - unsigned error; - unsigned num_attribs = NUM_ATTRIBS; - uint32_t ctx_attribs[NUM_ATTRIBS]; - - if (!dri2_fill_context_attribs(dri2_ctx, dri2_dpy, ctx_attribs, -&num_attribs)) -goto cleanup; - dri2_ctx->dri_context = dri2_dpy->swrast->createContextAttribs(dri2_dpy->dri_screen, api, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): docs: Mark GLX_ARB_context_flush_control done
Module: Mesa Branch: master Commit: d547e18184978affd95a72dc524ca648efbe9812 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d547e18184978affd95a72dc524ca648efbe9812 Author: Adam Jackson Date: Mon Nov 6 16:10:22 2017 -0500 docs: Mark GLX_ARB_context_flush_control done Requires an unreleased X server, but from the client GLX side this is as done as it gets. Signed-off-by: Adam Jackson --- docs/features.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index d228a0207b..10ccf9d608 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -334,7 +334,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve GL_OES_texture_half_float_linear DONE (i965, r300, r600, radeonsi, nv30, nv50, nvc0, softpipe, llvmpipe) GL_OES_texture_view not started - based on GL_ARB_texture_view GL_OES_viewport_array DONE (i965, nvc0, radeonsi) - GLX_ARB_context_flush_control not started + GLX_ARB_context_flush_control DONE GLX_ARB_robustness_application_isolation not started GLX_ARB_robustness_share_group_isolation not started ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i965: Enable flush control
Module: Mesa Branch: master Commit: 6ce9006d76c050663af0be61cc88c3215d6f8cea URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ce9006d76c050663af0be61cc88c3215d6f8cea Author: Neil Roberts Date: Wed Oct 1 20:00:50 2014 +0100 i965: Enable flush control Reviewed-by: Adam Jackson Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov Reviewed-by: Kenneth Graunke Signed-off-by: Neil Roberts --- src/mesa/drivers/dri/i965/brw_context.c | 20 +++- src/mesa/drivers/dri/i965/intel_screen.c | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index bb8b755cb5..879daae774 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -850,7 +850,9 @@ brwCreateContext(gl_api api, return false; } - if (ctx_config->attribute_mask & ~__DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) { + if (ctx_config->attribute_mask & + ~(__DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY | + __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR)) { *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; return false; } @@ -859,6 +861,20 @@ brwCreateContext(gl_api api, ((ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) && ctx_config->reset_strategy != __DRI_CTX_RESET_NO_NOTIFICATION); + GLenum release_behavior = GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH; + if (ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR) { + switch (ctx_config->release_behavior) { + case __DRI_CTX_RELEASE_BEHAVIOR_NONE: + release_behavior = GL_NONE; + break; + case __DRI_CTX_RELEASE_BEHAVIOR_FLUSH: + break; + default: + *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; + return false; + } + } + struct brw_context *brw = rzalloc(NULL, struct brw_context); if (!brw) { fprintf(stderr, "%s: failed to alloc context\n", __func__); @@ -1030,6 +1046,8 @@ brwCreateContext(gl_api api, ctx->Const.RobustAccess = GL_TRUE; } + ctx->Const.ContextReleaseBehavior = release_behavior; + if (INTEL_DEBUG & DEBUG_SHADER_TIME) brw_init_shader_time(brw); diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index cdc36adc78..4bfb6636c3 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -1431,6 +1431,7 @@ static const __DRIextension *screenExtensions[] = { &intelRendererQueryExtension.base, &dri2ConfigQueryExtension.base, &dri2NoErrorExtension.base, +&dri2FlushControlExtension.base, NULL }; @@ -1441,6 +1442,7 @@ static const __DRIextension *intelRobustScreenExtensions[] = { &intelImageExtension.base, &intelRendererQueryExtension.base, &dri2ConfigQueryExtension.base, +&dri2FlushControlExtension.base, &dri2Robustness.base, &dri2NoErrorExtension.base, NULL ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): gallium: Wire up flush control
Module: Mesa Branch: master Commit: 5cc06bec1993d856370545fb3f7f363757ddae8b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5cc06bec1993d856370545fb3f7f363757ddae8b Author: Adam Jackson Date: Wed Feb 4 13:05:36 2015 -0500 gallium: Wire up flush control Reviewed-by: Marek Olšák Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/gallium/include/state_tracker/st_api.h | 1 + src/gallium/state_trackers/dri/dri_context.c | 6 +- src/mesa/state_tracker/st_manager.c | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h index 2232c3efa1..11a9878cf6 100644 --- a/src/gallium/include/state_tracker/st_api.h +++ b/src/gallium/include/state_tracker/st_api.h @@ -91,6 +91,7 @@ enum st_api_feature #define ST_CONTEXT_FLAG_ROBUST_ACCESS (1 << 2) #define ST_CONTEXT_FLAG_RESET_NOTIFICATION_ENABLED (1 << 3) #define ST_CONTEXT_FLAG_NO_ERROR(1 << 4) +#define ST_CONTEXT_FLAG_RELEASE_NONE (1 << 5) /** * Reasons that context creation might fail. diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c index d3a57322af..18bbfa046c 100644 --- a/src/gallium/state_trackers/dri/dri_context.c +++ b/src/gallium/state_trackers/dri/dri_context.c @@ -57,7 +57,7 @@ dri_create_context(gl_api api, const struct gl_config * visual, unsigned allowed_flags = __DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE | __DRI_CTX_FLAG_NO_ERROR; - unsigned allowed_attribs = 0; + unsigned allowed_attribs = __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR; const __DRIbackgroundCallableExtension *backgroundCallable = screen->sPriv->dri2.backgroundCallable; @@ -112,6 +112,10 @@ dri_create_context(gl_api api, const struct gl_config * visual, if (ctx_config->flags & __DRI_CTX_FLAG_NO_ERROR) attribs.flags |= ST_CONTEXT_FLAG_NO_ERROR; + if ((ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR) + && (ctx_config->release_behavior == __DRI_CTX_RELEASE_BEHAVIOR_NONE)) + attribs.flags |= ST_CONTEXT_FLAG_RELEASE_NONE; + if (sharedContextPrivate) { st_share = ((struct dri_context *)sharedContextPrivate)->st; } diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index eebde62183..48260df0c3 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -882,6 +882,9 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi, st_install_device_reset_callback(st); } + if (attribs->flags & ST_CONTEXT_FLAG_RELEASE_NONE) + st->ctx->Const.ContextReleaseBehavior = GL_NONE; + /* need to perform version check */ if (attribs->major > 1 || attribs->minor > 0) { /* Is the actual version less than the requested version? ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): drisw: Enable flush control for llvmpipe and softpipe
Module: Mesa Branch: master Commit: 791d06b23bba7d8a785a89b86af6ccf03e1271ba URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=791d06b23bba7d8a785a89b86af6ccf03e1271ba Author: Adam Jackson Date: Wed Feb 4 13:04:26 2015 -0500 drisw: Enable flush control for llvmpipe and softpipe Hilariously this is a fairly big win. Neil's multi-context-test improves from ~24 to ~36 fps with llvmpipe on a Core i5-3317U. softpipe also improves, from about 2.25 to 3.09 fps (when it's that slow, you're allowed to be that precise). I'd have added it to swrast classic, but the testcase wants GL 3.0 and shaders, and that's not a thing classic has, so I figured making it work on softpipe was crime enough. Reviewed-by: Marek Olšák Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/gallium/state_trackers/dri/drisw.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/state_trackers/dri/drisw.c b/src/gallium/state_trackers/dri/drisw.c index 9466cfdb20..eb5752386d 100644 --- a/src/gallium/state_trackers/dri/drisw.c +++ b/src/gallium/state_trackers/dri/drisw.c @@ -381,6 +381,7 @@ static const __DRIextension *drisw_screen_extensions[] = { &dri2FenceExtension.base, &dri2NoErrorExtension.base, &driSWImageExtension.base, + &dri2FlushControlExtension.base, NULL }; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri: Change __DriverApiRec:: CreateContext to take a struct for attribs
Module: Mesa Branch: master Commit: 6d87500fe12e77ad13db057430964b864cacb055 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d87500fe12e77ad13db057430964b864cacb055 Author: Neil Roberts Date: Wed Oct 1 20:00:46 2014 +0100 dri: Change __DriverApiRec::CreateContext to take a struct for attribs Previously the CreateContext method of __DriverApiRec took a set of arguments to describe the attribute values from the window system API's CreateContextAttribs function. As more attributes get added this could quickly get unworkable and every new attribute needs a modification for every driver. To fix that, pass the attribute values in a struct instead. The struct has a bitmask to specify which members are used. The first three members (two for the GL version and one for the flags) are always set. If the bit is not set in the attribute mask then it can be assumed the attribute has the default value. Drivers will error if unknown bits in the mask are set. Reviewed-by: Adam Jackson Reviewed-by: Nicolai Hähnle Reviewed-by: Emil Velikov Signed-off-by: Neil Roberts --- src/gallium/state_trackers/dri/dri_context.c | 38 - src/gallium/state_trackers/dri/dri_context.h | 14 +++ src/mesa/drivers/dri/common/dri_util.c | 57 +++--- src/mesa/drivers/dri/common/dri_util.h | 37 ++--- src/mesa/drivers/dri/i915/intel_screen.c | 18 src/mesa/drivers/dri/i965/brw_context.c| 41 ++ src/mesa/drivers/dri/i965/brw_context.h| 6 +-- src/mesa/drivers/dri/nouveau/nouveau_context.c | 15 +++ src/mesa/drivers/dri/nouveau/nouveau_context.h | 3 +- src/mesa/drivers/dri/r200/r200_context.c | 12 ++ src/mesa/drivers/dri/r200/r200_context.h | 7 +--- src/mesa/drivers/dri/radeon/radeon_context.c | 12 ++ src/mesa/drivers/dri/radeon/radeon_context.h | 7 +--- src/mesa/drivers/dri/swrast/swrast.c | 16 14 files changed, 152 insertions(+), 131 deletions(-) diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c index 8776aacc09..d3a57322af 100644 --- a/src/gallium/state_trackers/dri/dri_context.c +++ b/src/gallium/state_trackers/dri/dri_context.c @@ -42,14 +42,10 @@ GLboolean dri_create_context(gl_api api, const struct gl_config * visual, - __DRIcontext * cPriv, - unsigned major_version, - unsigned minor_version, - uint32_t flags, - bool notify_reset, - unsigned priority, - unsigned *error, - void *sharedContextPrivate) + __DRIcontext * cPriv, + const struct __DriverContextConfig *ctx_config, + unsigned *error, + void *sharedContextPrivate) { __DRIscreen *sPriv = cPriv->driScreenPriv; struct dri_screen *screen = dri_screen(sPriv); @@ -61,18 +57,21 @@ dri_create_context(gl_api api, const struct gl_config * visual, unsigned allowed_flags = __DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE | __DRI_CTX_FLAG_NO_ERROR; + unsigned allowed_attribs = 0; const __DRIbackgroundCallableExtension *backgroundCallable = screen->sPriv->dri2.backgroundCallable; - if (screen->has_reset_status_query) + if (screen->has_reset_status_query) { allowed_flags |= __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS; + allowed_attribs |= __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY; + } - if (flags & ~allowed_flags) { + if (ctx_config->flags & ~allowed_flags) { *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; goto fail; } - if (!screen->has_reset_status_query && notify_reset) { + if (ctx_config->attribute_mask & ~allowed_attribs) { *error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; goto fail; } @@ -89,10 +88,10 @@ dri_create_context(gl_api api, const struct gl_config * visual, case API_OPENGL_CORE: attribs.profile = api == API_OPENGL_COMPAT ? ST_PROFILE_DEFAULT : ST_PROFILE_OPENGL_CORE; - attribs.major = major_version; - attribs.minor = minor_version; + attribs.major = ctx_config->major_version; + attribs.minor = ctx_config->minor_version; - if ((flags & __DRI_CTX_FLAG_FORWARD_COMPATIBLE) != 0) + if ((ctx_config->flags & __DRI_CTX_FLAG_FORWARD_COMPATIBLE) != 0) attribs.flags |= ST_CONTEXT_FLAG_FORWARD_COMPATIBLE; break; default: @@ -100,16 +99,17 @@ dri_create_context(gl_api api, const struct gl_config * visual, goto fail; } - if ((flags & __DRI_CTX_FLAG_DEBUG) != 0) + if ((ctx_config->flags & __DRI_CTX_FLAG_DEBUG) != 0) attribs.flags |= ST_CONTEXT_FLAG_DEBUG; -
Mesa (master): egl: Simplify the "driver" interface
Module: Mesa Branch: master Commit: b174a1ae720cb404738cd57c431f5769d677957d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b174a1ae720cb404738cd57c431f5769d677957d Author: Adam Jackson Date: Mon Aug 28 11:23:58 2017 -0400 egl: Simplify the "driver" interface "Driver" isn't a great word for what this layer is, it's effectively a build-time choice about what OS you're targeting. Despite that both of the extant backends totally ignore the display argument, the old code would only set up the backend relative to a display. That causes problems! One problem is it means eglGetProcAddress can generate X or Wayland protocol when it tries to connect to a default display so it can call into the backend, which is, you know, completely bonkers. Any other EGL API that doesn't reference a display, like EGL_EXT_device_query, would have the same issue. Fortunately this is a problem that can be solved with the delete key. Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- docs/egl.html | 10 -- src/egl/drivers/dri2/egl_dri2.c | 4 +- src/egl/drivers/haiku/egl_haiku.cpp | 2 +- src/egl/main/egldriver.c| 262 +++- src/egl/main/egldriver.h| 6 +- 5 files changed, 22 insertions(+), 262 deletions(-) diff --git a/docs/egl.html b/docs/egl.html index e752a707a3..3d8a85b4e7 100644 --- a/docs/egl.html +++ b/docs/egl.html @@ -130,16 +130,6 @@ mesa/demos repository. runtime -EGL_DRIVER - - -This variable specifies a full path to or the name of an EGL driver. It -forces the specified EGL driver to be loaded. It comes in handy when one wants -to test a specific driver. This variable is ignored for setuid/setgid -binaries. - - - EGL_PLATFORM diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index c2b16d1173..0db80a091f 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -3193,12 +3193,10 @@ dri2_load(_EGLDriver *drv) * Create a new _EGLDriver object and init its dispatch table. */ _EGLDriver * -_eglBuiltInDriverDRI2(const char *args) +_eglBuiltInDriver(void) { struct dri2_egl_driver *dri2_drv; - (void) args; - dri2_drv = calloc(1, sizeof *dri2_drv); if (!dri2_drv) return NULL; diff --git a/src/egl/drivers/haiku/egl_haiku.cpp b/src/egl/drivers/haiku/egl_haiku.cpp index 10f3abc070..c17198d6dd 100644 --- a/src/egl/drivers/haiku/egl_haiku.cpp +++ b/src/egl/drivers/haiku/egl_haiku.cpp @@ -322,7 +322,7 @@ haiku_unload(_EGLDriver* drv) */ extern "C" _EGLDriver* -_eglBuiltInDriverHaiku(const char *args) +_eglBuiltInDriver(void) { CALLED(); diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c index 60753bb22e..1ede95ea6f 100644 --- a/src/egl/main/egldriver.c +++ b/src/egl/main/egldriver.c @@ -44,232 +44,32 @@ #include "egldriver.h" #include "egllog.h" -typedef struct _egl_module { - char *Name; - _EGLMain_t BuiltIn; - _EGLDriver *Driver; -} _EGLModule; - static mtx_t _eglModuleMutex = _MTX_INITIALIZER_NP; -static _EGLArray *_eglModules; - -const struct { - const char *name; - _EGLMain_t main; -} _eglBuiltInDrivers[] = { -#ifdef _EGL_BUILT_IN_DRIVER_DRI2 - { "egl_dri2", _eglBuiltInDriverDRI2 }, -#endif -#ifdef _EGL_BUILT_IN_DRIVER_HAIKU - { "egl_haiku", _eglBuiltInDriverHaiku }, -#endif -}; - -/** - * Load a module and create the driver object. - */ -static EGLBoolean -_eglLoadModule(_EGLModule *mod) -{ - _EGLDriver *drv; - - if (mod->Driver) - return EGL_TRUE; - - if (!mod->BuiltIn) - return EGL_FALSE; - - drv = mod->BuiltIn(NULL); - if (!drv || !drv->Name) - return EGL_FALSE; - - mod->Driver = drv; - - return EGL_TRUE; -} - - -/** - * Unload a module. - */ -static void -_eglUnloadModule(_EGLModule *mod) -{ - /* destroy the driver */ - if (mod->Driver && mod->Driver->Unload) - mod->Driver->Unload(mod->Driver); - - mod->Driver = NULL; -} - - -/** - * Add a module to the module array. - */ -static _EGLModule * -_eglAddModule(const char *name) -{ - _EGLModule *mod; - EGLint i; - - if (!_eglModules) { - _eglModules = _eglCreateArray("Module", 8); - if (!_eglModules) - return NULL; - } - - /* find duplicates */ - for (i = 0; i < _eglModules->Size; i++) { - mod = _eglModules->Elements[i]; - if (strcmp(mod->Name, name) == 0) - return mod; - } - - /* allocate a new one */ - mod = calloc(1, sizeof(*mod)); - if (mod) { - mod->Name = strdup(name); - if (!mod->Name) { - free(mod); - mod = NULL; - } - } - if (mod) { - _eglAppendArray(_eglModules, (void *) mod); - _eglLog(_EGL_DEBUG, "added %s to module array", mod->Name); - } - - return mod; -} - - -/** -
Mesa (master): glx: Be more tolerant in glXImportContext (v2)
Module: Mesa Branch: master Commit: 08521629503356a5cfe8e673b32ece7cb4aefff2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=08521629503356a5cfe8e673b32ece7cb4aefff2 Author: Adam Jackson Date: Tue Sep 26 16:38:31 2017 -0400 glx: Be more tolerant in glXImportContext (v2) Ugh the GLX code. __GLX_MAX_CONTEXT_PROPS is 3 because glxproto.h is just a pile of ancient runes, so when the server begins sending more than 3 context properties this code refuses to work _at all_. Which is all just silly. If _XReply succeeds, it will have buffered the whole reply, we can just walk through each property one at a time. v2: Now with no arbitrary limits. (Eric Anholt) Signed-off-by: Adam Jackson Reviewed-by: Eric Anholt --- src/glx/glxcmds.c | 72 +++ 1 file changed, 30 insertions(+), 42 deletions(-) diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index 29b94b8810..10c7c2c3eb 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -1403,15 +1403,9 @@ glXImportContextEXT(Display *dpy, GLXContextID contextID) xGLXQueryContextReply reply; CARD8 opcode; struct glx_context *ctx; - - /* This GLX implementation knows about 5 different properties, so -* allow the server to send us one of each. -*/ - int propList[5 * 2], *pProp, nPropListBytes; - int numProps; - int i, renderType; - XID share; - struct glx_config *mode; + int i, renderType = GLX_RGBA_TYPE; /* By default, assume RGBA context */ + XID share = None; + struct glx_config *mode = NULL; uint32_t fbconfigID = 0; uint32_t visualID = 0; uint32_t screen = 0; @@ -1469,42 +1463,36 @@ glXImportContextEXT(Display *dpy, GLXContextID contextID) req->context = contextID; } - _XReply(dpy, (xReply *) & reply, 0, False); - - if (reply.n <= __GLX_MAX_CONTEXT_PROPS) - nPropListBytes = reply.n * 2 * sizeof propList[0]; - else - nPropListBytes = 0; - _XRead(dpy, (char *) propList, nPropListBytes); + if (_XReply(dpy, (xReply *) & reply, 0, False) && + reply.n < (INT32_MAX / 2)) { + + for (i = 0; i < reply.n * 2; i++) { + int prop[2]; + + _XRead(dpy, (char *)prop, sizeof(prop)); + switch (prop[0]) { + case GLX_SCREEN: +screen = prop[1]; +got_screen = True; +break; + case GLX_SHARE_CONTEXT_EXT: +share = prop[1]; +break; + case GLX_VISUAL_ID_EXT: +visualID = prop[1]; +break; + case GLX_FBCONFIG_ID: +fbconfigID = prop[1]; +break; + case GLX_RENDER_TYPE: +renderType = prop[1]; +break; + } + } + } UnlockDisplay(dpy); SyncHandle(); - numProps = nPropListBytes / (2 * sizeof(propList[0])); - share = None; - mode = NULL; - renderType = GLX_RGBA_TYPE; /* By default, assume RGBA context */ - pProp = propList; - - for (i = 0, pProp = propList; i < numProps; i++, pProp += 2) - switch (pProp[0]) { - case GLX_SCREEN: -screen = pProp[1]; -got_screen = True; -break; - case GLX_SHARE_CONTEXT_EXT: -share = pProp[1]; -break; - case GLX_VISUAL_ID_EXT: -visualID = pProp[1]; -break; - case GLX_FBCONFIG_ID: -fbconfigID = pProp[1]; -break; - case GLX_RENDER_TYPE: -renderType = pProp[1]; -break; - } - if (!got_screen) return NULL; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Sort the GLX extension bit enum and table
Module: Mesa Branch: master Commit: 52ed3bca91ff13217378196d6800ca7113641a63 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=52ed3bca91ff13217378196d6800ca7113641a63 Author: Adam Jackson Date: Thu Sep 21 15:59:54 2017 -0400 glx: Sort the GLX extension bit enum and table Not quite asciibetical: ARB, then EXT, then vendor, just like the GL extension enum just below. No functional change, but it bothered me. Signed-off-by: Adam Jackson Reviewed-by: Kenneth Graunke --- src/glx/glxextensions.c | 22 +++--- src/glx/glxextensions.h | 24 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c index 88bf0de3e6..6882e442fe 100644 --- a/src/glx/glxextensions.c +++ b/src/glx/glxextensions.c @@ -139,14 +139,17 @@ static const struct extension_info known_glx_extensions[] = { { GLX(ARB_framebuffer_sRGB),VER(0,0), Y, Y, N, N }, { GLX(ARB_get_proc_address),VER(1,4), Y, N, Y, N }, { GLX(ARB_multisample), VER(1,4), Y, Y, N, N }, - { GLX(ATI_pixel_format_float), VER(0,0), N, N, N, N }, + { GLX(EXT_buffer_age), VER(0,0), Y, N, N, Y }, + { GLX(EXT_create_context_es2_profile), VER(0,0), Y, N, N, N }, + { GLX(EXT_create_context_es_profile), VER(0,0), Y, N, N, N }, + { GLX(EXT_fbconfig_packed_float), VER(0,0), Y, Y, N, N }, + { GLX(EXT_framebuffer_sRGB),VER(0,0), Y, Y, N, N }, { GLX(EXT_import_context), VER(0,0), Y, Y, N, N }, + { GLX(EXT_texture_from_pixmap), VER(0,0), Y, N, N, N }, { GLX(EXT_visual_info), VER(0,0), Y, Y, N, N }, { GLX(EXT_visual_rating), VER(0,0), Y, Y, N, N }, - { GLX(EXT_fbconfig_packed_float), VER(0,0), Y, Y, N, N }, - { GLX(EXT_framebuffer_sRGB),VER(0,0), Y, Y, N, N }, - { GLX(EXT_create_context_es2_profile), VER(0,0), Y, N, N, N }, - { GLX(EXT_create_context_es_profile), VER(0,0), Y, N, N, N }, + { GLX(ATI_pixel_format_float), VER(0,0), N, N, N, N }, + { GLX(INTEL_swap_event),VER(0,0), Y, N, N, N }, { GLX(MESA_copy_sub_buffer),VER(0,0), Y, N, N, N }, { GLX(MESA_multithread_makecurrent),VER(0,0), Y, N, Y, N }, { GLX(MESA_query_renderer), VER(0,0), Y, N, N, Y }, @@ -154,18 +157,15 @@ static const struct extension_info known_glx_extensions[] = { { GLX(NV_float_buffer), VER(0,0), N, N, N, N }, { GLX(OML_swap_method), VER(0,0), Y, Y, N, N }, { GLX(OML_sync_control),VER(0,0), Y, N, N, Y }, - { GLX(SGI_make_current_read), VER(1,3), Y, N, N, N }, - { GLX(SGI_swap_control),VER(0,0), Y, N, N, N }, - { GLX(SGI_video_sync), VER(0,0), Y, N, N, Y }, { GLX(SGIS_multisample),VER(0,0), Y, Y, N, N }, { GLX(SGIX_fbconfig), VER(1,3), Y, Y, N, N }, { GLX(SGIX_pbuffer),VER(1,3), Y, Y, N, N }, { GLX(SGIX_swap_barrier), VER(0,0), N, N, N, N }, { GLX(SGIX_swap_group), VER(0,0), N, N, N, N }, { GLX(SGIX_visual_select_group),VER(0,0), Y, Y, N, N }, - { GLX(EXT_texture_from_pixmap), VER(0,0), Y, N, N, N }, - { GLX(INTEL_swap_event),VER(0,0), Y, N, N, N }, - { GLX(EXT_buffer_age), VER(0,0), Y, N, N, Y }, + { GLX(SGI_make_current_read), VER(1,3), Y, N, N, N }, + { GLX(SGI_swap_control),VER(0,0), Y, N, N, N }, + { GLX(SGI_video_sync), VER(0,0), Y, N, N, Y }, { NULL } }; diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h index ff35dedd0b..6225742da5 100644 --- a/src/glx/glxextensions.h +++ b/src/glx/glxextensions.h @@ -43,14 +43,17 @@ enum ARB_fbconfig_float_bit, ARB_get_proc_address_bit, ARB_multisample_bit, - ATI_pixel_format_float_bit, + EXT_buffer_age_bit, + EXT_create_context_es2_profile_bit, + EXT_create_context_es_profile_bit, + EXT_fbconfig_packed_float_bit, + EXT_framebuffer_sRGB_bit, + EXT_import_context_bit, + EXT_texture_from_pixmap_bit, EXT_visual_info_bit, EXT_visual_rating_bit, - EXT_import_context_bit, - EXT_framebuffer_sRGB_bit, - EXT_fbconfig_packed_float_bit, - EXT_create_context_es_profile_bit, - EXT_create_context_es2_profile_bit, + ATI_pixel_format_float_bit, + INTEL_swap_event_bit, MESA_copy_sub_buffer_bit, MESA_depth_float_bit, MESA_multithread_makecurrent_bit, @@ -60,18 +63,15 @@ enum NV_float_buffer_bit, OML_swap_method_bit, OML_sync_control_bit, - SGI_make_current_read_bit, - SGI_swap_control_bit, - SGI_video_sync_bit, SGIS_multisample_bit, SGIX_fbconfig_bit, SGIX_pbuffer_bit, SGIX_swap_barrier_bit, SGIX_swap_group_bit, SGIX_visual_select_group_bit, - EXT_texture_from_pixmap_bit, - INTEL_swap_event_bit, - EXT_buffer_age_bit, + SGI_make_current_read_bit, + SGI_swap_control_bit, + SGI_video_sync_bit, }; /* From the
Mesa (master): egl/drm: Don't "fall back" to /dev/dri/ card0 if the first open fails
Module: Mesa Branch: master Commit: cd8ab40cd4a047ec64f59ff078b6558b1dab44a5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cd8ab40cd4a047ec64f59ff078b6558b1dab44a5 Author: Adam Jackson Date: Thu Aug 24 14:52:14 2017 -0400 egl/drm: Don't "fall back" to /dev/dri/card0 if the first open fails The snprintf stuff here already constructs the right name for the device node, and if it doesn't, you configured Mesa wrong, don't do that. Signed-off-by: Adam Jackson Reviewed-by: Eric Engestrom --- src/egl/drivers/dri2/platform_drm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index 259b1cd519..0ccbd9a30a 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -667,8 +667,6 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) int n = snprintf(buf, sizeof(buf), DRM_DEV_NAME, DRM_DIR_NAME, 0); if (n != -1 && n < sizeof(buf)) dri2_dpy->fd = loader_open_device(buf); - if (dri2_dpy->fd < 0) - dri2_dpy->fd = loader_open_device("/dev/dri/card0"); gbm = gbm_create_device(dri2_dpy->fd); if (gbm == NULL) { err = "DRI2: failed to create gbm device"; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa: Implement GL_ARB_polygon_offset_clamp
Module: Mesa Branch: master Commit: 2bae451bd3fe93c47aa231ab35ae18ae86b7df5a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2bae451bd3fe93c47aa231ab35ae18ae86b7df5a Author: Adam Jackson Date: Thu Aug 24 17:00:43 2017 -0400 mesa: Implement GL_ARB_polygon_offset_clamp Semantically identical to the EXT version (whose string is still valid for GLES), so rename the bit but expose both extension strings. (Suggested by Ilia Mirkin and Ian Romanick.) v3: Fix the entrypoint alias in GL4x.xml (Ilia) Signed-off-by: Adam Jackson Reviewed-by: Ilia Mirkin --- docs/features.txt| 2 +- docs/relnotes/17.3.0.html| 1 + src/mapi/glapi/gen/GL4x.xml | 9 + src/mesa/drivers/dri/i965/intel_extensions.c | 2 +- src/mesa/main/dlist.c| 2 +- src/mesa/main/extensions_table.h | 3 ++- src/mesa/main/get.c | 2 +- src/mesa/main/get_hash_params.py | 4 ++-- src/mesa/main/mtypes.h | 2 +- src/mesa/main/polygon.c | 9 +++-- src/mesa/main/version.c | 2 +- src/mesa/state_tracker/st_extensions.c | 2 +- 12 files changed, 24 insertions(+), 16 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 3f91c2daae..0435ce61ff 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -226,7 +226,7 @@ GL 4.6, GLSL 4.60 GL_ARB_gl_spirv in progress (Nicolai Hähnle, Ian Romanick) GL_ARB_indirect_parametersDONE (nvc0, radeonsi) GL_ARB_pipeline_statistics_query DONE (i965, nvc0, radeonsi, softpipe, swr) - GL_ARB_polygon_offset_clamp not started + GL_ARB_polygon_offset_clamp DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, swr) GL_ARB_shader_atomic_counter_ops DONE (i965/gen7+, nvc0, radeonsi, softpipe) GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi) GL_ARB_shader_group_vote DONE (i965, nvc0, radeonsi) diff --git a/docs/relnotes/17.3.0.html b/docs/relnotes/17.3.0.html index 8da43f22f0..4a74284632 100644 --- a/docs/relnotes/17.3.0.html +++ b/docs/relnotes/17.3.0.html @@ -44,6 +44,7 @@ Note: some of the new features are only available with certain drivers. +GL_ARB_polygon_offset_clamp on i965, nv50, nvc0, r600, radeonsi, llvmpipe, swr GL_ARB_transform_feedback_overflow_query on radeonsi GL_ARB_texture_filter_anisotropic on i965, nv50, nvc0, r600, radeonsi GL_EXT_memory_object on radeonsi diff --git a/src/mapi/glapi/gen/GL4x.xml b/src/mapi/glapi/gen/GL4x.xml index e958ee70c7..88dba5cd71 100644 --- a/src/mapi/glapi/gen/GL4x.xml +++ b/src/mapi/glapi/gen/GL4x.xml @@ -66,4 +66,13 @@ + + + + + + + + + diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c index c3cd8004a1..deacd0d9df 100644 --- a/src/mesa/drivers/dri/i965/intel_extensions.c +++ b/src/mesa/drivers/dri/i965/intel_extensions.c @@ -66,6 +66,7 @@ intelInitExtensions(struct gl_context *ctx) ctx->Extensions.ARB_occlusion_query = true; ctx->Extensions.ARB_occlusion_query2 = true; ctx->Extensions.ARB_point_sprite = true; + ctx->Extensions.ARB_polygon_offset_clamp = true; ctx->Extensions.ARB_seamless_cube_map = true; ctx->Extensions.ARB_shader_bit_encoding = true; ctx->Extensions.ARB_shader_draw_parameters = true; @@ -100,7 +101,6 @@ intelInitExtensions(struct gl_context *ctx) ctx->Extensions.EXT_packed_float = true; ctx->Extensions.EXT_pixel_buffer_object = true; ctx->Extensions.EXT_point_parameters = true; - ctx->Extensions.EXT_polygon_offset_clamp = true; ctx->Extensions.EXT_provoking_vertex = true; ctx->Extensions.EXT_stencil_two_side = true; ctx->Extensions.EXT_texture_array = true; diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 208471aca7..b7d1406eb7 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -10062,7 +10062,7 @@ _mesa_initialize_save_table(const struct gl_context *ctx) SET_ProgramUniformMatrix3x4fv(table, save_ProgramUniformMatrix3x4fv); SET_ProgramUniformMatrix4x3fv(table, save_ProgramUniformMatrix4x3fv); - /* GL_EXT_polygon_offset_clamp */ + /* GL_{ARB,EXT}_polygon_offset_clamp */ SET_PolygonOffsetClampEXT(table, save_PolygonOffsetClampEXT); /* GL_EXT_window_rectangles */ diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index d096260891..9475c1b69d 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -94,6 +94,7 @@ EXT(ARB_pipeline_statistics_query , ARB_pipeline_statistics_query EXT(ARB_pixel_buffer_object , EXT_pixel_buffer_object
Mesa (master): mesa: Implement GL_ARB_texture_filter_anisotropic
Module: Mesa Branch: master Commit: 00caf2ab088dd2e08ce410850dee61ba2b9aa63a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=00caf2ab088dd2e08ce410850dee61ba2b9aa63a Author: Adam Jackson Date: Thu Aug 24 14:40:32 2017 -0400 mesa: Implement GL_ARB_texture_filter_anisotropic The only difference from the EXT version is bumping the minmax to 16, so just hit all the drivers at once. v2: Fix driver names, add to 17.3 release notes (Ilia Mirkin) Reviewed-by: Ilia Mirkin Signed-off-by: Adam Jackson Reviewed-by: Kenneth Graunke --- docs/features.txt| 4 +++- docs/relnotes/17.3.0.html| 1 + src/glx/glxextensions.c | 1 + src/glx/glxextensions.h | 8 src/mesa/drivers/dri/i965/intel_extensions.c | 1 + src/mesa/drivers/dri/r200/r200_context.c | 1 + src/mesa/drivers/dri/radeon/radeon_context.c | 1 + src/mesa/main/extensions.c | 1 + src/mesa/main/extensions_table.h | 1 + src/mesa/main/mtypes.h | 1 + src/mesa/main/version.c | 2 +- src/mesa/state_tracker/st_extensions.c | 4 12 files changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 6f57ec26fd..3f91c2daae 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -231,10 +231,12 @@ GL 4.6, GLSL 4.60 GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi) GL_ARB_shader_group_vote DONE (i965, nvc0, radeonsi) GL_ARB_spirv_extensions in progress (Nicolai Hähnle, Ian Romanick) - GL_ARB_texture_filter_anisotropic not started + GL_ARB_texture_filter_anisotropic DONE (i965, nv50, nvc0, r600, radeonsi, softpipe (*), llvmpipe (*)) GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+, radeonsi, llvmpipe, softpipe) GL_KHR_no_error started (Timothy Arceri) +(*) softpipe and llvmpipe advertise 16x anisotropy but simply ignore the setting + These are the extensions cherry-picked to make GLES 3.1 GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi diff --git a/docs/relnotes/17.3.0.html b/docs/relnotes/17.3.0.html index 25d02cdca7..8da43f22f0 100644 --- a/docs/relnotes/17.3.0.html +++ b/docs/relnotes/17.3.0.html @@ -45,6 +45,7 @@ Note: some of the new features are only available with certain drivers. GL_ARB_transform_feedback_overflow_query on radeonsi +GL_ARB_texture_filter_anisotropic on i965, nv50, nvc0, r600, radeonsi GL_EXT_memory_object on radeonsi GL_EXT_memory_object_fd on radeonsi diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c index 22b078ce48..88bf0de3e6 100644 --- a/src/glx/glxextensions.c +++ b/src/glx/glxextensions.c @@ -190,6 +190,7 @@ static const struct extension_info known_gl_extensions[] = { { GL(ARB_texture_env_combine),VER(1,3), Y, N, N, N }, { GL(ARB_texture_env_crossbar), VER(1,4), Y, N, N, N }, { GL(ARB_texture_env_dot3), VER(1,3), Y, N, N, N }, + { GL(ARB_texture_filter_anisotropic), VER(0,0), Y, N, N, N }, { GL(ARB_texture_mirrored_repeat),VER(1,4), Y, N, N, N }, { GL(ARB_texture_non_power_of_two), VER(1,5), Y, N, N, N }, { GL(ARB_texture_rectangle), VER(0,0), Y, N, N, N }, diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h index 21ad02a44b..ff35dedd0b 100644 --- a/src/glx/glxextensions.h +++ b/src/glx/glxextensions.h @@ -101,6 +101,7 @@ enum GL_ARB_texture_env_combine_bit, GL_ARB_texture_env_crossbar_bit, GL_ARB_texture_env_dot3_bit, + GL_ARB_texture_filter_anisotropic_bit, GL_ARB_texture_mirrored_repeat_bit, GL_ARB_texture_non_power_of_two_bit, GL_ARB_texture_rectangle_bit, @@ -150,7 +151,6 @@ enum GL_EXT_texture_edge_clamp_bit, GL_EXT_texture_env_combine_bit, GL_EXT_texture_env_dot3_bit, - GL_EXT_texture_filter_anisotropic_bit, GL_EXT_texture_integer_bit, GL_EXT_texture_lod_bit, GL_EXT_texture_lod_bias_bit, @@ -223,11 +223,10 @@ enum /* Alias extension bits. These extensions exist in either vendor-specific * or EXT form and were later promoted to either EXT or ARB form. In all -* cases, the meaning is *exactly* the same. That's why +* cases, the meaning (to GLX) is *exactly* the same. That's why * EXT_texture_env_combine is *NOT* an alias of ARB_texture_env_combine and * EXT_texture_env_dot3 is *NOT* an alias of ARB_texture_env_dot3. Be -* careful! When in doubt, src/mesa/main/extensions.c in the Mesa tree -* is a great reference. +* careful! When in doubt, src/mesa/main/extensions.c is a great reference. */ GL_ATI_blend_equation_separate_bit = GL_EXT_blend_equation_separate_bit, @@ -235,6 +234,7 @@ enum GL_ATIX_texture_env_combine3_bit = GL_ATI_texture_env_co
Mesa (master): include: Sync Khronos headers for OpenGL 4.6
Module: Mesa Branch: master Commit: 5d2205fafb5d244af658de5e3c38c6cc805ae345 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5d2205fafb5d244af658de5e3c38c6cc805ae345 Author: Adam Jackson Date: Tue Aug 8 11:52:42 2017 -0400 include: Sync Khronos headers for OpenGL 4.6 Taken from c21e602b9fda1d3bbaecb08194592f67e6a0649b from OpenGL-Registry. (This time without breaking glext.h.) Signed-off-by: Adam Jackson Acked-by: Ilia Mirkin --- include/GL/glcorearb.h | 66 ++- include/GL/glext.h | 77 +++- include/GL/glxext.h| 2 +- include/GL/wglext.h| 2 +- src/mapi/glapi/registry/gl.xml | 261 + 5 files changed, 350 insertions(+), 58 deletions(-) diff --git a/include/GL/glcorearb.h b/include/GL/glcorearb.h index 1f4d64e83f..071b0c5613 100644 --- a/include/GL/glcorearb.h +++ b/include/GL/glcorearb.h @@ -2893,6 +2893,42 @@ GLAPI void APIENTRY glTextureBarrier (void); #endif #endif /* GL_VERSION_4_5 */ +#ifndef GL_VERSION_4_6 +#define GL_VERSION_4_6 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V0x9551 +#define GL_SPIR_V_BINARY 0x9552 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x0008 +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_TRANSFORM_FEEDBACK_OVERFLOW0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED +typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +GLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_VERSION_4_6 */ + #ifndef GL_ARB_ES2_compatibility #define GL_ARB_ES2_compatibility 1 #endif /* GL_ARB_ES2_compatibility */ @@ -3314,11 +3350,11 @@ GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, G #define GL_ARB_indirect_parameters 1 #define GL_PARAMETER_BUFFER_ARB 0x80EE #define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei
Mesa (master): Revert "include: Sync Khronos headers for OpenGL 4.6"
Module: Mesa Branch: master Commit: 9e454408335d7b4b465ea17590f06426dffe0211 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e454408335d7b4b465ea17590f06426dffe0211 Author: Adam Jackson Date: Thu Aug 24 13:15:15 2017 -0400 Revert "include: Sync Khronos headers for OpenGL 4.6" Broke the BUILDING_MESA bit, oops. This reverts commit ef1e87e6cdbd80e74a8bc6d48b0b174a0812fe69. --- include/GL/glcorearb.h | 66 +-- include/GL/glext.h | 82 ++--- include/GL/glxext.h| 2 +- include/GL/wglext.h| 2 +- src/mapi/glapi/registry/gl.xml | 261 - 5 files changed, 63 insertions(+), 350 deletions(-) diff --git a/include/GL/glcorearb.h b/include/GL/glcorearb.h index 071b0c5613..1f4d64e83f 100644 --- a/include/GL/glcorearb.h +++ b/include/GL/glcorearb.h @@ -2893,42 +2893,6 @@ GLAPI void APIENTRY glTextureBarrier (void); #endif #endif /* GL_VERSION_4_5 */ -#ifndef GL_VERSION_4_6 -#define GL_VERSION_4_6 1 -#define GL_SHADER_BINARY_FORMAT_SPIR_V0x9551 -#define GL_SPIR_V_BINARY 0x9552 -#define GL_PARAMETER_BUFFER 0x80EE -#define GL_PARAMETER_BUFFER_BINDING 0x80EF -#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x0008 -#define GL_VERTICES_SUBMITTED 0x82EE -#define GL_PRIMITIVES_SUBMITTED 0x82EF -#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 -#define GL_TESS_CONTROL_SHADER_PATCHES0x82F1 -#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 -#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 -#define GL_FRAGMENT_SHADER_INVOCATIONS0x82F4 -#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 -#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 -#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 -#define GL_POLYGON_OFFSET_CLAMP 0x8E1B -#define GL_SPIR_V_EXTENSIONS 0x9553 -#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 -#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF -#define GL_TRANSFORM_FEEDBACK_OVERFLOW0x82EC -#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED -typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp); -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); -GLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -GLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -GLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp); -#endif -#endif /* GL_VERSION_4_6 */ - #ifndef GL_ARB_ES2_compatibility #define GL_ARB_ES2_compatibility 1 #endif /* GL_ARB_ES2_compatibility */ @@ -3350,11 +3314,11 @@ GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, G #define GL_ARB_indirect_parameters 1 #define GL_PARAMETER_BUFFER_ARB 0x80EE #define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI voi
Mesa (master): include: Sync Khronos headers for OpenGL 4.6
Module: Mesa Branch: master Commit: ef1e87e6cdbd80e74a8bc6d48b0b174a0812fe69 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef1e87e6cdbd80e74a8bc6d48b0b174a0812fe69 Author: Adam Jackson Date: Tue Aug 8 11:52:42 2017 -0400 include: Sync Khronos headers for OpenGL 4.6 Taken from c21e602b9fda1d3bbaecb08194592f67e6a0649b from OpenGL-Registry. Signed-off-by: Adam Jackson Acked-by: Ilia Mirkin --- include/GL/glcorearb.h | 66 ++- include/GL/glext.h | 82 +++-- include/GL/glxext.h| 2 +- include/GL/wglext.h| 2 +- src/mapi/glapi/registry/gl.xml | 261 + 5 files changed, 350 insertions(+), 63 deletions(-) diff --git a/include/GL/glcorearb.h b/include/GL/glcorearb.h index 1f4d64e83f..071b0c5613 100644 --- a/include/GL/glcorearb.h +++ b/include/GL/glcorearb.h @@ -2893,6 +2893,42 @@ GLAPI void APIENTRY glTextureBarrier (void); #endif #endif /* GL_VERSION_4_5 */ +#ifndef GL_VERSION_4_6 +#define GL_VERSION_4_6 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V0x9551 +#define GL_SPIR_V_BINARY 0x9552 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x0008 +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_TRANSFORM_FEEDBACK_OVERFLOW0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED +typedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue); +GLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_VERSION_4_6 */ + #ifndef GL_ARB_ES2_compatibility #define GL_ARB_ES2_compatibility 1 #endif /* GL_ARB_ES2_compatibility */ @@ -3314,11 +3350,11 @@ GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, G #define GL_ARB_indirect_parameters 1 #define GL_PARAMETER_BUFFER_ARB 0x80EE #define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +GLAPI void APIENTRY
Mesa (master): docs: Update feature list for GL 4.6
Module: Mesa Branch: master Commit: d4ca66a15972ceb50ec6cc8630e52e59e407f215 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d4ca66a15972ceb50ec6cc8630e52e59e407f215 Author: Adam Jackson Date: Mon Jul 31 12:27:21 2017 -0400 docs: Update feature list for GL 4.6 ARB_polygon_offset_clamp and ARB_texture_filter_anisotropic look like they'd be pretty trivial to wire up. Reviewed-by: Samuel Pitoiset Signed-off-by: Adam Jackson --- docs/features.txt | 22 ++ 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 1f628e1c03..2ac80e6d6e 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -221,6 +221,20 @@ GL 4.5, GLSL 4.50 -- all DONE: nvc0, radeonsi GL_KHR_robustness DONE (i965) GL_EXT_shader_integer_mix DONE (all drivers that support GLSL) +GL 4.6, GLSL 4.60 + + GL_ARB_gl_spirv in progress (Nicolai Hähnle, Ian Romanick) + GL_ARB_gl_spirv_extensionsin progress (Nicolai Hähnle, Ian Romanick) + GL_ARB_indirect_parametersDONE (nvc0, radeonsi) + GL_ARB_pipeline_statistics_query DONE (i965, nvc0, radeonsi, softpipe, swr) + GL_ARB_polygon_offset_clamp not started + GL_ARB_shader_atomic_counter_ops DONE (i965/gen7+, nvc0, radeonsi, softpipe) + GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi) + GL_ARB_shader_group_vote DONE (i965, nvc0, radeonsi) + GL_ARB_texture_filter_anisotropic not started + GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+) + GL_KHR_no_error started (Timothy Arceri) + These are the extensions cherry-picked to make GLES 3.1 GLES3.1, GLSL ES 3.1 -- all DONE: i965/hsw+, nvc0, radeonsi @@ -282,20 +296,14 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve GL_ARB_compute_variable_group_sizeDONE (nvc0, radeonsi) GL_ARB_ES3_2_compatibilityDONE (i965/gen8+) GL_ARB_fragment_shader_interlock not started - GL_ARB_gl_spirv not started GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe) - GL_ARB_indirect_parametersDONE (nvc0, radeonsi) GL_ARB_parallel_shader_compilenot started, but Chia-I Wu did some related work in 2014 - GL_ARB_pipeline_statistics_query DONE (i965, nvc0, radeonsi, softpipe, swr) GL_ARB_post_depth_coverageDONE (i965) GL_ARB_robustness_isolation not started GL_ARB_sample_locations not started GL_ARB_seamless_cubemap_per_texture DONE (i965, nvc0, radeonsi, r600, softpipe, swr) - GL_ARB_shader_atomic_counter_ops DONE (i965/gen7+, nvc0, radeonsi, softpipe) GL_ARB_shader_ballot DONE (i965/gen8+, nvc0, radeonsi) GL_ARB_shader_clock DONE (i965/gen7+, nv50, nvc0, radeonsi) - GL_ARB_shader_draw_parameters DONE (i965, nvc0, radeonsi) - GL_ARB_shader_group_vote DONE (i965, nvc0, radeonsi) GL_ARB_shader_stencil_export DONE (i965/gen9+, radeonsi, softpipe, llvmpipe, swr) GL_ARB_shader_viewport_layer_arrayDONE (i965/gen6+, nvc0, radeonsi) GL_ARB_sparse_buffer DONE (radeonsi/CIK+) @@ -303,9 +311,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve GL_ARB_sparse_texture2not started GL_ARB_sparse_texture_clamp not started GL_ARB_texture_filter_minmax not started - GL_ARB_transform_feedback_overflow_query DONE (i965/gen6+) GL_KHR_blend_equation_advanced_coherent DONE (i965/gen9+) - GL_KHR_no_error started (Timothy Arceri) GL_KHR_texture_compression_astc_hdr DONE (i965/bxt) GL_KHR_texture_compression_astc_sliced_3d DONE (i965/gen9+) GL_OES_depth_texture_cube_map DONE (all drivers that support GLSL 1.30+) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Fix -Wint-to-pointer-cast
Module: Mesa Branch: master Commit: 0160fb1d50d314b9de496d49475a33ddff0f5702 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0160fb1d50d314b9de496d49475a33ddff0f5702 Author: Chad Versace Date: Fri May 5 12:27:03 2017 -0700 egl: Fix -Wint-to-pointer-cast main/egldisplay.c: In function '_eglParseX11DisplayAttribList': main/egldisplay.c:491:38: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] display->Options.Platform = (void *)value; The fix: cast to uinptr_t before void*. ^ Fixes: ddb99127 egl/x11: Honor the EGL_PLATFORM_X11_SCREEN_EXT attribute Cc: Adam Jackson Reviewed-by: Eric Engestrom Reviewed-by: Emil Velikov --- src/egl/main/egldisplay.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index c4b0fd6aab..6dda4e5e86 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -488,7 +488,7 @@ _eglParseX11DisplayAttribList(_EGLDisplay *display, const EGLint *attrib_list) * EGL_PLATFORM_X11_SCREEN_EXT, which is optional. */ if (attrib == EGL_PLATFORM_X11_SCREEN_EXT) { - display->Options.Platform = (void *)value; + display->Options.Platform = (void *)(uintptr_t)value; } else { _eglError(EGL_BAD_ATTRIBUTE, "eglGetPlatformDisplay"); return EGL_FALSE; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl/platform/drm: Don' t take display ownership until gbm is initialized
Module: Mesa Branch: master Commit: f258815c7d4187fd83f6944943e78206a6cdc4cb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f258815c7d4187fd83f6944943e78206a6cdc4cb Author: Adam Jackson Date: Wed May 3 11:03:34 2017 -0400 egl/platform/drm: Don't take display ownership until gbm is initialized If the gbm_create_device() call here actually did fail, any subsequent eglTerminate on the display would segfault. Cc: Reviewed-by: Eric Anholt Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/egl/drivers/dri2/platform_drm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index cf35ce8a1f..9431d95e0a 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -689,12 +689,12 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) fd = loader_open_device(buf); if (fd < 0) fd = loader_open_device("/dev/dri/card0"); - dri2_dpy->own_device = 1; gbm = gbm_create_device(fd); if (gbm == NULL) { err = "DRI2: failed to create gbm device"; goto cleanup; } + dri2_dpy->own_device = 1; } else { fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3); if (fd < 0) { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl/x11: Honor the EGL_PLATFORM_X11_SCREEN_EXT attribute
Module: Mesa Branch: master Commit: ddb99127a6f6c6d0284f3395e0b06aed575f0ecd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ddb99127a6f6c6d0284f3395e0b06aed575f0ecd Author: Adam Jackson Date: Tue May 2 12:27:01 2017 -0400 egl/x11: Honor the EGL_PLATFORM_X11_SCREEN_EXT attribute Introduce _egl_display::Options::Platforms for private storage. For X11 platforms we can use it for the screen number as set by EGL_PLATFORM_X11_SCREEN_EXT. Reviewed-by: Eric Anholt Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/egl/drivers/dri2/platform_x11.c | 2 +- src/egl/main/egldisplay.c | 19 --- src/egl/main/egldisplay.h | 1 + 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 2f1086e28f..c78656a5be 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -1191,7 +1191,7 @@ dri2_get_xcb_connection(_EGLDriver *drv, _EGLDisplay *disp, struct dri2_egl_display *dri2_dpy) { xcb_screen_iterator_t s; - int screen = 0; + int screen = (uintptr_t)disp->Options.Platform; const char *msg; disp->DriverData = (void *) dri2_dpy; diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 37711bd869..b047a5de42 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -472,7 +472,7 @@ _eglUnlinkResource(_EGLResource *res, _EGLResourceType type) #ifdef HAVE_X11_PLATFORM static EGLBoolean -_eglParseX11DisplayAttribList(const EGLint *attrib_list) +_eglParseX11DisplayAttribList(_EGLDisplay *display, const EGLint *attrib_list) { int i; @@ -486,11 +486,10 @@ _eglParseX11DisplayAttribList(const EGLint *attrib_list) /* EGL_EXT_platform_x11 recognizes exactly one attribute, * EGL_PLATFORM_X11_SCREEN_EXT, which is optional. - * - * Mesa supports connecting to only the default screen, so we reject - * screen != 0. */ - if (attrib != EGL_PLATFORM_X11_SCREEN_EXT || value != 0) { + if (attrib == EGL_PLATFORM_X11_SCREEN_EXT) { + display->Options.Platform = (void *)value; + } else { _eglError(EGL_BAD_ATTRIBUTE, "eglGetPlatformDisplay"); return EGL_FALSE; } @@ -503,11 +502,17 @@ _EGLDisplay* _eglGetX11Display(Display *native_display, const EGLint *attrib_list) { - if (!_eglParseX11DisplayAttribList(attrib_list)) { + _EGLDisplay *display = _eglFindDisplay(_EGL_PLATFORM_X11, + native_display); + + if (!display) + _eglError(EGL_BAD_ALLOC, "eglGetPlatformDisplay"); + + if (!_eglParseX11DisplayAttribList(display, attrib_list)) { return NULL; } - return _eglFindDisplay(_EGL_PLATFORM_X11, native_display); + return display; } #endif /* HAVE_X11_PLATFORM */ diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index 6c1049d23c..4d3d96e174 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -151,6 +151,7 @@ struct _egl_display struct { EGLBoolean TestOnly;/**< Driver should not set fields when true */ EGLBoolean UseFallback; /**< Use fallback driver (sw or less features) */ + void *Platform; /**< Platform-specific options */ } Options; /* these fields are set by the driver during init */ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Remove #include
Module: Mesa Branch: master Commit: f208bdc0d27cf7836420272738b707f2bad9c92a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f208bdc0d27cf7836420272738b707f2bad9c92a Author: Adam Jackson Date: Wed Mar 22 14:02:52 2017 -0400 glx: Remove #include We're not using anything in it, and we don't want to inherit struct definitions from some other package anyway. Signed-off-by: Adam Jackson --- src/glx/glxconfig.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/glx/glxconfig.c b/src/glx/glxconfig.c index e5718b143f..0e1643fcd8 100644 --- a/src/glx/glxconfig.c +++ b/src/glx/glxconfig.c @@ -32,7 +32,6 @@ */ #include -#include "GL/glxint.h" #include #include ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx/glvnd: Use bsearch() in FindGLXFunction instead of open-coding it
Module: Mesa Branch: master Commit: afaaf623d4d95b3ac736e72c744f683a2b804e1d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=afaaf623d4d95b3ac736e72c744f683a2b804e1d Author: Adam Jackson Date: Wed Sep 14 14:02:56 2016 -0400 glx/glvnd: Use bsearch() in FindGLXFunction instead of open-coding it Reviewed-by: Eric Engestrom Signed-off-by: Adam Jackson --- src/glx/glxglvnd.c | 34 -- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/glx/glxglvnd.c b/src/glx/glxglvnd.c index 2fc9b00..b6b4151 100644 --- a/src/glx/glxglvnd.c +++ b/src/glx/glxglvnd.c @@ -1,11 +1,11 @@ #include +#include #include #include "glvnd/libglxabi.h" #include "glxglvnd.h" - static Bool __glXGLVNDIsScreenSupported(Display *dpy, int screen) { /* TODO: Think of a better heuristic... */ @@ -17,26 +17,24 @@ static void *__glXGLVNDGetProcAddress(const GLubyte *procName) return glXGetProcAddressARB(procName); } +static int +compare(const void *l, const void *r) +{ +const char *s = *(const char **)r; +return strcmp(l, s); +} + static unsigned FindGLXFunction(const GLubyte *name) { -int first = 0; -int last = DI_FUNCTION_COUNT - 1; - -while (first <= last) { -int middle = (first + last) / 2; -int comp = strcmp(__glXDispatchTableStrings[middle], - (const char *) name); - -if (comp < 0) -first = middle + 1; -else if (comp > 0) -last = middle - 1; -else -return middle; -} +const char **match; + +match = bsearch(name, __glXDispatchTableStrings, DI_FUNCTION_COUNT, +sizeof(const char *), compare); + +if (match == NULL) +return DI_FUNCTION_COUNT; -/* Just point to the dummy entry at the end of the respective table */ -return DI_FUNCTION_COUNT; +return match - __glXDispatchTableStrings; } static void *__glXGLVNDGetDispatchAddress(const GLubyte *procName) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx/glvnd: Don' t modify the dummy slot in the dispatch table
Module: Mesa Branch: master Commit: deb0eb1660f612862c77d225582e102e7ab717ee URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=deb0eb1660f612862c77d225582e102e7ab717ee Author: Adam Jackson Date: Wed Sep 14 13:56:50 2016 -0400 glx/glvnd: Don't modify the dummy slot in the dispatch table Cc: "13.0" Reviewed-by: Eric Engestrom Signed-off-by: Adam Jackson --- src/glx/glxglvnd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/glx/glxglvnd.c b/src/glx/glxglvnd.c index 098304d..2fc9b00 100644 --- a/src/glx/glxglvnd.c +++ b/src/glx/glxglvnd.c @@ -50,6 +50,9 @@ static void __glXGLVNDSetDispatchIndex(const GLubyte *procName, int index) { unsigned internalIndex = FindGLXFunction(procName); +if (internalIndex == DI_FUNCTION_COUNT) +return; /* unknown or static dispatch */ + __glXDispatchTableIndices[internalIndex] = index; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx/glvnd: Fix dispatch function names and indices
Module: Mesa Branch: master Commit: 8bca8d89ef3babbecc4f3160cbbcb93d33b7a6ee URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8bca8d89ef3babbecc4f3160cbbcb93d33b7a6ee Author: Adam Jackson Date: Wed Sep 14 14:01:13 2016 -0400 glx/glvnd: Fix dispatch function names and indices As this array was not actually sorted, FindGLXFunction's binary search would only sometimes work. Cc: "13.0" Reviewed-by: Eric Engestrom Signed-off-by: Adam Jackson --- src/glx/g_glxglvnddispatchfuncs.c | 254 ++-- src/glx/g_glxglvnddispatchindices.h | 36 ++--- 2 files changed, 144 insertions(+), 146 deletions(-) diff --git a/src/glx/g_glxglvnddispatchfuncs.c b/src/glx/g_glxglvnddispatchfuncs.c index e6b9c0b..b5e3398 100644 --- a/src/glx/g_glxglvnddispatchfuncs.c +++ b/src/glx/g_glxglvnddispatchfuncs.c @@ -17,16 +17,19 @@ const char * const __glXDispatchTableStrings[DI_LAST_INDEX] = { #define __ATTRIB(field) \ [DI_##field] = "glX"#field +__ATTRIB(BindSwapBarrierSGIX), __ATTRIB(BindTexImageEXT), // glXChooseFBConfig implemented by libglvnd __ATTRIB(ChooseFBConfigSGIX), // glXChooseVisual implemented by libglvnd // glXCopyContext implemented by libglvnd +__ATTRIB(CopySubBufferMESA), // glXCreateContext implemented by libglvnd __ATTRIB(CreateContextAttribsARB), __ATTRIB(CreateContextWithConfigSGIX), __ATTRIB(CreateGLXPbufferSGIX), // glXCreateGLXPixmap implemented by libglvnd +__ATTRIB(CreateGLXPixmapMESA), __ATTRIB(CreateGLXPixmapWithConfigSGIX), // glXCreateNewContext implemented by libglvnd // glXCreatePbuffer implemented by libglvnd @@ -51,54 +54,50 @@ const char * const __glXDispatchTableStrings[DI_LAST_INDEX] = { __ATTRIB(GetFBConfigAttribSGIX), __ATTRIB(GetFBConfigFromVisualSGIX), // glXGetFBConfigs implemented by libglvnd +__ATTRIB(GetMscRateOML), // glXGetProcAddress implemented by libglvnd // glXGetProcAddressARB implemented by libglvnd +__ATTRIB(GetScreenDriver), // glXGetSelectedEvent implemented by libglvnd __ATTRIB(GetSelectedEventSGIX), +__ATTRIB(GetSwapIntervalMESA), +__ATTRIB(GetSyncValuesOML), __ATTRIB(GetVideoSyncSGI), // glXGetVisualFromFBConfig implemented by libglvnd __ATTRIB(GetVisualFromFBConfigSGIX), // glXImportContextEXT implemented by libglvnd // glXIsDirect implemented by libglvnd +__ATTRIB(JoinSwapGroupSGIX), // glXMakeContextCurrent implemented by libglvnd // glXMakeCurrent implemented by libglvnd // glXQueryContext implemented by libglvnd __ATTRIB(QueryContextInfoEXT), +__ATTRIB(QueryCurrentRendererIntegerMESA), +__ATTRIB(QueryCurrentRendererStringMESA), // glXQueryDrawable implemented by libglvnd // glXQueryExtension implemented by libglvnd // glXQueryExtensionsString implemented by libglvnd __ATTRIB(QueryGLXPbufferSGIX), +__ATTRIB(QueryMaxSwapBarriersSGIX), +__ATTRIB(QueryRendererIntegerMESA), +__ATTRIB(QueryRendererStringMESA), // glXQueryServerString implemented by libglvnd // glXQueryVersion implemented by libglvnd +__ATTRIB(ReleaseBuffersMESA), __ATTRIB(ReleaseTexImageEXT), // glXSelectEvent implemented by libglvnd __ATTRIB(SelectEventSGIX), // glXSwapBuffers implemented by libglvnd +__ATTRIB(SwapBuffersMscOML), +__ATTRIB(SwapIntervalMESA), __ATTRIB(SwapIntervalSGI), // glXUseXFont implemented by libglvnd +__ATTRIB(WaitForMscOML), +__ATTRIB(WaitForSbcOML), // glXWaitGL implemented by libglvnd __ATTRIB(WaitVideoSyncSGI), // glXWaitX implemented by libglvnd -__ATTRIB(glXBindSwapBarrierSGIX), -__ATTRIB(glXCopySubBufferMESA), -__ATTRIB(glXCreateGLXPixmapMESA), -__ATTRIB(glXGetMscRateOML), -__ATTRIB(glXGetScreenDriver), -__ATTRIB(glXGetSwapIntervalMESA), -__ATTRIB(glXGetSyncValuesOML), -__ATTRIB(glXJoinSwapGroupSGIX), -__ATTRIB(glXQueryCurrentRendererIntegerMESA), -__ATTRIB(glXQueryCurrentRendererStringMESA), -__ATTRIB(glXQueryMaxSwapBarriersSGIX), -__ATTRIB(glXQueryRendererIntegerMESA), -__ATTRIB(glXQueryRendererStringMESA), -__ATTRIB(glXReleaseBuffersMESA), -__ATTRIB(glXSwapBuffersMscOML), -__ATTRIB(glXSwapIntervalMESA), -__ATTRIB(glXWaitForMscOML), -__ATTRIB(glXWaitForSbcOML), - #undef __ATTRIB }; @@ -557,49 +556,49 @@ static int dispatch_WaitVideoSyncSGI(int divisor, int remainder, -static void dispatch_glXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, +static void dispatch_BindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, int barrier) { -PFNGLXBINDSWAPBARRIERSGIXPROC pglXBindSwapBarrierSGIX; +PFNGLXBINDSWAPBARRIERSGIXPROC pBindSwapBarrierSGIX; __GLXvendorInfo *dd; dd = GetDispatchFromDrawable(dpy, drawable); if (dd == NULL) return;
Mesa (master): reviewers: Throw myself on the GLX grenade
Module: Mesa Branch: master Commit: 4276b5c16a360c3fc5cf17f4ff569d83925146a2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4276b5c16a360c3fc5cf17f4ff569d83925146a2 Author: Adam Jackson Date: Thu Oct 6 15:37:54 2016 -0400 reviewers: Throw myself on the GLX grenade Signed-off-by: Adam Jackson Reviewed-by: Ian Romanick --- REVIEWERS | 4 1 file changed, 4 insertions(+) diff --git a/REVIEWERS b/REVIEWERS index f7574b3..f822421 100644 --- a/REVIEWERS +++ b/REVIEWERS @@ -104,3 +104,7 @@ F: src/egl/drivers/dri2/platform_wayland.c FREEDRENO R: Rob Clark F: src/gallium/drivers/freedreno/ + +GLX +R: Adam Jackson +F: src/glx/ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Track EGL_KHR_debug state when going through EGL API calls (v3)
Module: Mesa Branch: master Commit: 6a5545d3ba60a19a3bce8f62141e0991a595eeaf URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a5545d3ba60a19a3bce8f62141e0991a595eeaf Author: Kyle Brenneman Date: Mon Sep 12 17:50:40 2016 -0400 egl: Track EGL_KHR_debug state when going through EGL API calls (v3) This decorates every EGL entrypoint with _EGL_FUNC_START, which records the function name and primary dispatch object label in the current thread state. It also adds debug report functions and calls them when appropriate. This would be useful enough for debugging on its own, if the user set a breakpoint when the report function was called. We will also need this state tracked in order to expose EGL_KHR_debug. v2: - Clear the object label in more cases in _eglSetFuncName - Pass draw surface (if any) to _EGL_FUNC_START in eglSwapInterval v3: - Set dummy thread's CurrentAPI to EGL_OPENGL_ES_API not zero - Less ?: in _eglSetFuncName Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 151 +++--- src/egl/main/eglcurrent.c | 91 +++- src/egl/main/eglcurrent.h | 22 +++ src/egl/main/eglglobals.h | 5 ++ 4 files changed, 257 insertions(+), 12 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 697957e..88cdf06 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -250,6 +250,37 @@ _eglUnlockDisplay(_EGLDisplay *dpy) mtx_unlock(&dpy->Mutex); } +static EGLBoolean +_eglSetFuncName(const char *funcName, _EGLDisplay *disp, EGLenum objectType, _EGLResource *object) +{ + _EGLThreadInfo *thr = _eglGetCurrentThread(); + if (!_eglIsCurrentThreadDummy()) { + thr->CurrentFuncName = funcName; + thr->CurrentObjectLabel = NULL; + + if (objectType == EGL_OBJECT_THREAD_KHR) + thr->CurrentObjectLabel = thr->Label; + else if (objectType == EGL_OBJECT_DISPLAY_KHR && disp) + thr->CurrentObjectLabel = disp->Label; + else if (object) + thr->CurrentObjectLabel = object->Label; + + return EGL_TRUE; + } + + _eglDebugReportFull(EGL_BAD_ALLOC, funcName, funcName, + EGL_DEBUG_MSG_CRITICAL_KHR, NULL, NULL); + return EGL_FALSE; +} + +#define _EGL_FUNC_START(disp, objectType, object, ret) \ + do { \ + if (!_eglSetFuncName(__func__, disp, objectType, (_EGLResource *) object)) { \ + if (disp) \ +_eglUnlockDisplay(disp); \ + return ret; \ + } \ + } while(0) /** * Convert an attribute list from EGLint[] to EGLAttrib[]. @@ -328,6 +359,8 @@ eglGetDisplay(EGLNativeDisplayType nativeDisplay) _EGLDisplay *dpy; void *native_display_ptr; + _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL, EGL_NO_DISPLAY); + STATIC_ASSERT(sizeof(void*) == sizeof(nativeDisplay)); native_display_ptr = (void*) nativeDisplay; @@ -371,6 +404,7 @@ static EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list) { + _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL, EGL_NO_DISPLAY); return _eglGetPlatformDisplayCommon(platform, native_display, attrib_list); } @@ -381,6 +415,8 @@ eglGetPlatformDisplay(EGLenum platform, void *native_display, EGLDisplay display; EGLint *int_attribs; + _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL, EGL_NO_DISPLAY); + int_attribs = _eglConvertAttribsToInt(attrib_list); if (attrib_list && !int_attribs) RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, NULL); @@ -524,6 +560,8 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) { _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE); + if (!disp) RETURN_EGL_ERROR(NULL, EGL_BAD_DISPLAY, EGL_FALSE); @@ -574,6 +612,8 @@ eglTerminate(EGLDisplay dpy) { _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE); + if (!disp) RETURN_EGL_ERROR(NULL, EGL_BAD_DISPLAY, EGL_FALSE); @@ -601,6 +641,7 @@ eglQueryString(EGLDisplay dpy, EGLint name) } disp = _eglLockDisplay(dpy); + _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, NULL); _EGL_CHECK_DISPLAY(disp, NULL, drv); switch (name) { @@ -626,6 +667,8 @@ eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, _EGLDriver *drv; EGLBoolean ret; + _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE); + _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv); ret = drv->API.GetConfigs(drv, disp, configs, config_size, num_config); @@ -641,6 +684,8 @@ eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, _EGLDriver *drv; EGLBoolean ret; + _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL, EGL_FALSE); +
Mesa (master): egl: Implement EGL_KHR_debug (v2)
Module: Mesa Branch: master Commit: ca9f26ac6fcb0afb68101fb3f74fcb3100507c0c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca9f26ac6fcb0afb68101fb3f74fcb3100507c0c Author: Kyle Brenneman Date: Mon Sep 12 17:51:22 2016 -0400 egl: Implement EGL_KHR_debug (v2) Wire up the debug entrypoints to EGL dispatch, and add the extension string to the client extension list. v2: - Lots of style fixes - Fix missing EGLAPIENTRYs - Factor out valid attribute check - Lock display in eglLabelObjectKHR as needed, and use RETURN_EGL_* - Move "EGL_KHR_debug" into asciibetical order in client extension string Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 145 ++ src/egl/main/eglglobals.c | 1 + 2 files changed, 146 insertions(+) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 88cdf06..d2a89af 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -2028,6 +2028,148 @@ eglExportDMABUFImageMESA(EGLDisplay dpy, EGLImage image, RETURN_EGL_EVAL(disp, ret); } +static EGLint EGLAPIENTRY +eglLabelObjectKHR(EGLDisplay dpy, EGLenum objectType, EGLObjectKHR object, + EGLLabelKHR label) +{ + _EGLDisplay *disp = NULL; + _EGLResourceType type; + + _EGL_FUNC_START(NULL, EGL_NONE, NULL, EGL_BAD_ALLOC); + + if (objectType == EGL_OBJECT_THREAD_KHR) { + _EGLThreadInfo *t = _eglGetCurrentThread(); + + if (!_eglIsCurrentThreadDummy()) { + t->Label = label; + return EGL_SUCCESS; + } + + RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, EGL_BAD_ALLOC); + } + + disp = _eglLockDisplay(dpy); + if (disp == NULL) + RETURN_EGL_ERROR(disp, EGL_BAD_DISPLAY, EGL_BAD_DISPLAY); + + if (objectType == EGL_OBJECT_DISPLAY_KHR) { + if (dpy != (EGLDisplay) object) + RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_BAD_PARAMETER); + + disp->Label = label; + RETURN_EGL_EVAL(disp, EGL_SUCCESS); + } + + switch (objectType) { + case EGL_OBJECT_CONTEXT_KHR: + type = _EGL_RESOURCE_CONTEXT; + break; + case EGL_OBJECT_SURFACE_KHR: + type = _EGL_RESOURCE_SURFACE; + break; + case EGL_OBJECT_IMAGE_KHR: + type = _EGL_RESOURCE_IMAGE; + break; + case EGL_OBJECT_SYNC_KHR: + type = _EGL_RESOURCE_SYNC; + break; + case EGL_OBJECT_STREAM_KHR: + default: + RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_BAD_PARAMETER); + } + + if (_eglCheckResource(object, type, disp)) { + _EGLResource *res = (_EGLResource *) object; + + res->Label = label; + RETURN_EGL_EVAL(disp, EGL_SUCCESS); + } + + RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, EGL_BAD_PARAMETER); +} + +static EGLBoolean +validDebugMessageLevel(EGLAttrib level) +{ + return (level >= EGL_DEBUG_MSG_CRITICAL_KHR && + level <= EGL_DEBUG_MSG_INFO_KHR); +} + +static EGLint EGLAPIENTRY +eglDebugMessageControlKHR(EGLDEBUGPROCKHR callback, + const EGLAttrib *attrib_list) +{ + unsigned int newEnabled; + + _EGL_FUNC_START(NULL, EGL_NONE, NULL, EGL_BAD_ALLOC); + + mtx_lock(_eglGlobal.Mutex); + + newEnabled = _eglGlobal.debugTypesEnabled; + if (attrib_list != NULL) { + int i; + + for (i = 0; attrib_list[i] != EGL_NONE; i += 2) { + if (validDebugMessageLevel(attrib_list[i])) { +if (attrib_list[i + 1]) + newEnabled |= DebugBitFromType(attrib_list[i]); +else + newEnabled &= ~DebugBitFromType(attrib_list[i]); +continue; + } + + // On error, set the last error code, call the current + // debug callback, and return the error code. + mtx_unlock(_eglGlobal.Mutex); + _eglReportError(EGL_BAD_ATTRIBUTE, NULL, + "Invalid attribute 0x%04lx", (unsigned long) attrib_list[i]); + return EGL_BAD_ATTRIBUTE; + } + } + + if (callback != NULL) { + _eglGlobal.debugCallback = callback; + _eglGlobal.debugTypesEnabled = newEnabled; + } else { + _eglGlobal.debugCallback = NULL; + _eglGlobal.debugTypesEnabled = _EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR; + } + + mtx_unlock(_eglGlobal.Mutex); + return EGL_SUCCESS; +} + +static EGLBoolean EGLAPIENTRY +eglQueryDebugKHR(EGLint attribute, EGLAttrib *value) +{ + _EGL_FUNC_START(NULL, EGL_NONE, NULL, EGL_BAD_ALLOC); + + mtx_lock(_eglGlobal.Mutex); + + do { + if (validDebugMessageLevel(attribute)) { + if (_eglGlobal.debugTypesEnabled & DebugBitFromType(attribute)) +*value = EGL_TRUE; + else +*value = EGL_FALSE; + break; + } + + if (attribute == EGL_DEBUG_CALLBACK_KHR) { + *value = (EGLAttrib) _eglGlobal.debugCallback; + break; + } + + mtx_unlock(_eglGlobal.Mutex); + _eglReportError(EGL_BAD_ATTRIBUTE, NULL, +
Mesa (master): i965: Enable EGL_KHR_gl_texture_3D_image
Module: Mesa Branch: master Commit: 8ce2afe776eee8444d7dd00b3e93ab2ed399903d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8ce2afe776eee8444d7dd00b3e93ab2ed399903d Author: Adam Jackson Date: Wed Sep 21 09:13:36 2016 -0400 i965: Enable EGL_KHR_gl_texture_3D_image Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mesa/drivers/dri/i965/intel_screen.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 2026e3e..9b23bac 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -916,6 +916,9 @@ brw_query_renderer_integer(__DRIscreen *dri_screen, case __DRI2_RENDERER_UNIFIED_MEMORY_ARCHITECTURE: value[0] = 1; return 0; + case __DRI2_RENDERER_HAS_TEXTURE_3D: + value[0] = 1; + return 0; default: return driQueryRendererIntegerCommon(dri_screen, param, value); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i915: Enable EGL_KHR_gl_texture_3D_image
Module: Mesa Branch: master Commit: 5981366b9f75cedf766bc2a9c0df9f16af9606a7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5981366b9f75cedf766bc2a9c0df9f16af9606a7 Author: Adam Jackson Date: Wed Sep 21 09:11:26 2016 -0400 i915: Enable EGL_KHR_gl_texture_3D_image Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mesa/drivers/dri/i915/intel_screen.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c index 19f7a6a..a78e250 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.c +++ b/src/mesa/drivers/dri/i915/intel_screen.c @@ -748,6 +748,9 @@ i915_query_renderer_integer(__DRIscreen *psp, int param, unsigned int *value) case __DRI2_RENDERER_UNIFIED_MEMORY_ARCHITECTURE: value[0] = 1; return 0; + case __DRI2_RENDERER_HAS_TEXTURE_3D: + value[0] = 1; + return 0; default: return driQueryRendererIntegerCommon(psp, param, value); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Use _eglCreatePixmapSurfaceCommon consistently
Module: Mesa Branch: master Commit: 8cc3d9855f94cd0f2274a1831bc6fa8912ddea9c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8cc3d9855f94cd0f2274a1831bc6fa8912ddea9c Author: Kyle Brenneman Date: Mon Sep 12 17:25:56 2016 -0400 egl: Use _eglCreatePixmapSurfaceCommon consistently This moves the native pixmap fixup to a helper function so we don't repeat ourselves. Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 36 +--- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index dd2b4cc..fac2d18 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -813,6 +813,22 @@ eglCreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, return surface; } +static void * +fixupNativePixmap(_EGLDisplay *disp, void *native_pixmap) +{ +#ifdef HAVE_X11_PLATFORM + /* The `native_pixmap` parameter for the X11 platform differs between + * eglCreatePixmapSurface() and eglCreatePlatformPixmapSurfaceEXT(). In + * eglCreatePixmapSurface(), the type of `native_pixmap` is an Xlib + * `Pixmap`. In eglCreatePlatformPixmapSurfaceEXT(), the type is + * `Pixmap*`. Convert `Pixmap*` to `Pixmap` because that's what + * dri2_x11_create_pixmap_surface() expects. + */ + if (disp->Platform == _EGL_PLATFORM_X11 && native_pixmap != NULL) + return (void *)(* (Pixmap*) native_pixmap); +#endif + return native_pixmap; +} static EGLSurface _eglCreatePixmapSurfaceCommon(_EGLDisplay *disp, EGLConfig config, @@ -849,19 +865,7 @@ eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, { _EGLDisplay *disp = _eglLockDisplay(dpy); -#ifdef HAVE_X11_PLATFORM - /* The `native_pixmap` parameter for the X11 platform differs between - * eglCreatePixmapSurface() and eglCreatePlatformPixmapSurfaceEXT(). In - * eglCreatePixmapSurface(), the type of `native_pixmap` is an Xlib - * `Pixmap`. In eglCreatePlatformPixmapSurfaceEXT(), the type is - * `Pixmap*`. Convert `Pixmap*` to `Pixmap` because that's what - * dri2_x11_create_pixmap_surface() expects. - */ - if (disp->Platform == _EGL_PLATFORM_X11 && native_pixmap != NULL) { - native_pixmap = (void*) (* (Pixmap*) native_pixmap); - } -#endif - + native_pixmap = fixupNativePixmap(disp, native_pixmap); return _eglCreatePixmapSurfaceCommon(disp, config, native_pixmap, attrib_list); } @@ -872,14 +876,16 @@ eglCreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list) { + _EGLDisplay *disp = _eglLockDisplay(dpy); EGLSurface surface; EGLint *int_attribs = _eglConvertAttribsToInt(attrib_list); if (attrib_list && !int_attribs) RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, EGL_NO_SURFACE); - surface = eglCreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, - int_attribs); + native_pixmap = fixupNativePixmap(disp, native_pixmap); + surface = _eglCreatePixmapSurfaceCommon(disp, config, native_pixmap, + int_attribs); free(int_attribs); return surface; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Factor out _eglGetSyncAttribCommon
Module: Mesa Branch: master Commit: 1d535c1e83ae45b67a141420298c5d08082e0ed8 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d535c1e83ae45b67a141420298c5d08082e0ed8 Author: Kyle Brenneman Date: Mon Sep 12 17:46:04 2016 -0400 egl: Factor out _eglGetSyncAttribCommon Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 18 +- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index dd4fd2c..1c62a80 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1570,11 +1570,9 @@ eglSignalSyncKHR(EGLDisplay dpy, EGLSync sync, EGLenum mode) } -EGLBoolean EGLAPIENTRY -eglGetSyncAttrib(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value) +static EGLBoolean +_eglGetSyncAttribCommon(_EGLDisplay *disp, _EGLSync *s, EGLint attribute, EGLAttrib *value) { - _EGLDisplay *disp = _eglLockDisplay(dpy); - _EGLSync *s = _eglLookupSync(sync, disp); _EGLDriver *drv; EGLBoolean ret; @@ -1586,10 +1584,20 @@ eglGetSyncAttrib(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *valu RETURN_EGL_EVAL(disp, ret); } +EGLBoolean EGLAPIENTRY +eglGetSyncAttrib(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value) +{ + _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGLSync *s = _eglLookupSync(sync, disp); + return _eglGetSyncAttribCommon(disp, s, attribute, value); +} + static EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLint *value) { + _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGLSync *s = _eglLookupSync(sync, disp); EGLAttrib attrib; EGLBoolean result; @@ -1597,7 +1605,7 @@ eglGetSyncAttribKHR(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLint *valu RETURN_EGL_ERROR(NULL, EGL_BAD_PARAMETER, EGL_FALSE); attrib = *value; - result = eglGetSyncAttrib(dpy, sync, attribute, &attrib); + result = _eglGetSyncAttribCommon(disp, s, attribute, &attrib); /* The EGL_KHR_fence_sync spec says this about eglGetSyncAttribKHR: * ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Factor out _eglWaitSyncCommon
Module: Mesa Branch: master Commit: 5b0b844ac9818672bc3ddcdbbb74cb892b3485f4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b0b844ac9818672bc3ddcdbbb74cb892b3485f4 Author: Kyle Brenneman Date: Mon Sep 12 17:44:36 2016 -0400 egl: Factor out _eglWaitSyncCommon Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 18 +- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 58d18f1..dd4fd2c 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1509,11 +1509,9 @@ eglClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout) } -static EGLint EGLAPIENTRY -eglWaitSyncKHR(EGLDisplay dpy, EGLSync sync, EGLint flags) +static EGLint +_eglWaitSyncCommon(_EGLDisplay *disp, _EGLSync *s, EGLint flags) { - _EGLDisplay *disp = _eglLockDisplay(dpy); - _EGLSync *s = _eglLookupSync(sync, disp); _EGLContext *ctx = _eglGetCurrentContext(); _EGLDriver *drv; EGLint ret; @@ -1534,6 +1532,14 @@ eglWaitSyncKHR(EGLDisplay dpy, EGLSync sync, EGLint flags) RETURN_EGL_EVAL(disp, ret); } +static EGLint EGLAPIENTRY +eglWaitSyncKHR(EGLDisplay dpy, EGLSync sync, EGLint flags) +{ + _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGLSync *s = _eglLookupSync(sync, disp); + return _eglWaitSyncCommon(disp, s, flags); +} + EGLBoolean EGLAPIENTRY eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags) @@ -1542,7 +1548,9 @@ eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags) * EGLBoolean. In both cases, the return values can only be EGL_FALSE and * EGL_TRUE. */ - return eglWaitSyncKHR(dpy, sync, flags); + _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGLSync *s = _eglLookupSync(sync, disp); + return _eglWaitSyncCommon(disp, s, flags); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Lock the display in _eglCreateSync's callers
Module: Mesa Branch: master Commit: 9a992038e722b6ea8362db1dfcf2dd5a7391 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a992038e722b6ea8362db1dfcf2dd5a7391 Author: Kyle Brenneman Date: Mon Sep 12 17:40:29 2016 -0400 egl: Lock the display in _eglCreateSync's callers Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 14 -- 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index ba4826a..58d18f1 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1384,11 +1384,10 @@ eglDestroyImage(EGLDisplay dpy, EGLImage image) static EGLSync -_eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list, +_eglCreateSync(_EGLDisplay *disp, EGLenum type, const EGLint *attrib_list, const EGLAttrib *attrib_list64, EGLBoolean is64, EGLenum invalid_type_error) { - _EGLDisplay *disp = _eglLockDisplay(dpy); _EGLContext *ctx = _eglGetCurrentContext(); _EGLDriver *drv; _EGLSync *sync; @@ -1400,7 +1399,7 @@ _eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list, RETURN_EGL_EVAL(disp, EGL_NO_SYNC_KHR); /* return an error if the client API doesn't support GL_OES_EGL_sync */ - if (!ctx || ctx->Resource.Display != dpy || + if (!ctx || ctx->Resource.Display != disp || ctx->ClientAPI != EGL_OPENGL_ES_API) RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR); @@ -1431,7 +1430,8 @@ _eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list, static EGLSync EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list) { - return _eglCreateSync(dpy, type, attrib_list, NULL, EGL_FALSE, + _EGLDisplay *disp = _eglLockDisplay(dpy); + return _eglCreateSync(disp, type, attrib_list, NULL, EGL_FALSE, EGL_BAD_ATTRIBUTE); } @@ -1439,7 +1439,8 @@ eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list) static EGLSync EGLAPIENTRY eglCreateSync64KHR(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list) { - return _eglCreateSync(dpy, type, NULL, attrib_list, EGL_TRUE, + _EGLDisplay *disp = _eglLockDisplay(dpy); + return _eglCreateSync(disp, type, NULL, attrib_list, EGL_TRUE, EGL_BAD_ATTRIBUTE); } @@ -1447,7 +1448,8 @@ eglCreateSync64KHR(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list) EGLSync EGLAPIENTRY eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list) { - return _eglCreateSync(dpy, type, NULL, attrib_list, EGL_TRUE, + _EGLDisplay *disp = _eglLockDisplay(dpy); + return _eglCreateSync(disp, type, NULL, attrib_list, EGL_TRUE, EGL_BAD_PARAMETER); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Use _eglCreateWindowSurfaceCommon consistently
Module: Mesa Branch: master Commit: 7d7ae5e1c3451174a3c8dec2d50763a40069fe5b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d7ae5e1c3451174a3c8dec2d50763a40069fe5b Author: Kyle Brenneman Date: Mon Sep 12 17:04:38 2016 -0400 egl: Use _eglCreateWindowSurfaceCommon consistently This moves the native window fixup to a helper function so we don't repeat ourselves. Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 28 ++-- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index df355a5..dd2b4cc 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -762,14 +762,9 @@ eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, attrib_list); } - -static EGLSurface EGLAPIENTRY -eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, - void *native_window, - const EGLint *attrib_list) +static void * +fixupNativeWindow(_EGLDisplay *disp, void *native_window) { - _EGLDisplay *disp = _eglLockDisplay(dpy); - #ifdef HAVE_X11_PLATFORM if (disp->Platform == _EGL_PLATFORM_X11 && native_window != NULL) { /* The `native_window` parameter for the X11 platform differs between @@ -779,9 +774,20 @@ eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, * `Window*`. Convert `Window*` to `Window` because that's what * dri2_x11_create_window_surface() expects. */ - native_window = (void*) (* (Window*) native_window); + return (void *)(* (Window*) native_window); } #endif + return native_window; +} + +static EGLSurface EGLAPIENTRY +eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, + void *native_window, + const EGLint *attrib_list) +{ + _EGLDisplay *disp = _eglLockDisplay(dpy); + + native_window = fixupNativeWindow(disp, native_window); return _eglCreateWindowSurfaceCommon(disp, config, native_window, attrib_list); @@ -793,14 +799,16 @@ eglCreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list) { + _EGLDisplay *disp = _eglLockDisplay(dpy); EGLSurface surface; EGLint *int_attribs = _eglConvertAttribsToInt(attrib_list); if (attrib_list && !int_attribs) RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, EGL_NO_SURFACE); - surface = eglCreatePlatformWindowSurfaceEXT(dpy, config, native_window, - int_attribs); + native_window = fixupNativeWindow(disp, native_window); + surface = _eglCreateWindowSurfaceCommon(disp, config, native_window, + int_attribs); free(int_attribs); return surface; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Factor out _eglWaitClientCommon
Module: Mesa Branch: master Commit: 82a2e2cb5024c37a1779594320f23f225a83c79d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=82a2e2cb5024c37a1779594320f23f225a83c79d Author: Kyle Brenneman Date: Mon Sep 12 17:35:22 2016 -0400 egl: Factor out _eglWaitClientCommon Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index fac2d18..a74e5e4 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1081,8 +1081,8 @@ eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) } -EGLBoolean EGLAPIENTRY -eglWaitClient(void) +static EGLBoolean +_eglWaitClientCommon(void) { _EGLContext *ctx = _eglGetCurrentContext(); _EGLDisplay *disp; @@ -1108,12 +1108,17 @@ eglWaitClient(void) RETURN_EGL_EVAL(disp, ret); } +EGLBoolean EGLAPIENTRY +eglWaitClient(void) +{ + return _eglWaitClientCommon(); +} EGLBoolean EGLAPIENTRY eglWaitGL(void) { /* Since we only support OpenGL and GLES, eglWaitGL is equivalent to eglWaitClient. */ - return eglWaitClient(); + return _eglWaitClientCommon(); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Add storage for EGL_KHR_debug's state to EGL objects
Module: Mesa Branch: master Commit: 7206b3a5565c0835589f85388ae9c121dfd5b5a5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7206b3a5565c0835589f85388ae9c121dfd5b5a5 Author: Kyle Brenneman Date: Mon Sep 12 16:15:10 2016 -0400 egl: Add storage for EGL_KHR_debug's state to EGL objects Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglcurrent.c | 3 +-- src/egl/main/eglcurrent.h | 8 src/egl/main/egldisplay.h | 4 src/egl/main/eglglobals.c | 5 - src/egl/main/eglglobals.h | 10 ++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/egl/main/eglcurrent.c b/src/egl/main/eglcurrent.c index 2a225bc..f093bec 100644 --- a/src/egl/main/eglcurrent.c +++ b/src/egl/main/eglcurrent.c @@ -35,10 +35,9 @@ #include "eglcurrent.h" #include "eglglobals.h" - /* This should be kept in sync with _eglInitThreadInfo() */ #define _EGL_THREAD_INFO_INITIALIZER \ - { EGL_SUCCESS, NULL, 0 } + { EGL_SUCCESS, NULL, 0, NULL, NULL, NULL } /* a fallback thread info to guarantee that every thread always has one */ static _EGLThreadInfo dummy_thread = _EGL_THREAD_INFO_INITIALIZER; diff --git a/src/egl/main/eglcurrent.h b/src/egl/main/eglcurrent.h index b922435..b2638fd 100644 --- a/src/egl/main/eglcurrent.h +++ b/src/egl/main/eglcurrent.h @@ -54,6 +54,14 @@ struct _egl_thread_info EGLint LastError; _EGLContext *CurrentContext; EGLenum CurrentAPI; + EGLLabelKHR Label; + + /** +* The name of the EGL function that's being called at the moment. This is +* used to report the function name to the EGL_KHR_debug callback. +*/ + const char *CurrentFuncName; + EGLLabelKHR CurrentObjectLabel; }; diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index 6f3340e..22fb5c8 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -79,6 +79,8 @@ struct _egl_resource EGLBoolean IsLinked; EGLint RefCount; + EGLLabelKHR Label; + /* used to link resources of the same type */ _EGLResource *Next; }; @@ -165,6 +167,8 @@ struct _egl_display /* lists of resources */ _EGLResource *ResourceLists[_EGL_NUM_RESOURCES]; + + EGLLabelKHR Label; }; diff --git a/src/egl/main/eglglobals.c b/src/egl/main/eglglobals.c index 04bb5ba..dca5c21 100644 --- a/src/egl/main/eglglobals.c +++ b/src/egl/main/eglglobals.c @@ -56,7 +56,10 @@ struct _egl_global _eglGlobal = " EGL_EXT_platform_wayland" " EGL_EXT_platform_x11" " EGL_KHR_client_get_all_proc_addresses" - " EGL_MESA_platform_gbm" + " EGL_MESA_platform_gbm", + + NULL, /* debugCallback */ + _EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR, /* debugTypesEnabled */ }; diff --git a/src/egl/main/eglglobals.h b/src/egl/main/eglglobals.h index ae1b75b..dfa3577 100644 --- a/src/egl/main/eglglobals.h +++ b/src/egl/main/eglglobals.h @@ -36,6 +36,13 @@ #include "egltypedefs.h" +enum +{ +_EGL_DEBUG_BIT_CRITICAL = 0x1, +_EGL_DEBUG_BIT_ERROR = 0x2, +_EGL_DEBUG_BIT_WARN = 0x4, +_EGL_DEBUG_BIT_INFO = 0x8, +}; /** * Global library data @@ -51,6 +58,9 @@ struct _egl_global void (*AtExitCalls[10])(void); const char *ClientExtensionString; + + EGLDEBUGPROCKHR debugCallback; + unsigned int debugTypesEnabled; }; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Factor out _eglCreateImageCommon (v2)
Module: Mesa Branch: master Commit: 58338c6b650d85a2484f50c0941cb3e2947fab8e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=58338c6b650d85a2484f50c0941cb3e2947fab8e Author: Kyle Brenneman Date: Mon Sep 12 17:38:13 2016 -0400 egl: Factor out _eglCreateImageCommon (v2) v2: - Pass disp to RETURN_EGL_ERROR so we unlock the display Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 18 +- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index a74e5e4..ba4826a 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1309,11 +1309,10 @@ eglReleaseThread(void) } -static EGLImage EGLAPIENTRY -eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, +static EGLImage +_eglCreateImageCommon(_EGLDisplay *disp, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attr_list) { - _EGLDisplay *disp = _eglLockDisplay(dpy); _EGLContext *context = _eglLookupContext(ctx, disp); _EGLDriver *drv; _EGLImage *img; @@ -1337,18 +1336,27 @@ eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, RETURN_EGL_EVAL(disp, ret); } +static EGLImage EGLAPIENTRY +eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, + EGLClientBuffer buffer, const EGLint *attr_list) +{ + _EGLDisplay *disp = _eglLockDisplay(dpy); + return _eglCreateImageCommon(disp, ctx, target, buffer, attr_list); +} + EGLImage EGLAPIENTRY eglCreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attr_list) { + _EGLDisplay *disp = _eglLockDisplay(dpy); EGLImage image; EGLint *int_attribs = _eglConvertAttribsToInt(attr_list); if (attr_list && !int_attribs) - RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, EGL_NO_IMAGE); + RETURN_EGL_ERROR(disp, EGL_BAD_ALLOC, EGL_NO_IMAGE); - image = eglCreateImageKHR(dpy, ctx, target, buffer, int_attribs); + image = _eglCreateImageCommon(disp, ctx, target, buffer, int_attribs); free(int_attribs); return image; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Tear down images and syncs at eglTerminate
Module: Mesa Branch: master Commit: e2c067d256c86bbeb2e99f8d216da267e76e2d8c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e2c067d256c86bbeb2e99f8d216da267e76e2d8c Author: Adam Jackson Date: Fri Sep 9 13:45:09 2016 -0400 egl: Tear down images and syncs at eglTerminate Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/egl/main/egldisplay.c | 22 ++ 1 file changed, 22 insertions(+) diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index bbc3063..3d4eb81 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -44,6 +44,8 @@ #include "egldriver.h" #include "eglglobals.h" #include "egllog.h" +#include "eglimage.h" +#include "eglsync.h" /* Includes for _eglNativePlatformDetectNativeDisplay */ #ifdef HAVE_MINCORE @@ -300,6 +302,26 @@ _eglReleaseDisplayResources(_EGLDriver *drv, _EGLDisplay *display) drv->API.DestroySurface(drv, display, surf); } assert(!display->ResourceLists[_EGL_RESOURCE_SURFACE]); + + list = display->ResourceLists[_EGL_RESOURCE_IMAGE]; + while (list) { + _EGLImage *image = (_EGLImage *) list; + list = list->Next; + + _eglUnlinkImage(image); + drv->API.DestroyImageKHR(drv, display, image); + } + assert(!display->ResourceLists[_EGL_RESOURCE_IMAGE]); + + list = display->ResourceLists[_EGL_RESOURCE_SYNC]; + while (list) { + _EGLSync *sync = (_EGLSync *) list; + list = list->Next; + + _eglUnlinkSync(sync); + drv->API.DestroySyncKHR(drv, display, sync); + } + assert(!display->ResourceLists[_EGL_RESOURCE_SYNC]); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Fix typo
Module: Mesa Branch: master Commit: fe6ffa79be7ecf66b7bec73389556a58e8f6432c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe6ffa79be7ecf66b7bec73389556a58e8f6432c Author: Kyle Brenneman Date: Mon Sep 12 17:12:52 2016 -0400 egl: Fix typo Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglglobals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/egl/main/eglglobals.c b/src/egl/main/eglglobals.c index 938d953..04bb5ba 100644 --- a/src/egl/main/eglglobals.c +++ b/src/egl/main/eglglobals.c @@ -50,7 +50,7 @@ struct _egl_global _eglGlobal = _eglFiniDisplay }, - /* ClientExtensionsString */ + /* ClientExtensionString */ "EGL_EXT_client_extensions" " EGL_EXT_platform_base" " EGL_EXT_platform_wayland" ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Update eglext.h (v2)
Module: Mesa Branch: master Commit: 6e50f12b043436d066c8e9f24984e1ddc32d8ec4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e50f12b043436d066c8e9f24984e1ddc32d8ec4 Author: Kyle Brenneman Date: Wed Jul 6 10:33:42 2016 -0600 egl: Update eglext.h (v2) Updated eglext.h to revision 33111 from the Khronos repository. v2: - Don't (re)move extension includes from eglext.h (Emil Velikov) - Bump to revision 33111 (Adam Jackson) Reviewed-by: Emil Velikov Reviewed-by: Adam Jackson --- include/EGL/eglext.h | 121 +-- 1 file changed, 118 insertions(+), 3 deletions(-) diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h index 6043b37..4ccbab8 100644 --- a/include/EGL/eglext.h +++ b/include/EGL/eglext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013-2014 The Khronos Group Inc. +** Copyright (c) 2013-2016 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -38,7 +38,7 @@ extern "C" { #include -#define EGL_EGLEXT_VERSION 20150508 +#define EGL_EGLEXT_VERSION 20160809 /* Generated C header for: * API: egl @@ -99,6 +99,33 @@ EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, #define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3 #endif /* EGL_KHR_create_context_no_error */ +#ifndef EGL_KHR_debug +#define EGL_KHR_debug 1 +typedef void *EGLLabelKHR; +typedef void *EGLObjectKHR; +typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message); +#define EGL_OBJECT_THREAD_KHR 0x33B0 +#define EGL_OBJECT_DISPLAY_KHR0x33B1 +#define EGL_OBJECT_CONTEXT_KHR0x33B2 +#define EGL_OBJECT_SURFACE_KHR0x33B3 +#define EGL_OBJECT_IMAGE_KHR 0x33B4 +#define EGL_OBJECT_SYNC_KHR 0x33B5 +#define EGL_OBJECT_STREAM_KHR 0x33B6 +#define EGL_DEBUG_MSG_CRITICAL_KHR0x33B9 +#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA +#define EGL_DEBUG_MSG_WARN_KHR0x33BB +#define EGL_DEBUG_MSG_INFO_KHR0x33BC +#define EGL_DEBUG_CALLBACK_KHR0x33B8 +typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value); +typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value); +EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label); +#endif +#endif /* EGL_KHR_debug */ + #ifndef EGL_KHR_fence_sync #define EGL_KHR_fence_sync 1 typedef khronos_utime_nanoseconds_t EGLTimeKHR; @@ -223,6 +250,16 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface s #endif #endif /* EGL_KHR_lock_surface3 */ +#ifndef EGL_KHR_mutable_render_buffer +#define EGL_KHR_mutable_render_buffer 1 +#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000 +#endif /* EGL_KHR_mutable_render_buffer */ + +#ifndef EGL_KHR_no_config_context +#define EGL_KHR_no_config_context 1 +#define EGL_NO_CONFIG_KHR ((EGLConfig)0) +#endif /* EGL_KHR_no_config_context */ + #ifndef EGL_KHR_partial_update #define EGL_KHR_partial_update 1 #define EGL_BUFFER_AGE_KHR0x313D @@ -402,11 +439,28 @@ EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobF #endif #endif /* EGL_ANDROID_blob_cache */ +#ifndef EGL_ANDROID_create_native_client_buffer +#define EGL_ANDROID_create_native_client_buffer 1 +#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143 +#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x0001 +#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x0002 +#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x0004 +typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list); +#endif +#endif /* EGL_ANDROID_create_native_client_buffer */ + #ifndef EGL_ANDROID_framebuffer_target #define EGL_ANDROID_framebuffer_target 1 #define EGL_FRAMEBUFFER_TARGET_ANDROID0x3147 #endif /* EGL_ANDROID_framebuffer_target */ +#ifndef EGL_ANDROID_front_buffer_auto_refresh +#define EGL_ANDROID_front_buffer_auto_refresh 1 +#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C +#endif /* EGL_ANDROID_front_buffer_a
Mesa (master): egl: Factor out _eglGetPlatformDisplayCommon
Module: Mesa Branch: master Commit: 017946b7247ea7c36219b44dfc118ccad4da7d1d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=017946b7247ea7c36219b44dfc118ccad4da7d1d Author: Kyle Brenneman Date: Mon Sep 12 16:42:56 2016 -0400 egl: Factor out _eglGetPlatformDisplayCommon Reviewed-by: Adam Jackson Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 18 +- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index ba8305e..df355a5 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -295,9 +295,9 @@ eglGetDisplay(EGLNativeDisplayType nativeDisplay) return _eglGetDisplayHandle(dpy); } -static EGLDisplay EGLAPIENTRY -eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, - const EGLint *attrib_list) +static EGLDisplay +_eglGetPlatformDisplayCommon(EGLenum platform, void *native_display, +const EGLint *attrib_list) { _EGLDisplay *dpy; @@ -326,17 +326,25 @@ eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, return _eglGetDisplayHandle(dpy); } +static EGLDisplay EGLAPIENTRY +eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, + const EGLint *attrib_list) +{ + return _eglGetPlatformDisplayCommon(platform, native_display, attrib_list); +} + EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list) { EGLDisplay display; - EGLint *int_attribs = _eglConvertAttribsToInt(attrib_list); + EGLint *int_attribs; + int_attribs = _eglConvertAttribsToInt(attrib_list); if (attrib_list && !int_attribs) RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, NULL); - display = eglGetPlatformDisplayEXT(platform, native_display, int_attribs); + display = _eglGetPlatformDisplayCommon(platform, native_display, int_attribs); free(int_attribs); return display; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Rename MESA_configless_context bit to KHR_no_config_context
Module: Mesa Branch: master Commit: d9f5b1915b397d4baaf4c9c23a93fda49f3db4ca URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d9f5b1915b397d4baaf4c9c23a93fda49f3db4ca Author: Adam Jackson Date: Fri Sep 9 12:25:34 2016 -0400 egl: Rename MESA_configless_context bit to KHR_no_config_context Keep the old name in the extension string, but refer to the KHR extension internally. Reviewed-by: Kristian Høgsberg Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/egl/drivers/dri2/egl_dri2.c | 2 +- src/egl/main/eglapi.c | 6 -- src/egl/main/eglcontext.c | 4 ++-- src/egl/main/egldisplay.h | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 859612f..bbc457c 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -603,8 +603,8 @@ dri2_setup_screen(_EGLDisplay *disp) disp->ClientAPIs |= EGL_OPENGL_ES3_BIT_KHR; assert(dri2_dpy->image_driver || dri2_dpy->dri2 || dri2_dpy->swrast); + disp->Extensions.KHR_no_config_context = EGL_TRUE; disp->Extensions.KHR_surfaceless_context = EGL_TRUE; - disp->Extensions.MESA_configless_context = EGL_TRUE; if (dri2_renderer_query_integer(dri2_dpy, __DRI2_RENDERER_HAS_FRAMEBUFFER_SRGB)) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index df2dcd6..ba8305e 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -406,11 +406,13 @@ _eglCreateExtensionsString(_EGLDisplay *dpy) _eglAppendExtension(&exts, "EGL_KHR_image"); _EGL_CHECK_EXTENSION(KHR_image_base); _EGL_CHECK_EXTENSION(KHR_image_pixmap); + _EGL_CHECK_EXTENSION(KHR_no_config_context); _EGL_CHECK_EXTENSION(KHR_reusable_sync); _EGL_CHECK_EXTENSION(KHR_surfaceless_context); _EGL_CHECK_EXTENSION(KHR_wait_sync); - _EGL_CHECK_EXTENSION(MESA_configless_context); + if (dpy->Extensions.KHR_no_config_context) + _eglAppendExtension(&exts, "EGL_MESA_configless_context"); _EGL_CHECK_EXTENSION(MESA_drm_image); _EGL_CHECK_EXTENSION(MESA_image_dma_buf_export); @@ -627,7 +629,7 @@ eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_list, _EGL_CHECK_DISPLAY(disp, EGL_NO_CONTEXT, drv); - if (!config && !disp->Extensions.MESA_configless_context) + if (!config && !disp->Extensions.KHR_no_config_context) RETURN_EGL_ERROR(disp, EGL_BAD_CONFIG, EGL_NO_CONTEXT); if (!share && share_list != EGL_NO_CONTEXT) diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index 7eac79a..60625f6 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -642,9 +642,9 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read) (read && read->Config != ctx->Config)) return _eglError(EGL_BAD_MATCH, "eglMakeCurrent"); } else { - /* Otherwise we must be using the EGL_MESA_configless_context + /* Otherwise we must be using the EGL_KHR_no_config_context * extension */ - assert(dpy->Extensions.MESA_configless_context); + assert(dpy->Extensions.KHR_no_config_context); /* The extension doesn't permit binding draw and read buffers with * differing contexts */ diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index 6bfc858..6f3340e 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -112,11 +112,11 @@ struct _egl_extensions EGLBoolean KHR_gl_texture_cubemap_image; EGLBoolean KHR_image_base; EGLBoolean KHR_image_pixmap; + EGLBoolean KHR_no_config_context; EGLBoolean KHR_reusable_sync; EGLBoolean KHR_surfaceless_context; EGLBoolean KHR_wait_sync; - EGLBoolean MESA_configless_context; EGLBoolean MESA_drm_image; EGLBoolean MESA_image_dma_buf_export; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: QueryContext on a configless context returns zero
Module: Mesa Branch: master Commit: cc45a5c30872e2070aae6a79dbe0e2bcf7404917 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cc45a5c30872e2070aae6a79dbe0e2bcf7404917 Author: Adam Jackson Date: Fri Sep 9 12:25:33 2016 -0400 egl: QueryContext on a configless context returns zero MESA_configless_context does not specify the interaction with QueryContext at all, and the code to generate an error in this case predates the Mesa extension. Since EGL_NO_CONFIG_{KHR,MESA} are numerically identical there's no way to distinguish which one the application asked for, so use the KHR behaviour. Reviewed-by: Kristian Høgsberg Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/egl/main/eglcontext.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index 58740c3..7eac79a 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -538,9 +538,14 @@ _eglQueryContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *c, switch (attribute) { case EGL_CONFIG_ID: - if (!c->Config) - return _eglError(EGL_BAD_ATTRIBUTE, "eglQueryContext"); - *value = c->Config->ConfigID; + /* + * From EGL_KHR_no_config_context: + * + *"Querying EGL_CONFIG_ID returns the ID of the EGLConfig with + * respect to which the context was created, or zero if created + * without respect to an EGLConfig." + */ + *value = c->Config ? c->Config->ConfigID : 0; break; case EGL_CONTEXT_CLIENT_VERSION: *value = c->ClientMajorVersion; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): docs: Note MESA_configless_context as superseded
Module: Mesa Branch: master Commit: 0cb1428fbbbcbd17c975b6505cab6f685c0129aa URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0cb1428fbbbcbd17c975b6505cab6f685c0129aa Author: Adam Jackson Date: Fri Sep 9 12:25:35 2016 -0400 docs: Note MESA_configless_context as superseded Reviewed-by: Kristian Høgsberg Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- docs/specs/MESA_configless_context.spec | 8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/specs/MESA_configless_context.spec b/docs/specs/MESA_configless_context.spec index f2fafb3..d7ba62d 100644 --- a/docs/specs/MESA_configless_context.spec +++ b/docs/specs/MESA_configless_context.spec @@ -12,11 +12,12 @@ Contact Status -Proposal +Superseded by the functionally identical EGL_KHR_no_config_context +extension. Version -Version 1, February 28, 2014 +Version 2, September 9, 2016 Number @@ -121,5 +122,8 @@ Issues Revision History +Version 2, September 9, 2016 +Defer to EGL_KHR_no_config_context (Adam Jackson) + Version 1, February 28, 2014 Initial draft (Neil Roberts) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Fix up indentation on previous commit
Module: Mesa Branch: master Commit: dbda375d6fe29a1a0822fe5123c55c33ecfa7894 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dbda375d6fe29a1a0822fe5123c55c33ecfa7894 Author: Adam Jackson Date: Thu Sep 8 13:21:24 2016 -0400 egl: Fix up indentation on previous commit This was requested in review but I pushed the wrong version. Signed-off-by: Adam Jackson --- src/egl/main/eglcontext.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index 057b60f..58740c3 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -460,8 +460,8 @@ _eglParseContextAttribList(_EGLContext *ctx, _EGLDisplay *dpy, * * According to EGL 1.5 Section 3.7: * - * "EGL_OPENGL_API and EGL_OPENGL_ES_API are interchangeable for all - * purposes except eglCreateContext." + * "EGL_OPENGL_API and EGL_OPENGL_ES_API are interchangeable for all + * purposes except eglCreateContext." * * And since we only support GL and GLES, this is the only place where the * bound API matters at all. We look up the current API from the current ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Document why EGL_OPENGL{, _ES}_API are mostly identical
Module: Mesa Branch: master Commit: a279760536be03702a3eb133c51079907a2ccc9c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a279760536be03702a3eb133c51079907a2ccc9c Author: Adam Jackson Date: Wed Sep 7 17:41:56 2016 -0400 egl: Document why EGL_OPENGL{, _ES}_API are mostly identical Signed-off-by: Adam Jackson Reviewed-by: Alejandro Piñeiro --- src/egl/main/eglcontext.c | 10 ++ 1 file changed, 10 insertions(+) diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index ebc004d..057b60f 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -457,6 +457,16 @@ _eglParseContextAttribList(_EGLContext *ctx, _EGLDisplay *dpy, /** * Initialize the given _EGLContext object to defaults and/or the values * in the attrib_list. + * + * According to EGL 1.5 Section 3.7: + * + * "EGL_OPENGL_API and EGL_OPENGL_ES_API are interchangeable for all + * purposes except eglCreateContext." + * + * And since we only support GL and GLES, this is the only place where the + * bound API matters at all. We look up the current API from the current + * thread, and stash that in the context we're initializing. Our caller is + * responsible for determining whether that's an API it supports. */ EGLBoolean _eglInitContext(_EGLContext *ctx, _EGLDisplay *dpy, _EGLConfig *conf, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): EGL: Combine the GL and GLES current contexts (v2)
Module: Mesa Branch: master Commit: 6e066f76ee22909b0653ff8b89429de819e60f14 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e066f76ee22909b0653ff8b89429de819e60f14 Author: Kyle Brenneman Date: Fri Jul 8 15:21:17 2016 -0600 EGL: Combine the GL and GLES current contexts (v2) Only keep track of a single current context, instead of separate contexts for GL and GLES. In EGL 1.4 (and 1.5), EGL_OPENGL_API and EGL_OPENGL_ES_API are supposed to be interchangeable for all purposes except for eglCreateContext. The _EGLThreadInfo::CurrentContexts array is now a single pointer to the current context, which may be a GL or GLES context. In addition, it now keeps track of the current API as an enum instead of an index. eglMakeCurrent will now replace the current context, regardless of which client API is used for for the current and new contexts. It no longer checks for a conflicting context. In addition, calling eglMakeCurrent with EGL_NO_CONTEXT will now release the current context regardless of the current API. v2: Rebased against master (Adam Jackson) Reviewed-by: Adam Jackson --- src/egl/main/eglapi.c | 42 -- src/egl/main/eglcontext.c | 31 --- src/egl/main/eglcurrent.c | 15 ++- src/egl/main/eglcurrent.h | 41 - 4 files changed, 22 insertions(+), 107 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 4700dbe..df2dcd6 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1088,18 +1088,8 @@ eglWaitClient(void) EGLBoolean EGLAPIENTRY eglWaitGL(void) { - _EGLThreadInfo *t = _eglGetCurrentThread(); - EGLint api_index = t->CurrentAPIIndex; - EGLint es_index = _eglConvertApiToIndex(EGL_OPENGL_ES_API); - EGLBoolean ret; - - if (api_index != es_index && _eglIsCurrentThreadDummy()) - RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, EGL_FALSE); - - t->CurrentAPIIndex = es_index; - ret = eglWaitClient(); - t->CurrentAPIIndex = api_index; - return ret; + /* Since we only support OpenGL and GLES, eglWaitGL is equivalent to eglWaitClient. */ + return eglWaitClient(); } @@ -1222,7 +1212,7 @@ eglBindAPI(EGLenum api) if (!_eglIsApiValid(api)) RETURN_EGL_ERROR(NULL, EGL_BAD_PARAMETER, EGL_FALSE); - t->CurrentAPIIndex = _eglConvertApiToIndex(api); + t->CurrentAPI = api; RETURN_EGL_SUCCESS(NULL, EGL_TRUE); } @@ -1238,7 +1228,7 @@ eglQueryAPI(void) EGLenum ret; /* returns one of EGL_OPENGL_API, EGL_OPENGL_ES_API or EGL_OPENVG_API */ - ret = _eglConvertApiFromIndex(t->CurrentAPIIndex); + ret = t->CurrentAPI; RETURN_EGL_SUCCESS(NULL, ret); } @@ -1271,25 +1261,17 @@ eglReleaseThread(void) /* unbind current contexts */ if (!_eglIsCurrentThreadDummy()) { _EGLThreadInfo *t = _eglGetCurrentThread(); - EGLint api_index = t->CurrentAPIIndex; - EGLint i; - - for (i = 0; i < _EGL_API_NUM_APIS; i++) { - _EGLContext *ctx = t->CurrentContexts[i]; - if (ctx) { -_EGLDisplay *disp = ctx->Resource.Display; -_EGLDriver *drv; -t->CurrentAPIIndex = i; + _EGLContext *ctx = t->CurrentContext; + if (ctx) { + _EGLDisplay *disp = ctx->Resource.Display; + _EGLDriver *drv; -mtx_lock(&disp->Mutex); -drv = disp->Driver; -(void) drv->API.MakeCurrent(drv, disp, NULL, NULL, NULL); -mtx_unlock(&disp->Mutex); - } + mtx_lock(&disp->Mutex); + drv = disp->Driver; + (void) drv->API.MakeCurrent(drv, disp, NULL, NULL, NULL); + mtx_unlock(&disp->Mutex); } - - t->CurrentAPIIndex = api_index; } _eglDestroyCurrentThread(); diff --git a/src/egl/main/eglcontext.c b/src/egl/main/eglcontext.c index ae19862..ebc004d 100644 --- a/src/egl/main/eglcontext.c +++ b/src/egl/main/eglcontext.c @@ -557,20 +557,16 @@ _eglQueryContext(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *c, static _EGLContext * _eglBindContextToThread(_EGLContext *ctx, _EGLThreadInfo *t) { - EGLint apiIndex; _EGLContext *oldCtx; - apiIndex = (ctx) ? - _eglConvertApiToIndex(ctx->ClientAPI) : t->CurrentAPIIndex; - - oldCtx = t->CurrentContexts[apiIndex]; + oldCtx = t->CurrentContext; if (ctx != oldCtx) { if (oldCtx) oldCtx->Binding = NULL; if (ctx) ctx->Binding = t; - t->CurrentContexts[apiIndex] = ctx; + t->CurrentContext = ctx; } return oldCtx; @@ -585,7 +581,6 @@ _eglCheckMakeCurrent(_EGLContext *ctx, _EGLSurface *draw, _EGLSurface *read) { _EGLThreadInfo *t = _eglGetCurrentThread(); _EGLDisplay *dpy; - EGLint conflict_api; if (_eglIsCurrentThreadDummy()) return _eglError(EGL_BAD_ALLOC, "eglMakeCurrent");
Mesa (master): glapi/glx: Add overflow checks to the client-side indirect code
Module: Mesa Branch: master Commit: a1c5cd426c0381124f7c320d5a7b760a9a36af75 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1c5cd426c0381124f7c320d5a7b760a9a36af75 Author: Adam Jackson Date: Tue May 24 15:45:11 2016 -0400 glapi/glx: Add overflow checks to the client-side indirect code Coverity complains that the computed sizes can lead to negative lengths passed to memcpy. If that happens we've been handed invalid arguments anyway, so just bomb out. The funky "0%s" is because the size string for the variable-length part of the request is of the form "+ safe_pad() ...", and a unary + would coerce the result to always be positive, defeating the overflow check. Signed-off-by: Adam Jackson Reviewed-by: Matt Turner --- src/mapi/glapi/gen/glX_proto_send.py | 9 + 1 file changed, 9 insertions(+) diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py index 10abcff..26e7ab6 100644 --- a/src/mapi/glapi/gen/glX_proto_send.py +++ b/src/mapi/glapi/gen/glX_proto_send.py @@ -635,6 +635,15 @@ generic_%u_byte( GLint rop, const void * ptr ) if name != None and name not in f.glx_vendorpriv_names: print '#endif' +if f.command_variable_length() != "": +print "if (0%s < 0) {" % f.command_variable_length() +print "__glXSetError(gc, GL_INVALID_VALUE);" +if f.return_type != 'void': +print "return 0;" +else: +print "return;" +print "}" + condition_list = [] for p in f.parameterIterateCounters(): condition_list.append( "%s >= 0" % (p.name) ) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi: Fix whitespace droppings when printing the license header
Module: Mesa Branch: master Commit: 7bc5c7f58685e67985b3da1722391432fdd9ba31 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7bc5c7f58685e67985b3da1722391432fdd9ba31 Author: Adam Jackson Date: Thu Mar 24 13:57:58 2016 -0400 glapi: Fix whitespace droppings when printing the license header Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/gl_XML.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py index 2e7123e..e11f6fc 100644 --- a/src/mapi/glapi/gen/gl_XML.py +++ b/src/mapi/glapi/gen/gl_XML.py @@ -130,7 +130,7 @@ class gl_print_base(object): % (self.name) print '' print '/*' -print ' * ' + self.license.replace('\n', '\n * ') +print (' * ' + self.license.replace('\n', '\n * ')).replace(' \n', '\n') print ' */' print '' if self.header_tag: ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi: Harden GLX request size processing (v2)
Module: Mesa Branch: master Commit: ea08a5bcf6a670d2d6c67328414826a308d86e0d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea08a5bcf6a670d2d6c67328414826a308d86e0d Author: Adam Jackson Date: Thu Mar 24 13:57:58 2016 -0400 glapi: Harden GLX request size processing (v2) v2: Use == not is for equality testing (Dylan Baker) Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/glX_XML.py| 2 +- src/mapi/glapi/gen/glX_proto_recv.py | 2 -- src/mapi/glapi/gen/glX_proto_send.py | 2 -- src/mapi/glapi/gen/glX_proto_size.py | 24 +++- src/mapi/glapi/gen/gl_XML.py | 2 +- 5 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/mapi/glapi/gen/glX_XML.py b/src/mapi/glapi/gen/glX_XML.py index 12ff291..c659e93 100644 --- a/src/mapi/glapi/gen/glX_XML.py +++ b/src/mapi/glapi/gen/glX_XML.py @@ -357,7 +357,7 @@ class glx_function(gl_XML.gl_function): # FIXME adds some extra diffs to the generated # FIXME code. -size_string = size_string + " + __GLX_PAD(%s)" % (p.size_string(1)) +size_string = size_string + " + safe_pad(%s)" % (p.size_string(1)) return size_string diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py index afee388..09cf05d 100644 --- a/src/mapi/glapi/gen/glX_proto_recv.py +++ b/src/mapi/glapi/gen/glX_proto_recv.py @@ -89,8 +89,6 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): print '#include "indirect_util.h"' print '#include "singlesize.h"' print '' -print '#define __GLX_PAD(x) (((x) + 3) & ~3)' -print '' print 'typedef struct {' print '__GLX_PIXEL_3D_HDR;' print '} __GLXpixel3DHeader;' diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py index 8b3d8d7..10abcff 100644 --- a/src/mapi/glapi/gen/glX_proto_send.py +++ b/src/mapi/glapi/gen/glX_proto_send.py @@ -177,8 +177,6 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto): print '#include ' print '' -print '#define __GLX_PAD(n) (((n) + 3) & ~3)' -print '' self.printFastcall() self.printNoinline() print '' diff --git a/src/mapi/glapi/gen/glX_proto_size.py b/src/mapi/glapi/gen/glX_proto_size.py index 75fc26f..3a1c554 100644 --- a/src/mapi/glapi/gen/glX_proto_size.py +++ b/src/mapi/glapi/gen/glX_proto_size.py @@ -291,7 +291,7 @@ class glx_server_enum_function(glx_enum_function): print '' print 'compsize = __gl%s_size(%s);' % (f.name, string.join(f.count_parameter_list, ",")) p = f.variable_length_parameter() -print 'return __GLX_PAD(%s);' % (p.size_string()) +print 'return safe_pad(%s);' % (p.size_string()) print '}' print '' @@ -428,7 +428,7 @@ class PrintGlxReqSize_h(PrintGlxReqSize_common): def printBody(self, api): for func in api.functionIterateGlx(): if not func.ignore and func.has_variable_size_request(): -print 'extern PURE _X_HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap);' % (func.name) +print 'extern PURE _X_HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap, int reqlen);' % (func.name) class PrintGlxReqSize_c(PrintGlxReqSize_common): @@ -452,20 +452,18 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common): print '#include "indirect_size.h"' print '#include "indirect_reqsize.h"' print '' -print '#define __GLX_PAD(x) (((x) + 3) & ~3)' -print '' print '#if defined(__CYGWIN__) || defined(__MINGW32__)' print '# undef HAVE_ALIAS' print '#endif' print '#ifdef HAVE_ALIAS' print '# define ALIAS2(from,to) \\' -print 'GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \\' +print 'GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \\' print '__attribute__ ((alias( # to )));' print '# define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize )' print '#else' print '# define ALIAS(from,to) \\' -print 'GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \\' -print '{ return __glX ## to ## ReqSize( pc, swap ); }' +print 'GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool
Mesa (master): glapi: Add the safe_{add, mul, pad} functions from xserver
Module: Mesa Branch: master Commit: 88cfc9ddaab5577260293fcbd4f7413fbd4aba21 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=88cfc9ddaab5577260293fcbd4f7413fbd4aba21 Author: Adam Jackson Date: Thu Mar 24 13:57:58 2016 -0400 glapi: Add the safe_{add,mul,pad} functions from xserver We're about to update the generator scripts to use these, easier not to vary between client and server. Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/glX_proto_send.py | 24 1 file changed, 24 insertions(+) diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py index 2b33030..8b3d8d7 100644 --- a/src/mapi/glapi/gen/glX_proto_send.py +++ b/src/mapi/glapi/gen/glX_proto_send.py @@ -174,6 +174,7 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto): print '#include ' print '#include ' print '#include ' +print '#include ' print '' print '#define __GLX_PAD(n) (((n) + 3) & ~3)' @@ -181,6 +182,29 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto): self.printFastcall() self.printNoinline() print '' + +print 'static _X_INLINE int safe_add(int a, int b)' +print '{' +print 'if (a < 0 || b < 0) return -1;' +print 'if (INT_MAX - a < b) return -1;' +print 'return a + b;' +print '}' +print 'static _X_INLINE int safe_mul(int a, int b)' +print '{' +print 'if (a < 0 || b < 0) return -1;' +print 'if (a == 0 || b == 0) return 0;' +print 'if (a > INT_MAX / b) return -1;' +print 'return a * b;' +print '}' +print 'static _X_INLINE int safe_pad(int a)' +print '{' +print 'int ret;' +print 'if (a < 0) return -1;' +print 'if ((ret = safe_add(a, 3)) < 0) return -1;' +print 'return ret & (GLuint)~3;' +print '}' +print '' + print '#ifndef __GNUC__' print '# define __builtin_expect(x, y) x' print '#endif' ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi: Define PURE for Sun Studio as well
Module: Mesa Branch: master Commit: f4983b194d8a13468d2b381c1b572144d15329d2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4983b194d8a13468d2b381c1b572144d15329d2 Author: Adam Jackson Date: Wed May 4 14:14:56 2016 -0400 glapi: Define PURE for Sun Studio as well Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/gl_XML.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py index 4f35343..8036a02 100644 --- a/src/mapi/glapi/gen/gl_XML.py +++ b/src/mapi/glapi/gen/gl_XML.py @@ -183,7 +183,7 @@ class gl_print_base(object): The name is also added to the file's undef_list. """ self.undef_list.append("PURE") -print """# if defined(__GNUC__) +print """# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) #define PURE __attribute__((pure)) # else #define PURE ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi/gen: Copy some GL 1.0 enum details into ARB_viewport_array
Module: Mesa Branch: master Commit: 2ad9d6237a510ec2acd0d416c34fe6e231460182 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ad9d6237a510ec2acd0d416c34fe6e231460182 Author: Adam Jackson Date: Wed May 4 14:32:38 2016 -0400 glapi/gen: Copy some GL 1.0 enum details into ARB_viewport_array Otherwise the instances in the extension XML override the core definitions, and we stop knowing their sizes in indirect_size_get.c Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/ARB_viewport_array.xml | 16 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/mapi/glapi/gen/ARB_viewport_array.xml b/src/mapi/glapi/gen/ARB_viewport_array.xml index b20cf61..ebd5b99 100644 --- a/src/mapi/glapi/gen/ARB_viewport_array.xml +++ b/src/mapi/glapi/gen/ARB_viewport_array.xml @@ -12,10 +12,18 @@ - - - - + + + + + + + + + + + + ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi/glx: Mark byteswap functions as _X_UNUSED (v2)
Module: Mesa Branch: master Commit: f1dd8dd6b6c0e8cb16a41231286735d5efa33c67 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1dd8dd6b6c0e8cb16a41231286735d5efa33c67 Author: Adam Jackson Date: Thu Mar 24 13:57:58 2016 -0400 glapi/glx: Mark byteswap functions as _X_UNUSED (v2) Squashes the one remaining warning in the xserver build. v2: Also clean up some non-standard whitespace (Ian Romanick) Reviewed-by: Ian Romanick Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/glX_proto_recv.py | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py index 09cf05d..5433288 100644 --- a/src/mapi/glapi/gen/glX_proto_recv.py +++ b/src/mapi/glapi/gen/glX_proto_recv.py @@ -171,11 +171,11 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): if t.glx_name not in already_done: real_name = self.real_types[t_size] -print 'static %s' % (t_name) -print 'bswap_%s( const void * src )' % (t.glx_name) +print 'static _X_UNUSED %s' % (t_name) +print 'bswap_%s(const void * src)' % (t.glx_name) print '{' print 'union { %s dst; %s ret; } x;' % (real_name, t_name) -print 'x.dst = bswap_%u( *(%s *) src );' % (t_size * 8, real_name) +print 'x.dst = bswap_%u(*(%s *) src);' % (t_size * 8, real_name) print 'return x.ret;' print '}' print '' @@ -183,12 +183,12 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): for bits in [16, 32, 64]: print 'static void *' -print 'bswap_%u_array( uint%u_t * src, unsigned count )' % (bits, bits) +print 'bswap_%u_array(uint%u_t * src, unsigned count)' % (bits, bits) print '{' print 'unsigned i;' print '' -print 'for ( i = 0 ; i < count ; i++ ) {' -print 'uint%u_t temp = bswap_%u( src[i] );' % (bits, bits) +print 'for (i = 0 ; i < count ; i++) {' +print 'uint%u_t temp = bswap_%u(src[i]);' % (bits, bits) print 'src[i] = temp;' print '}' print '' ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): eglinfo: Restore eglTerminate
Module: Demos Branch: master Commit: 9dea5043431ca8b9680c74198bd5a05aa5b17c2b URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=9dea5043431ca8b9680c74198bd5a05aa5b17c2b Author: Adam Jackson Date: Wed Apr 20 16:53:30 2016 -0400 eglinfo: Restore eglTerminate Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- src/egl/opengl/eglinfo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/egl/opengl/eglinfo.c b/src/egl/opengl/eglinfo.c index 75d9fe5..f7da372 100644 --- a/src/egl/opengl/eglinfo.c +++ b/src/egl/opengl/eglinfo.c @@ -178,6 +178,7 @@ doOneDisplay(EGLDisplay d, const char *name) PrintExtensions(d); PrintConfigs(d); + eglTerminate(d); printf("\n"); return 0; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): eglinfo: Factor out a "probe one display" function
Module: Demos Branch: master Commit: f091f8a2c98a87f9681e802c72ba692b927eb9e7 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=f091f8a2c98a87f9681e802c72ba692b927eb9e7 Author: Adam Jackson Date: Tue Apr 19 16:15:10 2016 -0400 eglinfo: Factor out a "probe one display" function Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- src/egl/opengl/eglinfo.c | 27 +-- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/egl/opengl/eglinfo.c b/src/egl/opengl/eglinfo.c index b044eaa..875e407 100644 --- a/src/egl/opengl/eglinfo.c +++ b/src/egl/opengl/eglinfo.c @@ -155,19 +155,15 @@ PrintExtensions(EGLDisplay d) printf("\n"); } -int -main(int argc, char *argv[]) +static int +doOneDisplay(EGLDisplay d, const char *name) { int maj, min; - EGLDisplay d; - - PrintExtensions(EGL_NO_DISPLAY); - - d = eglGetDisplay(EGL_DEFAULT_DISPLAY); + printf("%s:\n", name); if (!eglInitialize(d, &maj, &min)) { printf("eglinfo: eglInitialize failed\n"); - exit(1); + return 1; } printf("EGL API version: %d.%d\n", maj, min); @@ -180,8 +176,19 @@ main(int argc, char *argv[]) PrintExtensions(d); PrintConfigs(d); + printf("\n"); + return 0; +} - eglTerminate(d); +int +main(int argc, char *argv[]) +{ + int ret; - return 0; + PrintExtensions(EGL_NO_DISPLAY); + printf("\n"); + + ret = doOneDisplay(eglGetDisplay(EGL_DEFAULT_DISPLAY), "Default display"); + + return ret; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): eglinfo: Print client extensions first
Module: Demos Branch: master Commit: 4997dc713a5da95d6a70f626f1f7b27eb858d16a URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=4997dc713a5da95d6a70f626f1f7b27eb858d16a Author: Adam Jackson Date: Tue Apr 19 16:04:07 2016 -0400 eglinfo: Print client extensions first These are independent of the display, and I want to iterate over those. Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- src/egl/opengl/eglinfo.c | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/egl/opengl/eglinfo.c b/src/egl/opengl/eglinfo.c index ca22df2..b044eaa 100644 --- a/src/egl/opengl/eglinfo.c +++ b/src/egl/opengl/eglinfo.c @@ -159,7 +159,11 @@ int main(int argc, char *argv[]) { int maj, min; - EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); + EGLDisplay d; + + PrintExtensions(EGL_NO_DISPLAY); + + d = eglGetDisplay(EGL_DEFAULT_DISPLAY); if (!eglInitialize(d, &maj, &min)) { printf("eglinfo: eglInitialize failed\n"); @@ -174,7 +178,6 @@ main(int argc, char *argv[]) #endif PrintExtensions(d); - PrintExtensions(EGL_NO_DISPLAY); PrintConfigs(d); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): eglinfo: Add EXT_platform_* awareness
Module: Demos Branch: master Commit: 7a0f0310a9b5129465a2e8ab6f2c4ea1a8e98f40 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=7a0f0310a9b5129465a2e8ab6f2c4ea1a8e98f40 Author: Adam Jackson Date: Tue Apr 19 16:40:03 2016 -0400 eglinfo: Add EXT_platform_* awareness Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- src/egl/opengl/eglinfo.c | 41 +++-- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/egl/opengl/eglinfo.c b/src/egl/opengl/eglinfo.c index 875e407..75d9fe5 100644 --- a/src/egl/opengl/eglinfo.c +++ b/src/egl/opengl/eglinfo.c @@ -115,7 +115,7 @@ PrintConfigs(EGLDisplay d) } -static void +static const char * PrintExtensions(EGLDisplay d) { const char *extensions, *p, *end, *next; @@ -126,7 +126,7 @@ PrintExtensions(EGLDisplay d) extensions = eglQueryString(d, EGL_EXTENSIONS); if (!extensions) - return; + return NULL; column = 0; end = extensions + strlen(extensions); @@ -153,6 +153,8 @@ PrintExtensions(EGLDisplay d) if (column > 0) printf("\n"); + + return extensions; } static int @@ -162,7 +164,7 @@ doOneDisplay(EGLDisplay d, const char *name) printf("%s:\n", name); if (!eglInitialize(d, &maj, &min)) { - printf("eglinfo: eglInitialize failed\n"); + printf("eglinfo: eglInitialize failed\n\n"); return 1; } @@ -183,12 +185,39 @@ doOneDisplay(EGLDisplay d, const char *name) int main(int argc, char *argv[]) { - int ret; + int ret = 0; + const char *clientext; - PrintExtensions(EGL_NO_DISPLAY); + clientext = PrintExtensions(EGL_NO_DISPLAY); printf("\n"); - ret = doOneDisplay(eglGetDisplay(EGL_DEFAULT_DISPLAY), "Default display"); + if (strstr(clientext, "EGL_EXT_platform_base")) { + PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = + (PFNEGLGETPLATFORMDISPLAYEXTPROC) + eglGetProcAddress("eglGetPlatformDisplayEXT"); + if (strstr(clientext, "EGL_KHR_platform_android")) + ret += doOneDisplay(getPlatformDisplay(EGL_PLATFORM_ANDROID_KHR, + EGL_DEFAULT_DISPLAY, + NULL), "Android platform"); + if (strstr(clientext, "EGL_MESA_platform_gbm") || + strstr(clientext, "EGL_KHR_platform_gbm")) + ret += doOneDisplay(getPlatformDisplay(EGL_PLATFORM_GBM_MESA, + EGL_DEFAULT_DISPLAY, + NULL), "GBM platform"); + if (strstr(clientext, "EGL_EXT_platform_wayland") || + strstr(clientext, "EGL_KHR_platform_wayland")) + ret += doOneDisplay(getPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, + EGL_DEFAULT_DISPLAY, + NULL), "Wayland platform"); + if (strstr(clientext, "EGL_EXT_platform_x11") || + strstr(clientext, "EGL_KHR_platform_x11")) + ret += doOneDisplay(getPlatformDisplay(EGL_PLATFORM_X11_EXT, + EGL_DEFAULT_DISPLAY, + NULL), "X11 platform"); + } + else { + ret = doOneDisplay(eglGetDisplay(EGL_DEFAULT_DISPLAY), "Default display"); + } return ret; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): eglinfo: Note when an EGLConfig is streams-compatible
Module: Demos Branch: master Commit: 7bb5775189fbcdf0ddb62f72f00a69c635270a08 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=7bb5775189fbcdf0ddb62f72f00a69c635270a08 Author: Adam Jackson Date: Tue Apr 19 15:30:41 2016 -0400 eglinfo: Note when an EGLConfig is streams-compatible Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- src/egl/opengl/eglinfo.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/egl/opengl/eglinfo.c b/src/egl/opengl/eglinfo.c index 1f79fef..ca22df2 100644 --- a/src/egl/opengl/eglinfo.c +++ b/src/egl/opengl/eglinfo.c @@ -93,6 +93,8 @@ PrintConfigs(EGLDisplay d) strcat(surfString, "pb,"); if (surfaces & EGL_PIXMAP_BIT) strcat(surfString, "pix,"); + if (surfaces & EGL_STREAM_BIT_KHR) + strcat(surfString, "str,"); if (strlen(surfString) > 0) surfString[strlen(surfString) - 1] = 0; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi/glx: Sync some additional error checking from xserver
Module: Mesa Branch: master Commit: ea0f62e45eab39a8957f933325a1e16ace5c9e8c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea0f62e45eab39a8957f933325a1e16ace5c9e8c Author: Adam Jackson Date: Thu Mar 24 13:57:58 2016 -0400 glapi/glx: Sync some additional error checking from xserver Reviewed-by: Ian Romanick Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/glX_proto_recv.py | 4 1 file changed, 4 insertions(+) diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py index 1cfa8c5..cf5b59c 100644 --- a/src/mapi/glapi/gen/glX_proto_recv.py +++ b/src/mapi/glapi/gen/glX_proto_recv.py @@ -437,6 +437,10 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): print '%s %s = __glXGetAnswerBuffer(cl, %s%s, answerBuffer, sizeof(answerBuffer), %u);' % (param.type_string(), param.name, param.counter, size_scale, type_size) answer_string = param.name answer_count = param.counter +print '' +print 'if (%s == NULL) return BadAlloc;' % (param.name) +print '__glXClearErrorOccured();' +print '' elif c >= 1: print '%s %s[%u];' % (answer_type, param.name, c) answer_string = param.name ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi/glx: Mark the indirect swapped dispatch functions _X_COLD
Module: Mesa Branch: master Commit: 5e1aec6db073416ae6ddf0eeaaea4964b489af8e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e1aec6db073416ae6ddf0eeaaea4964b489af8e Author: Adam Jackson Date: Thu Mar 24 13:57:58 2016 -0400 glapi/glx: Mark the indirect swapped dispatch functions _X_COLD A modest size savings: textdata bss dec hex filename 264143 15608 232 279983 445af libglx.so.before 254303 15608 232 270143 41f3f libglx.so.after Reviewed-by: Ian Romanick Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/glX_proto_recv.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py index cf5b59c..afee388 100644 --- a/src/mapi/glapi/gen/glX_proto_recv.py +++ b/src/mapi/glapi/gen/glX_proto_recv.py @@ -55,15 +55,15 @@ class PrintGlxDispatch_h(gl_XML.gl_print_base): if not func.ignore and not func.vectorequiv: if func.glx_rop: print 'extern _X_HIDDEN void __glXDisp_%s(GLbyte * pc);' % (func.name) -print 'extern _X_HIDDEN void __glXDispSwap_%s(GLbyte * pc);' % (func.name) +print 'extern _X_HIDDEN _X_COLD void __glXDispSwap_%s(GLbyte * pc);' % (func.name) elif func.glx_sop or func.glx_vendorpriv: print 'extern _X_HIDDEN int __glXDisp_%s(struct __GLXclientStateRec *, GLbyte *);' % (func.name) -print 'extern _X_HIDDEN int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (func.name) +print 'extern _X_HIDDEN _X_COLD int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (func.name) if func.glx_sop and func.glx_vendorpriv: n = func.glx_vendorpriv_names[0] print 'extern _X_HIDDEN int __glXDisp_%s(struct __GLXclientStateRec *, GLbyte *);' % (n) -print 'extern _X_HIDDEN int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (n) +print 'extern _X_HIDDEN _X_COLD int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (n) return ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Unbreak generating some of the xorg glx headers
Module: Mesa Branch: master Commit: c0a9cbea4d7a6cede911cf82b57d7612f48d48a2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0a9cbea4d7a6cede911cf82b57d7612f48d48a2 Author: Adam Jackson Date: Thu Mar 24 13:57:57 2016 -0400 glx: Unbreak generating some of the xorg glx headers Broken by: commit 9ace0b542241c77ae82a0835ac8a09e2a7510eaf Author: Dylan Baker Date: Wed May 20 15:49:11 2015 -0700 glapi: glX_proto_size.py: use argparse instead of getopt Which changed most, but not all, callers to use --header-tag instead of -h. Reviewed-by: Dylan Baker Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am index 8421af4..0d5e408 100644 --- a/src/mapi/glapi/gen/Makefile.am +++ b/src/mapi/glapi/gen/Makefile.am @@ -330,7 +330,7 @@ $(XORG_GLX_DIR)/indirect_dispatch.h: glX_proto_recv.py gl_and_glX_API.xml $(COMM $(XORG_GLX_DIR)/indirect_size_get.h: glX_proto_size.py $(COMMON_GLX) $(PYTHON_GEN) $< -f $(srcdir)/gl_API.xml -m size_h \ - --only-get -h '_INDIRECT_SIZE_GET_H_' \ + --only-get --header-tag '_INDIRECT_SIZE_GET_H_' \ | $(INDENT) $(XORG_INDENT_FLAGS) > $@ $(XORG_GLX_DIR)/indirect_size_get.c: glX_proto_size.py $(COMMON_GLX) @@ -339,7 +339,7 @@ $(XORG_GLX_DIR)/indirect_size_get.c: glX_proto_size.py $(COMMON_GLX) $(XORG_GLX_DIR)/indirect_reqsize.h: glX_proto_size.py $(COMMON_GLX) $(PYTHON_GEN) $< -f $(srcdir)/gl_API.xml -m reqsize_h \ - --only-get -h '_INDIRECT_SIZE_GET_H_' \ + --only-get --header-tag '_INDIRECT_SIZE_GET_H_' \ | $(INDENT) $(XORG_INDENT_FLAGS) > $@ $(XORG_GLX_DIR)/indirect_reqsize.c: glX_proto_size.py $(COMMON_GLX) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi/glx: Treat xserver generated targets as .PHONY
Module: Mesa Branch: master Commit: 2b8492d63ea14f36da00803620e89483743e77e7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b8492d63ea14f36da00803620e89483743e77e7 Author: Adam Jackson Date: Thu Mar 24 13:57:57 2016 -0400 glapi/glx: Treat xserver generated targets as .PHONY Meaning, always rebuild them when asked instead of bothering to look at timestamps (and then wondering why nothing happened when you said make). Reviewed-by: Ian Romanick Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am index 1e34632..fff6805 100644 --- a/src/mapi/glapi/gen/Makefile.am +++ b/src/mapi/glapi/gen/Makefile.am @@ -100,6 +100,8 @@ XORG_OUTPUTS = \ $(XORG_GLX_DIR)/indirect_size_get.h \ $(XORG_GLX_DIR)/indirect_table.c +.PHONY: $(XORG_OUTPUTS) + ## API_XML = \ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi/glx: Thunk non-ABI calls through GetProcAddress
Module: Mesa Branch: master Commit: c2f0bc2537b8e3d8a8dc4b8fb2e7c54b89cab60d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2f0bc2537b8e3d8a8dc4b8fb2e7c54b89cab60d Author: Adam Jackson Date: Thu Mar 24 13:57:57 2016 -0400 glapi/glx: Thunk non-ABI calls through GetProcAddress Reviewed-by: Ian Romanick Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/glX_proto_recv.py | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py index 916da94..1cfa8c5 100644 --- a/src/mapi/glapi/gen/glX_proto_recv.py +++ b/src/mapi/glapi/gen/glX_proto_recv.py @@ -117,6 +117,9 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): return +def fptrType(self, name): + fptr = "pfngl" + name + "proc" + return fptr.upper() def printFunction(self, f, name): if (f.glx_sop or f.glx_vendorpriv) and (len(f.get_images()) != 0): @@ -134,6 +137,9 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): print '{' +if not f.is_abi(): +print '%s %s = __glGetProcAddress("gl%s");' % (self.fptrType(name), name, name) + if f.glx_rop or f.vectorequiv: self.printRenderFunction(f) elif f.glx_sop or f.glx_vendorpriv: @@ -218,6 +224,7 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): def emit_function_call(self, f, retval_assign, indent): list = [] +prefix = "gl" if f.is_abi() else "" for param in f.parameterIterator(): if param.is_padding: @@ -230,8 +237,7 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): list.append( '%s%s' % (indent, location) ) - -print '%s%sgl%s(%s);' % (indent, retval_assign, f.name, string.join(list, ',\n')) +print '%s%s%s%s(%s);' % (indent, retval_assign, prefix, f.name, string.join(list, ',\n')) def common_func_print_just_start(self, f, indent): ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glapi/glx: Emit direct GL calls instead of dispatch lookup
Module: Mesa Branch: master Commit: ce3f0b23d1ee3e854780d01effb90a7c39134ffd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce3f0b23d1ee3e854780d01effb90a7c39134ffd Author: Adam Jackson Date: Thu Mar 24 13:57:57 2016 -0400 glapi/glx: Emit direct GL calls instead of dispatch lookup Reviewed-by: Ian Romanick Signed-off-by: Adam Jackson --- src/mapi/glapi/gen/Makefile.am | 11 --- src/mapi/glapi/gen/glX_proto_recv.py | 33 ++--- 2 files changed, 10 insertions(+), 34 deletions(-) diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am index 0d5e408..1e34632 100644 --- a/src/mapi/glapi/gen/Makefile.am +++ b/src/mapi/glapi/gen/Makefile.am @@ -89,18 +89,7 @@ EXTRA_DIST= \ XORG_GLX_DIR = $(XORG_BASE)/glx XORG_GLAPI_DIR = $(XORG_BASE)/glx -XORG_GLAPI_OUTPUTS = \ - $(XORG_GLAPI_DIR)/glprocs.h \ - $(XORG_GLAPI_DIR)/glapitable.h \ - $(XORG_GLAPI_DIR)/dispatch.h - -if HAVE_APPLEDRI -XORG_GLAPI_OUTPUTS += \ - $(XORG_GLAPI_DIR)/glapi_gentable.c -endif - XORG_OUTPUTS = \ - $(XORG_GLAPI_OUTPUTS) \ $(XORG_GLX_DIR)/indirect_dispatch.c \ $(XORG_GLX_DIR)/indirect_dispatch_swap.c \ $(XORG_GLX_DIR)/indirect_dispatch.h \ diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py index 5d95f27..916da94 100644 --- a/src/mapi/glapi/gen/glX_proto_recv.py +++ b/src/mapi/glapi/gen/glX_proto_recv.py @@ -80,21 +80,14 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): def printRealHeader(self): -print '#include ' -print '#include ' -print '#include ' - print '#include ' +print '#include "glxserver.h"' print '#include "indirect_size.h"' print '#include "indirect_size_get.h"' print '#include "indirect_dispatch.h"' -print '#include "glxserver.h"' print '#include "glxbyteorder.h"' print '#include "indirect_util.h"' print '#include "singlesize.h"' -print '#include "glapi.h"' -print '#include "glapitable.h"' -print '#include "dispatch.h"' print '' print '#define __GLX_PAD(x) (((x) + 3) & ~3)' print '' @@ -238,13 +231,7 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): list.append( '%s%s' % (indent, location) ) -if len( list ): -print '%s%sCALL_%s( GET_DISPATCH(), (' % (indent, retval_assign, f.name) -print string.join( list, ",\n" ) -print '%s) );' % (indent) -else: -print '%s%sCALL_%s( GET_DISPATCH(), () );' % (indent, retval_assign, f.name) -return +print '%s%sgl%s(%s);' % (indent, retval_assign, f.name, string.join(list, ',\n')) def common_func_print_just_start(self, f, indent): @@ -507,18 +494,18 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): # the must NEVER be byte-swapped. if not (img.img_type == "GL_BITMAP" and img.img_format == "GL_COLOR_INDEX"): -print 'CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES, hdr->swapBytes) );' +print 'glPixelStorei(GL_UNPACK_SWAP_BYTES, hdr->swapBytes);' -print 'CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST, hdr->lsbFirst) );' +print 'glPixelStorei(GL_UNPACK_LSB_FIRST, hdr->lsbFirst);' -print 'CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH, (GLint) %shdr->rowLength%s) );' % (pre, post) +print 'glPixelStorei(GL_UNPACK_ROW_LENGTH, (GLint) %shdr->rowLength%s);' % (pre, post) if img.depth: -print 'CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_IMAGE_HEIGHT, (GLint) %shdr->imageHeight%s) );' % (pre, post) -print 'CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS, (GLint) %shdr->skipRows%s) );' % (pre, post) +print 'glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, (GLint) %shdr->imageHeight%s);' % (pre, post) +print 'glPixelStorei(GL_UNPACK_SKIP_ROWS, (GLint) %shdr->skipRows%s);' % (pre, post) if img.depth: -print 'CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_IMAGES, (GLint) %shdr->skipImages%s) );' % (pre, post) -print 'CALL_PixelStorei( GET_DIS
Mesa (master): glx: Fix __glXWireToEvent for BufferSwapComplete
Module: Mesa Branch: master Commit: 8f7ebcb6fad53ea6d2f80fc5b7a046db07690032 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f7ebcb6fad53ea6d2f80fc5b7a046db07690032 Author: Adam Jackson Date: Fri Jul 31 11:32:58 2015 -0400 glx: Fix __glXWireToEvent for BufferSwapComplete In the DRI2 path this event is magically synthesized from the corresponding DRI2 event, but with Present, the server sends us the event itself. The DRI2 path fills in the serial number, send_event, and display fields of the XEvent struct that the app sees, but the Present path did not. This is likely related to a class of crashes seen in gtk/clutter apps: https://bugzilla.redhat.com/attachment.cgi?id=1032631 Note that the crashing instruction is looking up the lock_fns slot in the Display *, and %rdi (holding the Display *) is 0x1. Cc: mesa-sta...@lists.freedesktop.org Signed-off-by: Adam Jackson Reviewed-by: Eric Anholt --- src/glx/glxext.c |3 +++ 1 file changed, 3 insertions(+) diff --git a/src/glx/glxext.c b/src/glx/glxext.c index fdc24d4..dc87fb9 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -138,6 +138,9 @@ __glXWireToEvent(Display *dpy, XEvent *event, xEvent *wire) if (!glxDraw) return False; + aevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *) wire); + aevent->send_event = (awire->type & 0x80) != 0; + aevent->display = dpy; aevent->event_type = awire->event_type; aevent->drawable = glxDraw->xDrawable; aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Fix missing bit decl for EXT_texture_integer
Module: Mesa Branch: master Commit: bafdafa7b2e6649791188b5acf235ba166ceae50 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bafdafa7b2e6649791188b5acf235ba166ceae50 Author: Adam Jackson Date: Fri Jul 31 13:36:21 2015 -0400 glx: Fix missing bit decl for EXT_texture_integer Missing from: commit b15aba940a3b6fc7c9bebc692968e7e9b72b9f29 Author: Adam Jackson Date: Tue Jul 21 11:43:42 2015 -0400 glx: Fix image size computation for EXT_texture_integer (v2) Signed-off-by: Adam Jackson --- src/glx/glxextensions.h |1 + 1 file changed, 1 insertion(+) diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h index 37e4ccc..90b173f 100644 --- a/src/glx/glxextensions.h +++ b/src/glx/glxextensions.h @@ -146,6 +146,7 @@ enum GL_EXT_texture_env_combine_bit, GL_EXT_texture_env_dot3_bit, GL_EXT_texture_filter_anisotropic_bit, + GL_EXT_texture_integer_bit, GL_EXT_texture_lod_bit, GL_EXT_texture_lod_bias_bit, GL_EXT_texture_mirror_clamp_bit, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Fix image size computation for EXT_texture_integer (v2 )
Module: Mesa Branch: master Commit: b15aba940a3b6fc7c9bebc692968e7e9b72b9f29 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b15aba940a3b6fc7c9bebc692968e7e9b72b9f29 Author: Adam Jackson Date: Tue Jul 21 11:43:42 2015 -0400 glx: Fix image size computation for EXT_texture_integer (v2) Without this this extension basically can't work in indirect contexts, TexImage2D will compute the image size as 0 and we'll send no image data to the server. v2: Add EXT_texture_integer to the client extension list too (Ian) Reviewed-by: Eric Anholt Signed-off-by: Adam Jackson --- src/glx/compsize.c | 10 ++ src/glx/glxextensions.c |1 + 2 files changed, 11 insertions(+) diff --git a/src/glx/compsize.c b/src/glx/compsize.c index 99c7763..8055919 100644 --- a/src/glx/compsize.c +++ b/src/glx/compsize.c @@ -65,6 +65,8 @@ __glElementsPerGroup(GLenum format, GLenum type) switch (format) { case GL_RGB: case GL_BGR: + case GL_RGB_INTEGER_EXT: + case GL_BGR_INTEGER_EXT: return 3; case GL_RG: case GL_422_EXT: @@ -74,10 +76,13 @@ __glElementsPerGroup(GLenum format, GLenum type) case GL_DEPTH_STENCIL_NV: case GL_YCBCR_422_APPLE: case GL_LUMINANCE_ALPHA: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: return 2; case GL_RGBA: case GL_BGRA: case GL_ABGR_EXT: + case GL_RGBA_INTEGER_EXT: + case GL_BGRA_INTEGER_EXT: return 4; case GL_COLOR_INDEX: case GL_STENCIL_INDEX: @@ -88,6 +93,11 @@ __glElementsPerGroup(GLenum format, GLenum type) case GL_ALPHA: case GL_LUMINANCE: case GL_INTENSITY: + case GL_RED_INTEGER_EXT: + case GL_GREEN_INTEGER_EXT: + case GL_BLUE_INTEGER_EXT: + case GL_ALPHA_INTEGER_EXT: + case GL_LUMINANCE_INTEGER_EXT: return 1; default: return 0; diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c index cb8cd66..3b29aef 100644 --- a/src/glx/glxextensions.c +++ b/src/glx/glxextensions.c @@ -241,6 +241,7 @@ static const struct extension_info known_gl_extensions[] = { { GL(EXT_texture_env_combine),VER(1,3), Y, N, N, N }, { GL(EXT_texture_env_dot3), VER(0,0), Y, N, N, N }, { GL(EXT_texture_filter_anisotropic), VER(0,0), Y, N, N, N }, + { GL(EXT_texture_integer),VER(0,0), Y, N, N, N }, { GL(EXT_texture_lod),VER(1,2), Y, N, N, N }, { GL(EXT_texture_lod_bias), VER(1,4), Y, N, N, N }, { GL(EXT_texture_mirror_clamp), VER(0,0), Y, N, N, N }, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r600/sb: Fix an &/&& mistake
Module: Mesa Branch: master Commit: 5b4a7ec8f1d2eee12895541bb5c7d15382370884 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b4a7ec8f1d2eee12895541bb5c7d15382370884 Author: Adam Jackson Date: Tue Jul 21 12:08:20 2015 -0400 r600/sb: Fix an &/&& mistake gcc says: sb/sb_sched.cpp: In member function 'bool r600_sb::alu_group_tracker::try_reserve(r600_sb::alu_node*)': sb/sb_sched.cpp:492:7: warning: suggest parentheses around operand of '!' or change '&' to '&&' or '!' to '~' [-Wparentheses] if (!trans & fbs) It happens to be harmless; if fbs is ever non-zero, it will be VEC_210, which is 5, so (!trans & 5) == 1 and the branch works as expected. But logical AND is clearly what was meant. Reviewed-by: Alex Deucher Signed-off-by: Adam Jackson --- src/gallium/drivers/r600/sb/sb_sched.cpp |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/sb/sb_sched.cpp b/src/gallium/drivers/r600/sb/sb_sched.cpp index 2e38a62..6268078 100644 --- a/src/gallium/drivers/r600/sb/sb_sched.cpp +++ b/src/gallium/drivers/r600/sb/sb_sched.cpp @@ -489,7 +489,7 @@ bool alu_group_tracker::try_reserve(alu_node* n) { n->bc.bank_swizzle = 0; - if (!trans & fbs) + if (!trans && fbs) n->bc.bank_swizzle = VEC_210; if (gpr.try_reserve(n)) { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl: Remove skeleton implementation of EGL_MESA_screen_surface
Module: Mesa Branch: master Commit: 7a58262e58d8edac3308777def0950032628edee URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a58262e58d8edac3308777def0950032628edee Author: Adam Jackson Date: Wed Apr 1 10:39:45 2015 -0400 egl: Remove skeleton implementation of EGL_MESA_screen_surface No backend wires this up to anything, and the extension spec has been marked obsolete for 4+ years. Reviewed-by: Marek Olšák Signed-off-by: Adam Jackson --- include/EGL/eglmesaext.h | 46 -- src/egl/main/Makefile.sources |4 - src/egl/main/eglapi.c | 278 src/egl/main/eglapi.h | 31 src/egl/main/eglconfig.c |4 - src/egl/main/eglcurrent.c |8 - src/egl/main/egldisplay.h |1 - src/egl/main/eglfallbacks.c | 18 --- src/egl/main/eglmode.c| 357 - src/egl/main/eglmode.h| 88 -- src/egl/main/eglscreen.c | 235 --- src/egl/main/eglscreen.h | 117 -- src/egl/main/eglsurface.c | 55 --- 13 files changed, 1242 deletions(-) diff --git a/include/EGL/eglmesaext.h b/include/EGL/eglmesaext.h index 7ce8346..27cf7eb 100644 --- a/include/EGL/eglmesaext.h +++ b/include/EGL/eglmesaext.h @@ -34,52 +34,6 @@ extern "C" { #include -/* EGL_MESA_screen extension >>> PRELIMINARY <<< */ -#ifndef EGL_MESA_screen_surface -#define EGL_MESA_screen_surface 1 - -#define EGL_BAD_SCREEN_MESA0x4000 -#define EGL_BAD_MODE_MESA 0x4001 -#define EGL_SCREEN_COUNT_MESA 0x4002 -#define EGL_SCREEN_POSITION_MESA 0x4003 -#define EGL_SCREEN_POSITION_GRANULARITY_MESA 0x4004 -#define EGL_MODE_ID_MESA 0x4005 -#define EGL_REFRESH_RATE_MESA 0x4006 -#define EGL_OPTIMAL_MESA 0x4007 -#define EGL_INTERLACED_MESA0x4008 -#define EGL_SCREEN_BIT_MESA0x08 - -typedef khronos_uint32_t EGLScreenMESA; -typedef khronos_uint32_t EGLModeMESA; - -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglChooseModeMESA(EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes); -EGLAPI EGLBoolean EGLAPIENTRY eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes); -EGLAPI EGLBoolean EGLAPIENTRY eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value); -EGLAPI EGLBoolean EGLAPIENTRY eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens); -EGLAPI EGLSurface EGLAPIENTRY eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglShowScreenSurfaceMESA(EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode); -EGLAPI EGLBoolean EGLAPIENTRY eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode); -EGLAPI const char * EGLAPIENTRY eglQueryModeStringMESA(EGLDisplay dpy, EGLModeMESA mode); -#endif /* EGL_EGLEXT_PROTOTYPES */ - -typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSEMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMODESMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGetModeATTRIBMESA) (EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSCRREENSMESA) (EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens); -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESCREENSURFACEMESA) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSHOWSCREENSURFACEMESA) (EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSCREENPOSIITONMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENSURFACEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode); -typedef const char * (EGLAPIENTR
Mesa (master): i915: For the love of all that is holy, stop saying "IGD"
Module: Mesa Branch: master Commit: b290330e3b78405424a907cf6e82cef531c71c50 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b290330e3b78405424a907cf6e82cef531c71c50 Author: Adam Jackson Date: Wed Jan 28 16:28:12 2015 -0500 i915: For the love of all that is holy, stop saying "IGD" a001 and a011 are pineview chips. Say so. Reviewed-by: Matt Turner Signed-off-by: Adam Jackson --- include/pci_ids/i915_pci_ids.h|4 ++-- src/mesa/drivers/dri/i915/intel_chipset.h | 14 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/pci_ids/i915_pci_ids.h b/include/pci_ids/i915_pci_ids.h index 7d51975..1c43c8e 100644 --- a/include/pci_ids/i915_pci_ids.h +++ b/include/pci_ids/i915_pci_ids.h @@ -11,5 +11,5 @@ CHIPSET(0x27AE, I945_GME, "Intel(R) 945GME") CHIPSET(0x29B2, Q35_G,"Intel(R) Q35") CHIPSET(0x29C2, G33_G,"Intel(R) G33") CHIPSET(0x29D2, Q33_G,"Intel(R) Q33") -CHIPSET(0xA011, IGD_GM, "Intel(R) IGD") -CHIPSET(0xA001, IGD_G,"Intel(R) IGD") +CHIPSET(0xA011, PNV_GM, "Intel(R) Pineview M") +CHIPSET(0xA001, PNV_G,"Intel(R) Pineview") diff --git a/src/mesa/drivers/dri/i915/intel_chipset.h b/src/mesa/drivers/dri/i915/intel_chipset.h index 8375a4b..3828085 100644 --- a/src/mesa/drivers/dri/i915/intel_chipset.h +++ b/src/mesa/drivers/dri/i915/intel_chipset.h @@ -46,12 +46,12 @@ #define PCI_CHIP_G33_G 0x29C2 #define PCI_CHIP_Q33_G 0x29D2 -#define PCI_CHIP_IGD_GM0xA011 -#define PCI_CHIP_IGD_G 0xA001 +#define PCI_CHIP_PNV_GM0xA011 +#define PCI_CHIP_PNV_G 0xA001 -#define IS_IGDGM(devid)(devid == PCI_CHIP_IGD_GM) -#define IS_IGDG(devid) (devid == PCI_CHIP_IGD_G) -#define IS_IGD(devid) (IS_IGDG(devid) || IS_IGDGM(devid)) +#define IS_PNVGM(devid)(devid == PCI_CHIP_PNV_GM) +#define IS_PNVG(devid) (devid == PCI_CHIP_PNV_G) +#define IS_PNV(devid) (IS_PNVG(devid) || IS_PNVGM(devid)) #define IS_MOBILE(devid) (devid == PCI_CHIP_I855_GM || \ devid == PCI_CHIP_I915_GM || \ @@ -60,7 +60,7 @@ devid == PCI_CHIP_I965_GM || \ devid == PCI_CHIP_I965_GME || \ devid == PCI_CHIP_GM45_GM || \ -IS_IGD(devid) || \ +IS_PNV(devid) || \ devid == PCI_CHIP_ILM_G) #define IS_915(devid) (devid == PCI_CHIP_I915_G || \ @@ -72,7 +72,7 @@ devid == PCI_CHIP_I945_GME || \ devid == PCI_CHIP_G33_G || \ devid == PCI_CHIP_Q33_G || \ -devid == PCI_CHIP_Q35_G || IS_IGD(devid)) +devid == PCI_CHIP_Q35_G || IS_PNV(devid)) #define IS_9XX(devid) (IS_915(devid) || \ IS_945(devid)) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Demos (master): glxinfo: Add support for GLX_MESA_query_renderer
Module: Demos Branch: master Commit: 999b6950c644266bb871e79438751bdba2fa2a08 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=999b6950c644266bb871e79438751bdba2fa2a08 Author: Adam Jackson Date: Mon Jan 12 13:48:18 2015 -0500 glxinfo: Add support for GLX_MESA_query_renderer This just queries our context, it doesn't attempt to enumerate all the available renderers. Reviewed-by: Brian Paul Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/xdemos/glxinfo.c | 49 + 1 file changed, 49 insertions(+) diff --git a/src/xdemos/glxinfo.c b/src/xdemos/glxinfo.c index 779aaa7..c3e4ca3 100644 --- a/src/xdemos/glxinfo.c +++ b/src/xdemos/glxinfo.c @@ -342,6 +342,53 @@ choose_xvisinfo(Display *dpy, int scrnum) } +static void +query_renderer(void) +{ +#ifdef GLX_MESA_query_renderer +PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC queryInteger; +PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC queryString; +unsigned int v[3]; + +queryInteger = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) + glXGetProcAddressARB((const GLubyte *) +"glXQueryCurrentRendererIntegerMESA"); +queryString = (PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) + glXGetProcAddressARB((const GLubyte *) +"glXQueryCurrentRendererStringMESA"); + +printf("Extended renderer info (GLX_MESA_query_renderer):\n"); +queryInteger(GLX_RENDERER_VENDOR_ID_MESA, v); +printf("Vendor: %s (0x%x)\n", + queryString(GLX_RENDERER_VENDOR_ID_MESA), *v); +queryInteger(GLX_RENDERER_DEVICE_ID_MESA, v); +printf("Device: %s (0x%x)\n", + queryString(GLX_RENDERER_DEVICE_ID_MESA), *v); +queryInteger(GLX_RENDERER_VERSION_MESA, v); +printf("Version: %d.%d.%d\n", v[0], v[1], v[2]); +queryInteger(GLX_RENDERER_ACCELERATED_MESA, v); +printf("Accelerated: %s\n", *v ? "yes" : "no"); +queryInteger(GLX_RENDERER_VIDEO_MEMORY_MESA, v); +printf("Video memory: %dMB\n", *v); +queryInteger(GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA, v); +printf("Unified memory: %s\n", *v ? "yes" : "no"); +queryInteger(GLX_RENDERER_PREFERRED_PROFILE_MESA, v); +printf("Preferred profile: %s (0x%x)\n", + *v == GLX_CONTEXT_CORE_PROFILE_BIT_ARB ? "core" : + *v == GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB ? "compat" : + "unknown", *v); +queryInteger(GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA, v); +printf("Max core profile version: %d.%d\n", v[0], v[1]); +queryInteger(GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA, v); +printf("Max compat profile version: %d.%d\n", v[0], v[1]); +queryInteger(GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA, v); +printf("Max GLES1 profile version: %d.%d\n", v[0], v[1]); +queryInteger(GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA, v); +printf("Max GLES[23] profile version: %d.%d\n", v[0], v[1]); +#endif +} + + static Bool print_screen_info(Display *dpy, int scrnum, Bool allowDirect, Bool coreProfile, Bool es2Profile, Bool limits, @@ -493,6 +540,8 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, printf("GLX version: %u.%u\n", glxVersionMajor, glxVersionMinor); printf("GLX extensions:\n"); print_extension_list(glxExtensions, singleLine); + if (strstr(glxExtensions, "GLX_MESA_query_renderer")) + query_renderer(); printf("OpenGL vendor string: %s\n", glVendor); printf("OpenGL renderer string: %s\n", glRenderer); } else ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: load dri driver with RTLD_LOCAL so dlclose never fails to unload
Module: Mesa Branch: master Commit: e3cc0d90e14e62a0a787b6c07a6df0f5c84039be URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e3cc0d90e14e62a0a787b6c07a6df0f5c84039be Author: Jerome Glisse Date: Thu May 29 13:32:21 2014 -0400 glx: load dri driver with RTLD_LOCAL so dlclose never fails to unload There is no reason anymore to load with RTLD_GLOBAL and for some driver this even result in dlclose failing to unload leading to catastrophic failure with swrast fallback. Cc: "10.1 10.2" Reviewed-by: Eric Anholt Reviewed-by: Ian Romanick Signed-off-by: Jérôme Glisse --- src/glx/dri_common.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 8bf4705..e5a3f70 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -45,8 +45,8 @@ #ifndef RTLD_NOW #define RTLD_NOW 0 #endif -#ifndef RTLD_GLOBAL -#define RTLD_GLOBAL 0 +#ifndef RTLD_LOCAL +#define RTLD_LOCAL 0 #endif _X_HIDDEN void @@ -99,7 +99,7 @@ driOpenDriver(const char *driverName) int len; /* Attempt to make sure libGL symbols will be visible to the driver */ - glhandle = dlopen("libGL.so.1", RTLD_NOW | RTLD_GLOBAL); + glhandle = dlopen("libGL.so.1", RTLD_NOW | RTLD_LOCAL); libPaths = NULL; if (geteuid() == getuid()) { @@ -127,14 +127,14 @@ driOpenDriver(const char *driverName) snprintf(realDriverName, sizeof realDriverName, "%.*s/tls/%s_dri.so", len, p, driverName); InfoMessageF("OpenDriver: trying %s\n", realDriverName); - handle = dlopen(realDriverName, RTLD_NOW | RTLD_GLOBAL); + handle = dlopen(realDriverName, RTLD_NOW | RTLD_LOCAL); #endif if (handle == NULL) { snprintf(realDriverName, sizeof realDriverName, "%.*s/%s_dri.so", len, p, driverName); InfoMessageF("OpenDriver: trying %s\n", realDriverName); - handle = dlopen(realDriverName, RTLD_NOW | RTLD_GLOBAL); + handle = dlopen(realDriverName, RTLD_NOW | RTLD_LOCAL); } if (handle != NULL) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeonsi: Don't use anonymous struct trick in atom tracking
Module: Mesa Branch: master Commit: 74388dd24bc7fdb9e62ec18096163f5426e03fbf URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=74388dd24bc7fdb9e62ec18096163f5426e03fbf Author: Adam Jackson Date: Tue Apr 22 12:46:08 2014 -0400 radeonsi: Don't use anonymous struct trick in atom tracking I'm somewhat impressed that current gccs will let you do this, but sufficiently old ones (including 4.4.7 in RHEL6) won't. Reviewed-by: Marek Olšák Signed-off-by: Adam Jackson --- src/gallium/drivers/radeonsi/si_descriptors.c |6 +++--- src/gallium/drivers/radeonsi/si_hw_context.c |2 +- src/gallium/drivers/radeonsi/si_pipe.c|6 +++--- src/gallium/drivers/radeonsi/si_pipe.h|2 +- src/gallium/drivers/radeonsi/si_state.c |2 +- src/gallium/drivers/radeonsi/si_state_draw.c |2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index 0c58d5f..e0b211f 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -987,9 +987,9 @@ void si_init_all_descriptors(struct si_context *sctx) si_init_sampler_views(sctx, &sctx->samplers[i].views, i); - sctx->atoms.const_buffers[i] = &sctx->const_buffers[i].desc.atom; - sctx->atoms.rw_buffers[i] = &sctx->rw_buffers[i].desc.atom; - sctx->atoms.sampler_views[i] = &sctx->samplers[i].views.desc.atom; + sctx->atoms.s.const_buffers[i] = &sctx->const_buffers[i].desc.atom; + sctx->atoms.s.rw_buffers[i] = &sctx->rw_buffers[i].desc.atom; + sctx->atoms.s.sampler_views[i] = &sctx->samplers[i].views.desc.atom; } diff --git a/src/gallium/drivers/radeonsi/si_hw_context.c b/src/gallium/drivers/radeonsi/si_hw_context.c index 383157b..d2a1dbe 100644 --- a/src/gallium/drivers/radeonsi/si_hw_context.c +++ b/src/gallium/drivers/radeonsi/si_hw_context.c @@ -63,7 +63,7 @@ void si_need_cs_space(struct si_context *ctx, unsigned num_dw, } /* Count in framebuffer cache flushes at the end of CS. */ - num_dw += ctx->atoms.cache_flush->num_dw; + num_dw += ctx->atoms.s.cache_flush->num_dw; #if SI_TRACE_CS if (ctx->screen->b.trace_bo) { diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 3837c37..e5d0a95 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -105,10 +105,10 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, void * /* Initialize cache_flush. */ sctx->cache_flush = si_atom_cache_flush; - sctx->atoms.cache_flush = &sctx->cache_flush; + sctx->atoms.s.cache_flush = &sctx->cache_flush; - sctx->atoms.streamout_begin = &sctx->b.streamout.begin_atom; - sctx->atoms.streamout_enable = &sctx->b.streamout.enable_atom; + sctx->atoms.s.streamout_begin = &sctx->b.streamout.begin_atom; + sctx->atoms.s.streamout_enable = &sctx->b.streamout.enable_atom; switch (sctx->b.chip_class) { case SI: diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index a74bbcf..1601a4b 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -110,7 +110,7 @@ struct si_context { struct r600_atom *streamout_begin; struct r600_atom *streamout_enable; /* must be after streamout_begin */ struct r600_atom *framebuffer; - }; + } s; struct r600_atom *array[0]; } atoms; diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index d25dc60..9d048c5 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -2962,7 +2962,7 @@ void si_init_state_functions(struct si_context *sctx) { int i; - si_init_atom(&sctx->framebuffer.atom, &sctx->atoms.framebuffer, si_emit_framebuffer_state, 0); + si_init_atom(&sctx->framebuffer.atom, &sctx->atoms.s.framebuffer, si_emit_framebuffer_state, 0); sctx->b.b.create_blend_state = si_create_blend_state; sctx->b.b.bind_blend_state = si_bind_blend_state; diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c index 0676b15..c7c94fc 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.c +++ b/src/gallium/drivers/radeonsi/si_state_draw.c @@ -964,7 +964,7 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) /* C
Mesa (master): glx: Fix return value from indirect_bind_context
Module: Mesa Branch: master Commit: 1090eb57552aed1f4e36ac97b5859ff4b2cc80a5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1090eb57552aed1f4e36ac97b5859ff4b2cc80a5 Author: Adam Jackson Date: Fri Oct 25 15:12:04 2013 -0400 glx: Fix return value from indirect_bind_context _XReply returns 1 on success, but indirect_bind_context returns 0 on success. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70486 Reviewed-and-tested-by: Ian Romanick Signed-off-by: Adam Jackson --- src/glx/indirect_glx.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/glx/indirect_glx.c b/src/glx/indirect_glx.c index d27b019..28b8cd0 100644 --- a/src/glx/indirect_glx.c +++ b/src/glx/indirect_glx.c @@ -132,7 +132,7 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, __GLXattribute *state; Display *dpy = gc->psc->dpy; int opcode = __glXSetupForCommand(dpy); - Bool ret; + Bool sent; if (old != &dummyContext && !old->isDirect && old->psc->dpy == dpy) { tag = old->currentContextTag; @@ -141,8 +141,8 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, tag = 0; } - ret = SendMakeCurrentRequest(dpy, opcode, gc->xid, tag, draw, read, -&gc->currentContextTag); + sent = SendMakeCurrentRequest(dpy, opcode, gc->xid, tag, draw, read, +&gc->currentContextTag); if (!IndirectAPI) IndirectAPI = __glXNewIndirectAPI(); @@ -155,7 +155,7 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, __glXInitVertexArrayState(gc); } - return ret; + return !sent; } static void ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Propagate failures from SendMakeCurrentRequest where possible
Module: Mesa Branch: master Commit: d101204c23ba2f593881ede357309f3924cd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d101204c23ba2f593881ede357309f3924cd Author: Adam Jackson Date: Fri Oct 4 09:25:51 2013 -0400 glx: Propagate failures from SendMakeCurrentRequest where possible Reviewed-by: Brian Paul Signed-off-by: Adam Jackson --- src/glx/indirect_glx.c |7 --- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/glx/indirect_glx.c b/src/glx/indirect_glx.c index d0457fe..d27b019 100644 --- a/src/glx/indirect_glx.c +++ b/src/glx/indirect_glx.c @@ -132,6 +132,7 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, __GLXattribute *state; Display *dpy = gc->psc->dpy; int opcode = __glXSetupForCommand(dpy); + Bool ret; if (old != &dummyContext && !old->isDirect && old->psc->dpy == dpy) { tag = old->currentContextTag; @@ -140,8 +141,8 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, tag = 0; } - SendMakeCurrentRequest(dpy, opcode, gc->xid, tag, draw, read, - &gc->currentContextTag); + ret = SendMakeCurrentRequest(dpy, opcode, gc->xid, tag, draw, read, +&gc->currentContextTag); if (!IndirectAPI) IndirectAPI = __glXNewIndirectAPI(); @@ -154,7 +155,7 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, __glXInitVertexArrayState(gc); } - return Success; + return ret; } static void ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Generate fewer errors in MakeContextCurrent
Module: Mesa Branch: master Commit: e166a58c43e92f10f03b32747bff44708096f898 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e166a58c43e92f10f03b32747bff44708096f898 Author: Adam Jackson Date: Fri Oct 4 09:25:51 2013 -0400 glx: Generate fewer errors in MakeContextCurrent For a few reasons. 1: In the (current) common case, these conditionals are never true. All we're doing by checking them is slowing down MakeCurrent. The server does these checks already anyway. 2: GLX >= 3.0 contexts may legally be made current without a bound framebuffer. This does not fix piglit/glx-create-context-current-no-framebuffer, but is a prerequisite for fixing it. Cc: "9.1 9.2" Reviewed-by: Brian Paul Signed-off-by: Adam Jackson --- src/glx/glxcurrent.c | 10 -- 1 files changed, 0 insertions(+), 10 deletions(-) diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c index 3d8893c..a6884cf 100644 --- a/src/glx/glxcurrent.c +++ b/src/glx/glxcurrent.c @@ -231,16 +231,6 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw, return GL_FALSE; } - if (gc == NULL && (draw != None || read != None)) { - __glXGenerateError(dpy, (draw != None) ? draw : read, - BadMatch, X_GLXMakeContextCurrent); - return False; - } - if (gc != NULL && (draw == None || read == None)) { - __glXGenerateError(dpy, None, BadMatch, X_GLXMakeContextCurrent); - return False; - } - _glapi_check_multithread(); __glXLock(); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glx: Hide xGLXMakeCurrentReply inside SendMakeCurrentRequest
Module: Mesa Branch: master Commit: 68412d5006586f8b5814d85f76985b9d632f36df URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=68412d5006586f8b5814d85f76985b9d632f36df Author: Adam Jackson Date: Fri Oct 4 09:25:51 2013 -0400 glx: Hide xGLXMakeCurrentReply inside SendMakeCurrentRequest Reviewed-by: Brian Paul Signed-off-by: Adam Jackson --- src/glx/indirect_glx.c | 16 +--- 1 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/glx/indirect_glx.c b/src/glx/indirect_glx.c index f8944a7..d0457fe 100644 --- a/src/glx/indirect_glx.c +++ b/src/glx/indirect_glx.c @@ -59,8 +59,9 @@ static Bool SendMakeCurrentRequest(Display * dpy, CARD8 opcode, GLXContextID gc_id, GLXContextTag gc_tag, GLXDrawable draw, GLXDrawable read, - xGLXMakeCurrentReply * reply) + GLXContextTag *out_tag) { + xGLXMakeCurrentReply reply; Bool ret; LockDisplay(dpy); @@ -112,7 +113,10 @@ SendMakeCurrentRequest(Display * dpy, CARD8 opcode, } } - ret = _XReply(dpy, (xReply *) reply, 0, False); + ret = _XReply(dpy, (xReply *) &reply, 0, False); + + if (out_tag) + *out_tag = reply.contextTag; UnlockDisplay(dpy); SyncHandle(); @@ -124,7 +128,6 @@ static int indirect_bind_context(struct glx_context *gc, struct glx_context *old, GLXDrawable draw, GLXDrawable read) { - xGLXMakeCurrentReply reply; GLXContextTag tag; __GLXattribute *state; Display *dpy = gc->psc->dpy; @@ -137,13 +140,13 @@ indirect_bind_context(struct glx_context *gc, struct glx_context *old, tag = 0; } - SendMakeCurrentRequest(dpy, opcode, gc->xid, tag, draw, read, &reply); + SendMakeCurrentRequest(dpy, opcode, gc->xid, tag, draw, read, + &gc->currentContextTag); if (!IndirectAPI) IndirectAPI = __glXNewIndirectAPI(); _glapi_set_dispatch(IndirectAPI); - gc->currentContextTag = reply.contextTag; state = gc->client_state_private; if (state->array_state == NULL) { glGetString(GL_EXTENSIONS); @@ -159,7 +162,6 @@ indirect_unbind_context(struct glx_context *gc, struct glx_context *new) { Display *dpy = gc->psc->dpy; int opcode = __glXSetupForCommand(dpy); - xGLXMakeCurrentReply reply; if (gc == new) return; @@ -170,7 +172,7 @@ indirect_unbind_context(struct glx_context *gc, struct glx_context *new) */ if (!new || new->isDirect || new->psc->dpy != dpy) { SendMakeCurrentRequest(dpy, opcode, None, -gc->currentContextTag, None, None, &reply); +gc->currentContextTag, None, None, NULL); gc->currentContextTag = 0; } } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): gallium: Fix llvmpipe on big-endian machines
Module: Mesa Branch: master Commit: 2151d893fbd4a4be092098170e2fbca8c35797a5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2151d893fbd4a4be092098170e2fbca8c35797a5 Author: Adam Jackson Date: Mon Jun 24 09:48:56 2013 -0400 gallium: Fix llvmpipe on big-endian machines Squashed commit of the following: commit 0857a7e105bfcbc4d1431b2cc56612094c747ca3 Author: Richard Sandiford Date: Tue Jun 18 12:25:07 2013 -0400 gallivm: Fix lp_build_rgba8_to_fi32_soa for big endian Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 0d65131649a8aa140e2db228ba779d685c4333e3 Author: Richard Sandiford Date: Tue Jun 18 12:25:07 2013 -0400 gallivm: Fix big-endian machines This adds a bit-shift count to the format table, and adds the concept of vector or bitwise alignment on gathers. Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 9740bda9b7dc894b629ed38be9b51059ce90818f Author: Richard Sandiford Date: Tue Jun 18 12:25:07 2013 -0400 llvmpipe: Fix convert_to_blend_type on big-endian Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit ae037c2de0f029e4e99371c0de25560484f0d8df Author: Richard Sandiford Date: Tue Jun 18 12:25:06 2013 -0400 util: Convert color pack to packed formats This fixes them on big-endian. Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 5b05ac0c89ae092ea8ba5bba9f739708d7396b5c Author: Richard Sandiford Date: Tue Jun 18 12:25:06 2013 -0400 graw-xlib: Convert to packed formats Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 51396e7d098cb6ff794391cf11afe4dbf86dbea0 Author: Richard Sandiford Date: Tue Jun 18 12:25:06 2013 -0400 format: Convert to packed formats Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 417b60bc66eb450e68a92ab0e47f76e292b385e6 Author: Adam Jackson Date: Tue Jun 18 12:25:06 2013 -0400 st/dri: Convert to packed formats Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 0934b2e022a5e0847d312c40734e2b44cac52fd8 Author: Richard Sandiford Date: Tue Jun 18 12:25:06 2013 -0400 st/xlib: Convert to packed formats Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit a307ea3c3716a706963acce7966b5e405ba11db9 Author: Richard Sandiford Date: Tue Jun 18 12:25:06 2013 -0400 gbm: Convert to packed formats Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 53eebdd253e1960a645ea278f31d7ef6a6cf4aeb Author: Richard Sandiford Date: Tue Jun 18 12:25:06 2013 -0400 tests: Convert to packed formats Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 2f77fe3ee524945eacd546efcac34f7799fb3124 Author: Adam Jackson Date: Tue Jun 18 13:07:37 2013 -0400 gallium: Document packed formats Signed-off-by: Adam Jackson commit 1f1017159ce951f922210a430de9229f91f62714 Author: Richard Sandiford Date: Tue Jun 18 12:25:06 2013 -0400 gallium: Introduce 32-bit packed format names These are for interacting with buffers natively described in terms of bit shifts, like X11 visuals: uint32_t xyzw = (x << 0) | (y << 8) | (z << 16) | (w << 24); Define these in terms of (endian-dependent) aliases to the array-style format names. Reviewed-by: Adam Jackson Signed-off-by: Richard Sandiford commit 6cc7ab1ee66ed668da78c1d951dfd7782b4e786a Author: Adam Jackson Date: Mon Jun 3 12:10:32 2013 -0400 gallium: Document format name conventions v2: - Fix a channel name thinko (Michel Dänzer) - Elaborate on SCALED versus INT - Add links to DirectX and FOURCC docs Signed-off-by: Adam Jackson commit df4d269e7fb62051a3c029b84147465001e5776e Author: Adam Jackson Date: Tue Jun 18 12:25:06 2013 -0400 gallivm: Remove all notion of byte-swapping Signed-off-by: Adam Jackson Signed-off-by: Adam Jackson --- src/gallium/auxiliary/gallivm/lp_bld_conv.c| 76 --- src/gallium/auxiliary/gallivm/lp_bld_conv.h| 11 --- src/gallium/auxiliary/gallivm/lp_bld_format_aos.c | 31 ++-- .../auxiliary/gallivm/lp_bld_format_aos_array.c| 56 -- src/gallium/auxiliary/gallivm/lp_bld_format_soa.c | 21 +++-- src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c |2 +- src/gallium/auxiliary/gallivm/lp_bld_gather.c | 25 +-- src/gallium/auxiliary/gallivm/lp_bld_gather.h |6 +- src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c |4 +- src/gallium/auxiliary/gallivm/lp_bld_swizzle.c | 80 ++-- src/gallium/auxiliary/util/u_format.h | 25 ++- src/gallium/auxiliary/util/u_format_pack.py| 29 +--- src/gallium/auxiliary/util/u_format_parse.py | 10 +++ src/gallium/auxiliary/util/u_format_table.py |4 +- src/gallium/auxil
Mesa (master): st/dri/sw: Fix pitch calculation in drisw_update_tex_buffer
Module: Mesa Branch: master Commit: 5a0556f061d9db00dd7637433d393beead3b3d85 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a0556f061d9db00dd7637433d393beead3b3d85 Author: Richard Sandiford Date: Tue Jun 18 16:41:43 2013 +0100 st/dri/sw: Fix pitch calculation in drisw_update_tex_buffer swrastGetImage rounds the pitch up to 4 bytes for compatibility reasons that are explained in drisw_glx.c:bytes_per_line, so drisw_update_tex_buffer must do the same. Fixes window skew seen while running firefox over vnc on a 16-bit screen. NOTE: This is a candidate for the stable branches. [ajax: fixed typo in comment] Reviewed-by: Stéphane Marchesin Signed-off-by: Richard Sandiford --- src/gallium/state_trackers/dri/sw/drisw.c |5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c index 7a5f797..41f66d5 100644 --- a/src/gallium/state_trackers/dri/sw/drisw.c +++ b/src/gallium/state_trackers/dri/sw/drisw.c @@ -265,8 +265,9 @@ drisw_update_tex_buffer(struct dri_drawable *drawable, /* Copy the Drawable content to the mapped texture buffer */ get_image(dPriv, x, y, w, h, map); - /* The pipe transfer has a pitch rounded up to the nearest 64 pixels. */ - ximage_stride = w * cpp; + /* The pipe transfer has a pitch rounded up to the nearest 64 pixels. + get_image() has a pitch rounded up to 4 bytes. */ + ximage_stride = ((w * cpp) + 3) & -4; for (line = h-1; line; --line) { memmove(&map[line * transfer->stride], &map[line * ximage_stride], ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): st/xlib Fix XIMage bytes-per-pixel calculation
Module: Mesa Branch: master Commit: 876fefe2ff8901ae4b908cff89ac5dd4324f4fe5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=876fefe2ff8901ae4b908cff89ac5dd4324f4fe5 Author: Richard Sandiford Date: Mon Jun 17 12:10:49 2013 -0400 st/xlib Fix XIMage bytes-per-pixel calculation Fixes a crash seen while running gnome on a 16-bit screen over vnc. NOTE: This is a candidate for stable release branches. Reviewed-by: Brian Paul Signed-off-by: Richard Sandiford --- src/gallium/state_trackers/glx/xlib/xm_api.c |5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index b758c8e..7ed401c 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -1407,9 +1407,8 @@ XMesaBindTexImage(Display *dpy, XMesaBuffer drawable, int buffer, return; } - /* The pipe transfer has a pitch rounded up to the nearest 64 pixels. - We assume 32 bit pixels. */ - ximage_stride = w * 4; + /* The pipe transfer has a pitch rounded up to the nearest 64 pixels. */ + ximage_stride = w * ((img->bits_per_pixel + 7) / 8); for (line = 0; line < h; line++) memcpy(&map[line * tex_xfer->stride], ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit