Mesa (master): Revert "i965: Enable flush control"

2018-01-15 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: f2a5d27ce2c7c4e64afb5fa46005fe522268766c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f2a5d27ce2c7c4e64afb5fa46005fe522268766c

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>

---

 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[] = {
 ,
 ,
 ,
-,
 NULL
 };
 
@@ -1514,7 +1513,6 @@ static const __DRIextension 
*intelRobustScreenExtensions[] = {
 ,
 ,
 ,
-,
 ,
 ,
 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"

2018-01-15 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 138f4e380520c748cd9f2143a1c6d8ef6dc77ff9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=138f4e380520c748cd9f2143a1c6d8ef6dc77ff9

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>

---

 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[] = {
,
,
,
-   ,
NULL
 };
 
@@ -2018,7 +2017,6 @@ static const __DRIextension 
*dri_robust_screen_extensions[] = {
,
,
,
-   ,
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"

2018-01-15 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 1cbcd70b64860b7e23202919229595b18cd4fbb6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1cbcd70b64860b7e23202919229595b18cd4fbb6

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>

---

 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

2018-01-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 23ce168048698eeea3df6bb8c9de5be3ca4784cd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=23ce168048698eeea3df6bb8c9de5be3ca4784cd

Author: Igor Gnatenko <ignate...@redhat.com>
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 <a...@redhat.com>
Signed-off-by: Igor Gnatenko <ignate...@redhat.com>

---

 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

2017-12-01 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: a48a6b8a400e6e92961cf7b7b4c287e8e9875f39
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a48a6b8a400e6e92961cf7b7b4c287e8e9875f39

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 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, )) {
+  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, );
+   __glXGetDrawableAttribute(dpy, drawable, GLX_EVENT_MASK_SGIX, );
*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

2017-12-01 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: bcb15bee52aff0faae37d4b933f462735ccb918b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bcb15bee52aff0faae37d4b933f462735ccb918b

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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 !=  && 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 !=  && 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 !=  && 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 ==  || 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 ==  || 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

2017-12-01 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 75d5d22fb790d856809a9dd896ffc22a268d1d96
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=75d5d22fb790d856809a9dd896ffc22a268d1d96

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 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, );
+  __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, );
-}
-
 /**
  * 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

2017-11-29 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 0d044351b7043cd0bc94c1cb9b7a2213f8054414
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d044351b7043cd0bc94c1cb9b7a2213f8054414

Author: Adam Jackson <a...@redhat.com>
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 <nicolai.haeh...@amd.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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[] = {
,
,
,
+   ,
NULL
 };
 
@@ -1969,6 +1970,7 @@ static const __DRIextension 
*dri_robust_screen_extensions[] = {
,
,
,
+   ,
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

2017-11-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ddcd4b05a35fdad400637c3decfa9fe183b3e8c7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ddcd4b05a35fdad400637c3decfa9fe183b3e8c7

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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, _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)
+  

Mesa (master): glx/dri3: Fix passing renderType into glXCreateContext

2017-11-13 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 257edb5b9aedc9fc5d5c13eb2f48a0c11d15456f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=257edb5b9aedc9fc5d5c13eb2f48a0c11d15456f

Author: Adam Jackson <a...@redhat.com>
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 <tapani.pa...@intel.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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, );
+  1, attribs, );
 }
 
 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)

2017-11-13 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 033cfb17db85b38bc012d74f30f6c92cddf85216
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=033cfb17db85b38bc012d74f30f6c92cddf85216

Author: Adam Jackson <a...@redhat.com>
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 <tapani.pa...@intel.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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(>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

2017-11-13 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: bc1bc6f512f1ab9fd34086a93fbbc591cd310e79
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc1bc6f512f1ab9fd34086a93fbbc591cd310e79

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Nov  9 16:57:29 2017 -0500

glx: Lower GLX opcode lookup into SendMakeCurrentRequest

Reviewed-by: Tapani Pälli <tapani.pa...@intel.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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 !=  && !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,
 >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)"

2017-11-09 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 015cc6bb7cd1199ce43018bb47c89c0a26adc96a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=015cc6bb7cd1199ce43018bb47c89c0a26adc96a

Author: Adam Jackson <a...@redhat.com>
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(>base, "GLX_ARB_create_context");
   __glXEnableDirectExtension(>base, "GLX_ARB_create_context_profile");
-  __glXEnableDirectExtension(>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(>base, "GLX_ARB_create_context");
__glXEnableDirectExtension(>base, "GLX_ARB_create_context_profile");
-   __glXEnableDirectExtension(>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(>base, "GLX_ARB_create_context");
   __glXEnableDirectExtension(>base, "GLX_ARB_create_context_profile&q

Mesa (master): glx: Implement GLX_EXT_no_config_context (v2)

2017-11-09 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5293b96b160b904c0e53cbce93679c3aa090f846
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5293b96b160b904c0e53cbce93679c3aa090f846

Author: Adam Jackson <a...@redhat.com>
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 <kenn...@whitecape.org>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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(>base, "GLX_ARB_create_context");
   __glXEnableDirectExtension(>base, "GLX_ARB_create_context_profile");
+  __glXEnableDirectExtension(>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(>base, "GLX_ARB_create_context");
__glXEnableDirectExtension(>base, "GLX_ARB_create_context_profile");
+   __glXEnableDirectExtension(>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

Mesa (master): glx: Relax validate_renderType_against_config for EXT_no_config_context

2017-11-09 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 74b701d84cd33b83c96525e70487091a05bb6ad6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=74b701d84cd33b83c96525e70487091a05bb6ad6

Author: Adam Jackson <a...@redhat.com>
Date:   Tue Nov  7 11:36:51 2017 -0500

glx: Relax validate_renderType_against_config for EXT_no_config_context

Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2017-11-09 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 3f66d54a2a59b6f295671ea03aa9f83ce1aee34a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3f66d54a2a59b6f295671ea03aa9f83ce1aee34a

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Eric Anholt <e...@anholt.net>

---

 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(>base, >base, >base))
+   if (!glx_context_init(>base, >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(>base, >base, >base))
+   if (!glx_context_init(>base, >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(>base, >base, >base)) {
+   if (!glx_context_init(>base, >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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: b89067c84faed94b2b31cdebf2cc7ecfc41952f2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b89067c84faed94b2b31cdebf2cc7ecfc41952f2

Author: Neil Roberts <n...@linux.intel.com>
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 <a...@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Neil Roberts <n...@linux.intel.com>

---

 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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 8c0729fd99c8548ceaf40e273b809ce0a69d8a44
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c0729fd99c8548ceaf40e273b809ce0a69d8a44

Author: Neil Roberts <n...@linux.intel.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
Signed-off-by: Neil Roberts <n...@linux.intel.com>

---

 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 = >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 = >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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: c0be3aae6cfe1e8a51ed21e6fa10c5a51a216c36
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0be3aae6cfe1e8a51ed21e6fa10c5a51a216c36

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Sep 22 03:47:55 2016 -0400

egl: Implement EGL_KHR_context_flush_control

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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 @@ stru

Mesa (master): glx: Implement GLX_ARB_context_flush_control

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ba7679f48d6414c16655cb41689f2214630f04e5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba7679f48d6414c16655cb41689f2214630f04e5

Author: Neil Roberts <n...@linux.intel.com>
Date:   Wed Oct  1 20:00:48 2014 +0100

glx: Implement GLX_ARB_context_flush_control

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Neil Roberts <n...@linux.intel.com>

---

 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,
  _ver, _ver, , ,
- , , error))
+ , , , 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(>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,
  _ver, _ver,
  _type, , ,
- , error))
+ , , 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(>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)
 {
unsigned i;
bool got_profile = false;
@@ -485,6 +

Mesa (master): egl/dri2: Factor out context attribute initialization

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 9ef7158a0985d789958eb43cf08476d50af00f2a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ef7158a0985d789958eb43cf08476d50af00f2a

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Sep 22 03:38:01 2016 -0400

egl/dri2: Factor out context attribute initialization

Signed-off-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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,
-_attribs))
- goto cleanup;
+   if (!dri2_fill_context_attribs(dri2_ctx, dri2_dpy, ctx_attribs,
+  _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,
-_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,
-_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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: d547e18184978affd95a72dc524ca648efbe9812
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d547e18184978affd95a72dc524ca648efbe9812

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>

---

 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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 6ce9006d76c050663af0be61cc88c3215d6f8cea
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ce9006d76c050663af0be61cc88c3215d6f8cea

Author: Neil Roberts <n...@linux.intel.com>
Date:   Wed Oct  1 20:00:50 2014 +0100

i965: Enable flush control

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
Signed-off-by: Neil Roberts <n...@linux.intel.com>

---

 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[] = {
 ,
 ,
 ,
+,
 NULL
 };
 
@@ -1441,6 +1442,7 @@ static const __DRIextension 
*intelRobustScreenExtensions[] = {
 ,
 ,
 ,
+,
 ,
 ,
 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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5cc06bec1993d856370545fb3f7f363757ddae8b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5cc06bec1993d856370545fb3f7f363757ddae8b

Author: Adam Jackson <a...@redhat.com>
Date:   Wed Feb  4 13:05:36 2015 -0500

gallium: Wire up flush control

Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 791d06b23bba7d8a785a89b86af6ccf03e1271ba
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=791d06b23bba7d8a785a89b86af6ccf03e1271ba

Author: Adam Jackson <a...@redhat.com>
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 <marek.ol...@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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[] = {
,
,
,
+   ,
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

2017-11-06 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 6d87500fe12e77ad13db057430964b864cacb055
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d87500fe12e77ad13db057430964b864cacb055

Author: Neil Roberts <n...@linux.intel.com>
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 <a...@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Neil Roberts <n...@linux.intel.com>

---

 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 

Mesa (master): egl: Simplify the "driver" interface

2017-10-05 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: b174a1ae720cb404738cd57c431f5769d677957d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b174a1ae720cb404738cd57c431f5769d677957d

Author: Adam Jackson <a...@redhat.com>
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 <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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);
-   

Mesa (master): glx: Be more tolerant in glXImportContext (v2)

2017-09-27 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 08521629503356a5cfe8e673b32ece7cb4aefff2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=08521629503356a5cfe8e673b32ece7cb4aefff2

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Eric Anholt <e...@anholt.net>

---

 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

2017-09-22 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 52ed3bca91ff13217378196d6800ca7113641a63
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=52ed3bca91ff13217378196d6800ca7113641a63

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>

---

 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_mak

Mesa (master): egl/drm: Don't "fall back" to /dev/dri/ card0 if the first open fails

2017-08-25 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: cd8ab40cd4a047ec64f59ff078b6558b1dab44a5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cd8ab40cd4a047ec64f59ff078b6558b1dab44a5

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>

---

 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

2017-08-25 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 2bae451bd3fe93c47aa231ab35ae18ae86b7df5a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2bae451bd3fe93c47aa231ab35ae18ae86b7df5a

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu>

---

 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_p

Mesa (master): mesa: Implement GL_ARB_texture_filter_anisotropic

2017-08-25 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 00caf2ab088dd2e08ce410850dee61ba2b9aa63a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=00caf2ab088dd2e08ce410850dee61ba2b9aa63a

Author: Adam Jackson <a...@redhat.com>
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 <imir...@alum.mit.edu>
Signed-off-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>

---

 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_separa

Mesa (master): include: Sync Khronos headers for OpenGL 4.6

2017-08-24 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5d2205fafb5d244af658de5e3c38c6cc805ae345
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5d2205fafb5d244af658de5e3c38c6cc805ae345

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Acked-by: Ilia Mirkin <imir...@alum.mit.edu>

---

 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 (GLenu

Mesa (master): Revert "include: Sync Khronos headers for OpenGL 4.6"

2017-08-24 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 9e454408335d7b4b465ea17590f06426dffe0211
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e454408335d7b4b465ea17590f06426dffe0211

Author: Adam Jackson <a...@redhat.com>
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);
+GLA

Mesa (master): include: Sync Khronos headers for OpenGL 4.6

2017-08-24 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ef1e87e6cdbd80e74a8bc6d48b0b174a0812fe69
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef1e87e6cdbd80e74a8bc6d48b0b174a0812fe69

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Acked-by: Ilia Mirkin <imir...@alum.mit.edu>

---

 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 

Mesa (master): docs: Update feature list for GL 4.6

2017-07-31 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: d4ca66a15972ceb50ec6cc8630e52e59e407f215
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d4ca66a15972ceb50ec6cc8630e52e59e407f215

Author: Adam Jackson <a...@redhat.com>
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 <samuel.pitoi...@gmail.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2017-05-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 0160fb1d50d314b9de496d49475a33ddff0f5702
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0160fb1d50d314b9de496d49475a33ddff0f5702

Author: Chad Versace <chadvers...@chromium.org>
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 <a...@redhat.com>
Reviewed-by: Eric Engestrom <e...@engestrom.ch>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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

2017-05-04 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: f258815c7d4187fd83f6944943e78206a6cdc4cb
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f258815c7d4187fd83f6944943e78206a6cdc4cb

Author: Adam Jackson <a...@redhat.com>
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: <mesa-sta...@lists.freedesktop.org>
Reviewed-by: Eric Anholt <e...@anholt.net>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2017-05-04 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ddb99127a6f6c6d0284f3395e0b06aed575f0ecd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ddb99127a6f6c6d0284f3395e0b06aed575f0ecd

Author: Adam Jackson <a...@redhat.com>
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 <e...@anholt.net>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2017-03-28 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: f208bdc0d27cf7836420272738b707f2bad9c92a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f208bdc0d27cf7836420272738b707f2bad9c92a

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>

---

 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

2016-11-02 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: afaaf623d4d95b3ac736e72c744f683a2b804e1d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=afaaf623d4d95b3ac736e72c744f683a2b804e1d

Author: Adam Jackson <a...@redhat.com>
Date:   Wed Sep 14 14:02:56 2016 -0400

glx/glvnd: Use bsearch() in FindGLXFunction instead of open-coding it

Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-11-02 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: deb0eb1660f612862c77d225582e102e7ab717ee
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=deb0eb1660f612862c77d225582e102e7ab717ee

Author: Adam Jackson <a...@redhat.com>
Date:   Wed Sep 14 13:56:50 2016 -0400

glx/glvnd: Don't modify the dummy slot in the dispatch table

Cc: "13.0" <mesa-sta...@lists.freedesktop.org>
Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-11-02 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 8bca8d89ef3babbecc4f3160cbbcb93d33b7a6ee
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8bca8d89ef3babbecc4f3160cbbcb93d33b7a6ee

Author: Adam Jackson <a...@redhat.com>
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" <mesa-sta...@lists.freedesktop.org>
Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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 pBindSwapBarr

Mesa (master): reviewers: Throw myself on the GLX grenade

2016-10-19 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 4276b5c16a360c3fc5cf17f4ff569d83925146a2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4276b5c16a360c3fc5cf17f4ff569d83925146a2

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Oct  6 15:37:54 2016 -0400

reviewers: Throw myself on the GLX grenade

Signed-off-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 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 <robcl...@freedesktop.org>
 F: src/gallium/drivers/freedreno/
+
+GLX
+R: Adam Jackson <a...@redhat.com>
+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)

2016-10-05 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 6a5545d3ba60a19a3bce8f62141e0991a595eeaf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a5545d3ba60a19a3bce8f62141e0991a595eeaf

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.vel...@collabora.com>

---

 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(>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;
 
+

Mesa (master): egl: Implement EGL_KHR_debug (v2)

2016-10-05 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ca9f26ac6fcb0afb68101fb3f74fcb3100507c0c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca9f26ac6fcb0afb68101fb3f74fcb3100507c0c

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.vel...@collabora.com>

---

 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;
+

Mesa (master): i965: Enable EGL_KHR_gl_texture_3D_image

2016-09-23 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 8ce2afe776eee8444d7dd00b3e93ab2ed399903d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8ce2afe776eee8444d7dd00b3e93ab2ed399903d

Author: Adam Jackson <a...@redhat.com>
Date:   Wed Sep 21 09:13:36 2016 -0400

i965: Enable EGL_KHR_gl_texture_3D_image

Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-09-23 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5981366b9f75cedf766bc2a9c0df9f16af9606a7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5981366b9f75cedf766bc2a9c0df9f16af9606a7

Author: Adam Jackson <a...@redhat.com>
Date:   Wed Sep 21 09:11:26 2016 -0400

i915: Enable EGL_KHR_gl_texture_3D_image

Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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: Factor out _eglGetSyncAttribCommon

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 1d535c1e83ae45b67a141420298c5d08082e0ed8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d535c1e83ae45b67a141420298c5d08082e0ed8

Author: Kyle Brenneman <kbrenne...@nvidia.com>
Date:   Mon Sep 12 17:46:04 2016 -0400

egl: Factor out _eglGetSyncAttribCommon

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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, );
+   result = _eglGetSyncAttribCommon(disp, s, attribute, );
 
/* 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: Use _eglCreatePixmapSurfaceCommon consistently

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 8cc3d9855f94cd0f2274a1831bc6fa8912ddea9c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8cc3d9855f94cd0f2274a1831bc6fa8912ddea9c

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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 _eglWaitSyncCommon

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5b0b844ac9818672bc3ddcdbbb74cb892b3485f4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b0b844ac9818672bc3ddcdbbb74cb892b3485f4

Author: Kyle Brenneman <kbrenne...@nvidia.com>
Date:   Mon Sep 12 17:44:36 2016 -0400

egl: Factor out _eglWaitSyncCommon

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 9a992038e722b6ea8362db1dfcf2dd5a7391
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a992038e722b6ea8362db1dfcf2dd5a7391

Author: Kyle Brenneman <kbrenne...@nvidia.com>
Date:   Mon Sep 12 17:40:29 2016 -0400

egl: Lock the display in _eglCreateSync's callers

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 7d7ae5e1c3451174a3c8dec2d50763a40069fe5b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d7ae5e1c3451174a3c8dec2d50763a40069fe5b

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 82a2e2cb5024c37a1779594320f23f225a83c79d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=82a2e2cb5024c37a1779594320f23f225a83c79d

Author: Kyle Brenneman <kbrenne...@nvidia.com>
Date:   Mon Sep 12 17:35:22 2016 -0400

egl: Factor out _eglWaitClientCommon

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 7206b3a5565c0835589f85388ae9c121dfd5b5a5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7206b3a5565c0835589f85388ae9c121dfd5b5a5

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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)

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 58338c6b650d85a2484f50c0941cb3e2947fab8e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=58338c6b650d85a2484f50c0941cb3e2947fab8e

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: e2c067d256c86bbeb2e99f8d216da267e76e2d8c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e2c067d256c86bbeb2e99f8d216da267e76e2d8c

Author: Adam Jackson <a...@redhat.com>
Date:   Fri Sep  9 13:45:09 2016 -0400

egl: Tear down images and syncs at eglTerminate

Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: fe6ffa79be7ecf66b7bec73389556a58e8f6432c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe6ffa79be7ecf66b7bec73389556a58e8f6432c

Author: Kyle Brenneman <kbrenne...@nvidia.com>
Date:   Mon Sep 12 17:12:52 2016 -0400

egl: Fix typo

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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)

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 6e50f12b043436d066c8e9f24984e1ddc32d8ec4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e50f12b043436d066c8e9f24984e1ddc32d8ec4

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <emil.veli...@collabora.com>
Reviewed-by: Adam Jackson <a...@redhat.com>

---

 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_BUFF

Mesa (master): egl: Factor out _eglGetPlatformDisplayCommon

2016-09-14 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 017946b7247ea7c36219b44dfc118ccad4da7d1d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=017946b7247ea7c36219b44dfc118ccad4da7d1d

Author: Kyle Brenneman <kbrenne...@nvidia.com>
Date:   Mon Sep 12 16:42:56 2016 -0400

egl: Factor out _eglGetPlatformDisplayCommon

Reviewed-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 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

2016-09-12 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: d9f5b1915b397d4baaf4c9c23a93fda49f3db4ca
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d9f5b1915b397d4baaf4c9c23a93fda49f3db4ca

Author: Adam Jackson <a...@redhat.com>
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 <k...@bitplanet.net>
Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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(, "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(, "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

2016-09-12 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: cc45a5c30872e2070aae6a79dbe0e2bcf7404917
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cc45a5c30872e2070aae6a79dbe0e2bcf7404917

Author: Adam Jackson <a...@redhat.com>
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 <k...@bitplanet.net>
Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-09-12 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 0cb1428fbbbcbd17c975b6505cab6f685c0129aa
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0cb1428fbbbcbd17c975b6505cab6f685c0129aa

Author: Adam Jackson <a...@redhat.com>
Date:   Fri Sep  9 12:25:35 2016 -0400

docs: Note MESA_configless_context as superseded

Reviewed-by: Kristian Høgsberg <k...@bitplanet.net>
Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-09-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: dbda375d6fe29a1a0822fe5123c55c33ecfa7894
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dbda375d6fe29a1a0822fe5123c55c33ecfa7894

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>

---

 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

2016-09-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: a279760536be03702a3eb133c51079907a2ccc9c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a279760536be03702a3eb133c51079907a2ccc9c

Author: Adam Jackson <a...@redhat.com>
Date:   Wed Sep  7 17:41:56 2016 -0400

egl: Document why EGL_OPENGL{, _ES}_API are mostly identical

Signed-off-by: Adam Jackson <a...@redhat.com>
Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com>

---

 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)

2016-09-07 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 6e066f76ee22909b0653ff8b89429de819e60f14
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e066f76ee22909b0653ff8b89429de819e60f14

Author: Kyle Brenneman <kbrenne...@nvidia.com>
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 <a...@redhat.com>

---

 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(>Mutex);
-drv = disp->Driver;
-(void) drv->API.MakeCurrent(drv, disp, NULL, NULL, NULL);
-mtx_unlock(>Mutex);
- }
+ mtx_lock(>Mutex);
+ drv = disp->Driver;
+ (void) drv->API.MakeCurrent(drv, disp, NULL, NULL, NULL);
+ mtx_unlock(>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, "eglMakeCurr

Mesa (master): glapi/glx: Add overflow checks to the client-side indirect code

2016-06-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: a1c5cd426c0381124f7c320d5a7b760a9a36af75
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1c5cd426c0381124f7c320d5a7b760a9a36af75

Author: Adam Jackson <a...@redhat.com>
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 <a...@redhat.com>
Reviewed-by: Matt Turner <matts...@gmail.com>

---

 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

2016-05-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 7bc5c7f58685e67985b3da1722391432fdd9ba31
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7bc5c7f58685e67985b3da1722391432fdd9ba31

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Mar 24 13:57:58 2016 -0400

glapi: Fix whitespace droppings when printing the license header

Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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)

2016-05-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ea08a5bcf6a670d2d6c67328414826a308d86e0d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea08a5bcf6a670d2d6c67328414826a308d86e0d

Author: Adam Jackson <a...@redhat.com>
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 <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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 
swap, int reqlen ) \\'
+print '{ return __glX ## to ## ReqSize( pc, swap, reqlen ); }'
 print '#endif'
 print ''
 print ''
@@ -547,7 +545,7 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
 
 def common_func_print_just_header(self, f):
 print 'int'
-print '__glX%sReqSize( con

Mesa (master): glapi: Add the safe_{add, mul, pad} functions from xserver

2016-05-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 88cfc9ddaab5577260293fcbd4f7413fbd4aba21
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=88cfc9ddaab5577260293fcbd4f7413fbd4aba21

Author: Adam Jackson <a...@redhat.com>
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 <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-05-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: f4983b194d8a13468d2b381c1b572144d15329d2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4983b194d8a13468d2b381c1b572144d15329d2

Author: Adam Jackson <a...@redhat.com>
Date:   Wed May  4 14:14:56 2016 -0400

glapi: Define PURE for Sun Studio as well

Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-05-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 2ad9d6237a510ec2acd0d416c34fe6e231460182
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ad9d6237a510ec2acd0d416c34fe6e231460182

Author: Adam Jackson <a...@redhat.com>
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 <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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)

2016-05-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: f1dd8dd6b6c0e8cb16a41231286735d5efa33c67
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1dd8dd6b6c0e8cb16a41231286735d5efa33c67

Author: Adam Jackson <a...@redhat.com>
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 <ian.d.roman...@intel.com>
Reviewed-by: Eric Anholt <e...@anholt.net>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-04-20 Thread Adam Jackson
Module: Demos
Branch: master
Commit: 9dea5043431ca8b9680c74198bd5a05aa5b17c2b
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=9dea5043431ca8b9680c74198bd5a05aa5b17c2b

Author: Adam Jackson <a...@redhat.com>
Date:   Wed Apr 20 16:53:30 2016 -0400

eglinfo: Restore eglTerminate

Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-04-20 Thread Adam Jackson
Module: Demos
Branch: master
Commit: f091f8a2c98a87f9681e802c72ba692b927eb9e7
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=f091f8a2c98a87f9681e802c72ba692b927eb9e7

Author: Adam Jackson <a...@redhat.com>
Date:   Tue Apr 19 16:15:10 2016 -0400

eglinfo: Factor out a "probe one display" function

Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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, , )) {
   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

2016-04-20 Thread Adam Jackson
Module: Demos
Branch: master
Commit: 4997dc713a5da95d6a70f626f1f7b27eb858d16a
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=4997dc713a5da95d6a70f626f1f7b27eb858d16a

Author: Adam Jackson <a...@redhat.com>
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 <alexander.deuc...@amd.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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, , )) {
   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

2016-04-20 Thread Adam Jackson
Module: Demos
Branch: master
Commit: 7a0f0310a9b5129465a2e8ab6f2c4ea1a8e98f40
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=7a0f0310a9b5129465a2e8ab6f2c4ea1a8e98f40

Author: Adam Jackson <a...@redhat.com>
Date:   Tue Apr 19 16:40:03 2016 -0400

eglinfo: Add EXT_platform_* awareness

Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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, , )) {
-  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

2016-04-20 Thread Adam Jackson
Module: Demos
Branch: master
Commit: 7bb5775189fbcdf0ddb62f72f00a69c635270a08
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=7bb5775189fbcdf0ddb62f72f00a69c635270a08

Author: Adam Jackson <a...@redhat.com>
Date:   Tue Apr 19 15:30:41 2016 -0400

eglinfo: Note when an EGLConfig is streams-compatible

Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-03-29 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ea0f62e45eab39a8957f933325a1e16ace5c9e8c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea0f62e45eab39a8957f933325a1e16ace5c9e8c

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Mar 24 13:57:58 2016 -0400

glapi/glx: Sync some additional error checking from xserver

Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-03-29 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5e1aec6db073416ae6ddf0eeaaea4964b489af8e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e1aec6db073416ae6ddf0eeaaea4964b489af8e

Author: Adam Jackson <a...@redhat.com>
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 <ian.d.roman...@intel.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-03-28 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: c0a9cbea4d7a6cede911cf82b57d7612f48d48a2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0a9cbea4d7a6cede911cf82b57d7612f48d48a2

Author: Adam Jackson <a...@redhat.com>
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 <baker.dyla...@gmail.com>
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 <baker.dyla...@gmail.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-03-28 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 2b8492d63ea14f36da00803620e89483743e77e7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b8492d63ea14f36da00803620e89483743e77e7

Author: Adam Jackson <a...@redhat.com>
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 <ian.d.roman...@intel.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-03-28 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: c2f0bc2537b8e3d8a8dc4b8fb2e7c54b89cab60d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2f0bc2537b8e3d8a8dc4b8fb2e7c54b89cab60d

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Mar 24 13:57:57 2016 -0400

glapi/glx: Thunk non-ABI calls through GetProcAddress

Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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

2016-03-28 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: ce3f0b23d1ee3e854780d01effb90a7c39134ffd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce3f0b23d1ee3e854780d01effb90a7c39134ffd

Author: Adam Jackson <a...@redhat.com>
Date:   Thu Mar 24 13:57:57 2016 -0400

glapi/glx: Emit direct GL calls instead of dispatch lookup

Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Signed-off-by: Adam Jackson <a...@redhat.com>

---

 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_DISPATCH(), 
(GL_UNPACK_SKIP_PIXELS,  (GLint) %shdr->skipPixels%s) );' % (pre, post)
-print 'CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT, 
   (GLint) %shdr->alignment%s) );' % (pre, post)
+print 'glPixelStorei(GL_UNPACK_SK

Mesa (master): glx: Fix __glXWireToEvent for BufferSwapComplete

2015-08-18 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 8f7ebcb6fad53ea6d2f80fc5b7a046db07690032
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f7ebcb6fad53ea6d2f80fc5b7a046db07690032

Author: Adam Jackson a...@redhat.com
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 a...@redhat.com
Reviewed-by: Eric Anholt e...@anholt.net

---

 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 image size computation for EXT_texture_integer (v2 )

2015-07-31 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: b15aba940a3b6fc7c9bebc692968e7e9b72b9f29
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b15aba940a3b6fc7c9bebc692968e7e9b72b9f29

Author: Adam Jackson a...@redhat.com
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 e...@anholt.net
Signed-off-by: Adam Jackson a...@redhat.com

---

 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): glx: Fix missing bit decl for EXT_texture_integer

2015-07-31 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: bafdafa7b2e6649791188b5acf235ba166ceae50
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bafdafa7b2e6649791188b5acf235ba166ceae50

Author: Adam Jackson a...@redhat.com
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 a...@redhat.com
Date:   Tue Jul 21 11:43:42 2015 -0400

glx: Fix image size computation for EXT_texture_integer (v2)

Signed-off-by: Adam Jackson a...@redhat.com

---

 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): r600/sb: Fix an / mistake

2015-07-21 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5b4a7ec8f1d2eee12895541bb5c7d15382370884
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b4a7ec8f1d2eee12895541bb5c7d15382370884

Author: Adam Jackson a...@redhat.com
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 alexander.deuc...@amd.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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

2015-05-11 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 7a58262e58d8edac3308777def0950032628edee
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a58262e58d8edac3308777def0950032628edee

Author: Adam Jackson a...@redhat.com
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 marek.ol...@amd.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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/eglplatform.h
 
-/* 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

Mesa (master): i915: For the love of all that is holy, stop saying IGD

2015-02-18 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: b290330e3b78405424a907cf6e82cef531c71c50
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b290330e3b78405424a907cf6e82cef531c71c50

Author: Adam Jackson a...@redhat.com
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 matts...@gmail.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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

2015-01-29 Thread Adam Jackson
Module: Demos
Branch: master
Commit: 999b6950c644266bb871e79438751bdba2fa2a08
URL:
http://cgit.freedesktop.org/mesa/demos/commit/?id=999b6950c644266bb871e79438751bdba2fa2a08

Author: Adam Jackson a...@redhat.com
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 bri...@vmware.com
Reviewed-by: Emil Velikov emil.l.veli...@gmail.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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

2014-05-29 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: e3cc0d90e14e62a0a787b6c07a6df0f5c84039be
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e3cc0d90e14e62a0a787b6c07a6df0f5c84039be

Author: Jerome Glisse jgli...@redhat.com
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 mesa-sta...@lists.freedesktop.org
Reviewed-by: Eric Anholt e...@anholt.net
Reviewed-by: Ian Romanick ian.d.roman...@intel.com
Signed-off-by: Jérôme Glisse jgli...@redhat.com

---

 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

2014-05-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 74388dd24bc7fdb9e62ec18096163f5426e03fbf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=74388dd24bc7fdb9e62ec18096163f5426e03fbf

Author: Adam Jackson a...@redhat.com
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 marek.ol...@amd.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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)
 
/* Check flush flags. */
if (sctx-b.flags)
-   sctx-atoms.cache_flush-dirty = true;
+   sctx-atoms.s.cache_flush-dirty = true;
 
si_need_cs_space(sctx, 0, TRUE

Mesa (master): glx: Fix return value from indirect_bind_context

2013-10-25 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 1090eb57552aed1f4e36ac97b5859ff4b2cc80a5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1090eb57552aed1f4e36ac97b5859ff4b2cc80a5

Author: Adam Jackson a...@redhat.com
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 ian.d.roman...@intel.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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: Hide xGLXMakeCurrentReply inside SendMakeCurrentRequest

2013-10-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 68412d5006586f8b5814d85f76985b9d632f36df
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=68412d5006586f8b5814d85f76985b9d632f36df

Author: Adam Jackson a...@redhat.com
Date:   Fri Oct  4 09:25:51 2013 -0400

glx: Hide xGLXMakeCurrentReply inside SendMakeCurrentRequest

Reviewed-by: Brian Paul bri...@vmware.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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): glx: Generate fewer errors in MakeContextCurrent

2013-10-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: e166a58c43e92f10f03b32747bff44708096f898
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e166a58c43e92f10f03b32747bff44708096f898

Author: Adam Jackson a...@redhat.com
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 mesa-sta...@lists.freedesktop.org
Reviewed-by: Brian Paul bri...@vmware.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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: Propagate failures from SendMakeCurrentRequest where possible

2013-10-08 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: d101204c23ba2f593881ede357309f3924cd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d101204c23ba2f593881ede357309f3924cd

Author: Adam Jackson a...@redhat.com
Date:   Fri Oct  4 09:25:51 2013 -0400

glx: Propagate failures from SendMakeCurrentRequest where possible

Reviewed-by: Brian Paul bri...@vmware.com
Signed-off-by: Adam Jackson a...@redhat.com

---

 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): st/dri/sw: Fix pitch calculation in drisw_update_tex_buffer

2013-06-24 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 5a0556f061d9db00dd7637433d393beead3b3d85
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a0556f061d9db00dd7637433d393beead3b3d85

Author: Richard Sandiford rsand...@linux.vnet.ibm.com
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 marc...@chromium.org
Signed-off-by: Richard Sandiford rsand...@linux.vnet.ibm.com

---

 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): gallium: Fix llvmpipe on big-endian machines

2013-06-24 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 2151d893fbd4a4be092098170e2fbca8c35797a5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2151d893fbd4a4be092098170e2fbca8c35797a5

Author: Adam Jackson a...@redhat.com
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 r.sandif...@uk.ibm.com
Date:   Tue Jun 18 12:25:07 2013 -0400

gallivm: Fix lp_build_rgba8_to_fi32_soa for big endian

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 0d65131649a8aa140e2db228ba779d685c4333e3
Author: Richard Sandiford r.sandif...@uk.ibm.com
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 a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 9740bda9b7dc894b629ed38be9b51059ce90818f
Author: Richard Sandiford r.sandif...@uk.ibm.com
Date:   Tue Jun 18 12:25:07 2013 -0400

llvmpipe: Fix convert_to_blend_type on big-endian

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit ae037c2de0f029e4e99371c0de25560484f0d8df
Author: Richard Sandiford r.sandif...@uk.ibm.com
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 a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 5b05ac0c89ae092ea8ba5bba9f739708d7396b5c
Author: Richard Sandiford r.sandif...@uk.ibm.com
Date:   Tue Jun 18 12:25:06 2013 -0400

graw-xlib: Convert to packed formats

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 51396e7d098cb6ff794391cf11afe4dbf86dbea0
Author: Richard Sandiford r.sandif...@uk.ibm.com
Date:   Tue Jun 18 12:25:06 2013 -0400

format: Convert to packed formats

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 417b60bc66eb450e68a92ab0e47f76e292b385e6
Author: Adam Jackson a...@redhat.com
Date:   Tue Jun 18 12:25:06 2013 -0400

st/dri: Convert to packed formats

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 0934b2e022a5e0847d312c40734e2b44cac52fd8
Author: Richard Sandiford r.sandif...@uk.ibm.com
Date:   Tue Jun 18 12:25:06 2013 -0400

st/xlib: Convert to packed formats

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit a307ea3c3716a706963acce7966b5e405ba11db9
Author: Richard Sandiford r.sandif...@uk.ibm.com
Date:   Tue Jun 18 12:25:06 2013 -0400

gbm: Convert to packed formats

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 53eebdd253e1960a645ea278f31d7ef6a6cf4aeb
Author: Richard Sandiford r.sandif...@uk.ibm.com
Date:   Tue Jun 18 12:25:06 2013 -0400

tests: Convert to packed formats

Reviewed-by: Adam Jackson a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 2f77fe3ee524945eacd546efcac34f7799fb3124
Author: Adam Jackson a...@redhat.com
Date:   Tue Jun 18 13:07:37 2013 -0400

gallium: Document packed formats

Signed-off-by: Adam Jackson a...@redhat.com

commit 1f1017159ce951f922210a430de9229f91f62714
Author: Richard Sandiford r.sandif...@uk.ibm.com
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 a...@redhat.com
Signed-off-by: Richard Sandiford r.sandif...@uk.ibm.com

commit 6cc7ab1ee66ed668da78c1d951dfd7782b4e786a
Author: Adam Jackson a...@redhat.com
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 a...@redhat.com

commit df4d269e7fb62051a3c029b84147465001e5776e
Author: Adam Jackson a...@redhat.com
Date:   Tue Jun 18 12:25:06 2013 -0400

gallivm: Remove all notion of byte-swapping

Signed-off-by: Adam Jackson a...@redhat.com

Signed-off-by: Adam Jackson a...@redhat.com

---

 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

Mesa (master): st/xlib Fix XIMage bytes-per-pixel calculation

2013-06-17 Thread Adam Jackson
Module: Mesa
Branch: master
Commit: 876fefe2ff8901ae4b908cff89ac5dd4324f4fe5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=876fefe2ff8901ae4b908cff89ac5dd4324f4fe5

Author: Richard Sandiford r.sandif...@uk.ibm.com
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 bri...@vmware.com
Signed-off-by: Richard Sandiford rsand...@linux.vnet.ibm.com

---

 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


  1   2   >