summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/glx/x11/glxcmds.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c
index 16f7e96150..c34bbc5d21 100644
--- a/src/glx/x11/glxcmds.c
+++ b/src/glx/x11/glxcmds.c
@@ -2643,17 +2643,27 @@ PUBLIC Bool glXSet3DfxModeMESA( int mode )
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 @@ PUBLIC Bool glXBindTexImageEXT(Display *dpy,
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 @@ PUBLIC Bool glXBindTexImageEXT(Display *dpy,
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();