--- ./include/GL/glx.h.attrib 2006-03-31 19:31:46.000000000 +0200 +++ ./include/GL/glx.h 2006-08-10 17:35:24.000000000 +0200 @@ -425,7 +425,7 @@ /* XXX need enums/tokens! */ -extern Bool glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer); +extern Bool glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); extern Bool glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer); #endif /* GLX_EXT_texture_from_pixmap */ --- ./src/glx/x11/glxcmds.c.attrib 2006-08-10 17:36:33.000000000 +0200 +++ ./src/glx/x11/glxcmds.c 2006-08-10 17:36:41.000000000 +0200 @@ -2643,17 +2643,27 @@ PUBLIC Bool glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, - int buffer) + int buffer, + const int *attrib_list) { xGLXVendorPrivateReq *req; GLXContext gc = __glXGetCurrentContext(); CARD32 *drawable_ptr; INT32 *buffer_ptr; + CARD32 *num_attrib_ptr; + CARD32 *attrib_ptr; CARD8 opcode; + unsigned int i; if (gc == NULL) return False; + i = 0; + if (attrib_list) { + while (attrib_list[i * 2] != None) + i++; + } + #ifdef GLX_DIRECT_RENDERING if (gc->isDirect) return False; @@ -2664,7 +2674,7 @@ return False; LockDisplay(dpy); - GetReqExtra(GLXVendorPrivate, sizeof(CARD32)+sizeof(INT32),req); + GetReqExtra(GLXVendorPrivate, 12 + 8 * i,req); req->reqType = opcode; req->glxCode = X_GLXVendorPrivate; req->vendorCode = X_GLXvop_BindTexImageEXT; @@ -2672,9 +2682,22 @@ drawable_ptr = (CARD32 *) (req + 1); buffer_ptr = (INT32 *) (drawable_ptr + 1); + num_attrib_ptr = (CARD32 *) (buffer_ptr + 1); + attrib_ptr = (CARD32 *) (num_attrib_ptr + 1); *drawable_ptr = drawable; *buffer_ptr = buffer; + *num_attrib_ptr = (CARD32) i; + + i = 0; + if (attrib_list) { + while (attrib_list[i * 2] != None) + { + *attrib_ptr++ = (CARD32) attrib_list[i * 2 + 0]; + *attrib_ptr++ = (CARD32) attrib_list[i * 2 + 1]; + i++; + } + } UnlockDisplay(dpy); SyncHandle();