summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/MESA_swap_control.spec7
-rw-r--r--progs/xdemos/glxgears_fbconfig.c78
-rw-r--r--src/glx/glxcmds.c280
3 files changed, 199 insertions, 166 deletions
diff --git a/docs/MESA_swap_control.spec b/docs/MESA_swap_control.spec
index ecc674649e2..856978b535b 100644
--- a/docs/MESA_swap_control.spec
+++ b/docs/MESA_swap_control.spec
@@ -43,7 +43,7 @@ Issues
New Procedures and Functions
- int glXSwapIntervalMESA(int interval)
+ int glXSwapIntervalMESA(unsigned int interval)
int glXGetSwapIntervalMESA(void)
New Tokens
@@ -103,11 +103,8 @@ Additions to the GLX 1.3 Specification
Errors
- glXSwapIntervalMESA returns GLX_BAD_VALUE if parameter <interval> is
- less than zero.
-
glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current
- GLXContext.
+ GLXContext or if the current context is not a direct rendering context.
GLX Protocol
diff --git a/progs/xdemos/glxgears_fbconfig.c b/progs/xdemos/glxgears_fbconfig.c
index 2dac00b75d1..36bf73138c9 100644
--- a/progs/xdemos/glxgears_fbconfig.c
+++ b/progs/xdemos/glxgears_fbconfig.c
@@ -46,13 +46,11 @@
#include <assert.h>
#include "pbutil.h"
-/* I had to use the SGIX versions of these because for some reason glxext.h
- * doesn't define the core versions if GLX_VERSION_1_3 is defined, and glx.h
- * doesn't define them at all. One or both header files is clearly broken.
- */
-static PFNGLXCHOOSEFBCONFIGSGIXPROC choose_fbconfig = NULL;
-static PFNGLXGETVISUALFROMFBCONFIGSGIXPROC get_visual_from_fbconfig = NULL;
-static PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC create_new_context = NULL;
+static PFNGLXCHOOSEFBCONFIGPROC choose_fbconfig = NULL;
+static PFNGLXGETVISUALFROMFBCONFIGPROC get_visual_from_fbconfig = NULL;
+static PFNGLXCREATENEWCONTEXTPROC create_new_context = NULL;
+static PFNGLXCREATEWINDOWPROC create_window = NULL;
+static PFNGLXDESTROYWINDOWPROC destroy_window = NULL;
#define BENCHMARK
@@ -324,6 +322,26 @@ init(void)
}
+static GLXWindow
+dummy_create_window(Display *dpy, GLXFBConfig config, Window win,
+ const int *attrib_list)
+{
+ (void) dpy;
+ (void) config;
+ (void) attrib_list;
+
+ return (GLXWindow) win;
+}
+
+
+static void
+dummy_destroy_window(Display *dpy, GLXWindow win)
+{
+ (void) dpy;
+ (void) win;
+}
+
+
/**
* Initialize fbconfig related function pointers.
*/
@@ -359,20 +377,26 @@ init_fbconfig_functions(Display *dpy, int scrnum)
ext_name, (ext_version_supported) ? "" : "not " );
if ( glx_1_3_supported ) {
- choose_fbconfig = (PFNGLXCHOOSEFBCONFIGSGIXPROC) glXGetProcAddressARB(
- (GLubyte *) "glXChooseFBConfig");
- get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) glXGetProcAddressARB(
- (GLubyte *) "glXGetVisualFromFBConfig");
- create_new_context = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) glXGetProcAddressARB(
- (GLubyte *) "glXCreateNewContext");
+ choose_fbconfig = (PFNGLXCHOOSEFBCONFIGPROC)
+ glXGetProcAddressARB((GLubyte *) "glXChooseFBConfig");
+ get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGPROC)
+ glXGetProcAddressARB((GLubyte *) "glXGetVisualFromFBConfig");
+ create_new_context = (PFNGLXCREATENEWCONTEXTPROC)
+ glXGetProcAddressARB((GLubyte *) "glXCreateNewContext");
+ create_window = (PFNGLXCREATEWINDOWPROC)
+ glXGetProcAddressARB((GLubyte *) "glXCreateWindow");
+ destroy_window = (PFNGLXDESTROYWINDOWPROC)
+ glXGetProcAddressARB((GLubyte *) "glXDestroyWindow");
}
else if ( ext_version_supported ) {
- choose_fbconfig = (PFNGLXCHOOSEFBCONFIGSGIXPROC) glXGetProcAddressARB(
- (GLubyte *) "glXChooseFBConfigSGIX");
- get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) glXGetProcAddressARB(
- (GLubyte *) "glXGetVisualFromFBConfigSGIX");
- create_new_context = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) glXGetProcAddressARB(
- (GLubyte *) "glXCreateContextWithConfigSGIX");
+ choose_fbconfig = (PFNGLXCHOOSEFBCONFIGPROC)
+ glXGetProcAddressARB((GLubyte *) "glXChooseFBConfigSGIX");
+ get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGPROC)
+ glXGetProcAddressARB((GLubyte *) "glXGetVisualFromFBConfigSGIX");
+ create_new_context = (PFNGLXCREATENEWCONTEXTPROC)
+ glXGetProcAddressARB((GLubyte *) "glXCreateContextWithConfigSGIX");
+ create_window = dummy_create_window;
+ destroy_window = dummy_destroy_window;
}
else {
printf( "This demo requires either GLX 1.3 or %s be supported.\n",
@@ -404,7 +428,7 @@ init_fbconfig_functions(Display *dpy, int scrnum)
static void
make_window( Display *dpy, const char *name,
int x, int y, int width, int height,
- Window *winRet, GLXContext *ctxRet)
+ Window *winRet, GLXWindow *glxWinRet, GLXContext *ctxRet)
{
int attrib[] = { GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
GLX_RENDER_TYPE, GLX_RGBA_BIT,
@@ -422,6 +446,7 @@ make_window( Display *dpy, const char *name,
unsigned long mask;
Window root;
Window win;
+ GLXWindow glxWin;
GLXContext ctx;
XVisualInfo *visinfo;
@@ -467,6 +492,8 @@ make_window( Display *dpy, const char *name,
None, (char **)NULL, 0, &sizehints);
}
+ glxWin = (*create_window)(dpy, fbconfig[0], win, NULL);
+
ctx = (*create_new_context)(dpy, fbconfig[0], GLX_RGBA_TYPE, NULL, GL_TRUE);
if (!ctx) {
printf("Error: glXCreateNewContext failed\n");
@@ -475,13 +502,14 @@ make_window( Display *dpy, const char *name,
XFree(fbconfig);
+ *glxWinRet = glxWin;
*winRet = win;
*ctxRet = ctx;
}
static void
-event_loop(Display *dpy, Window win)
+event_loop(Display *dpy, GLXWindow win)
{
while (1) {
while (XPending(dpy) > 0) {
@@ -558,6 +586,7 @@ main(int argc, char *argv[])
{
Display *dpy;
Window win;
+ GLXWindow glxWin;
GLXContext ctx;
const char *dpyName = NULL;
GLboolean printInfo = GL_FALSE;
@@ -579,9 +608,9 @@ main(int argc, char *argv[])
return -1;
}
- make_window(dpy, "glxgears", 0, 0, 300, 300, &win, &ctx);
+ make_window(dpy, "glxgears", 0, 0, 300, 300, &win, &glxWin, &ctx);
XMapWindow(dpy, win);
- glXMakeCurrent(dpy, win, ctx);
+ glXMakeCurrent(dpy, glxWin, ctx);
if (printInfo) {
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
@@ -592,9 +621,10 @@ main(int argc, char *argv[])
init();
- event_loop(dpy, win);
+ event_loop(dpy, glxWin);
glXDestroyContext(dpy, ctx);
+ destroy_window(dpy, glxWin);
XDestroyWindow(dpy, win);
XCloseDisplay(dpy);
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index da0dcf10df8..704e9a0b9d7 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -42,6 +42,9 @@
#include <sys/time.h>
#include <X11/extensions/xf86vmode.h>
#include "xf86dri.h"
+#define GC_IS_DIRECT(gc) ((gc)->driContext != NULL)
+#else
+#define GC_IS_DIRECT(gc) (0)
#endif
#if defined(USE_XCB)
@@ -62,6 +65,8 @@ static Bool windowExistsFlag;
static int
windowExistsErrorHandler(Display * dpy, XErrorEvent * xerr)
{
+ (void) dpy;
+
if (xerr->error_code == BadWindow) {
windowExistsFlag = GL_FALSE;
}
@@ -353,137 +358,105 @@ AllocateGLXContext(Display * dpy)
*/
static GLXContext
-CreateContext(Display * dpy, XVisualInfo * vis,
+CreateContext(Display * dpy, int generic_id,
const __GLcontextModes * const fbconfig,
GLXContext shareList,
- Bool allowDirect, GLXContextID contextID,
- Bool use_glx_1_3, int renderType)
+ Bool allowDirect,
+ unsigned code, int renderType, int screen)
{
GLXContext gc;
#ifdef GLX_DIRECT_RENDERING
- int screen = (fbconfig == NULL) ? vis->screen : fbconfig->screen;
__GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
#endif
if (dpy == NULL)
return NULL;
+ if (generic_id == None)
+ return NULL;
+
gc = AllocateGLXContext(dpy);
if (!gc)
return NULL;
- if (None == contextID) {
- if ((vis == NULL) && (fbconfig == NULL))
- return NULL;
-
#ifdef GLX_DIRECT_RENDERING
- if (allowDirect && psc->driScreen) {
- const __GLcontextModes *mode;
-
- if (fbconfig == NULL) {
- mode = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
- if (mode == NULL) {
- xError error;
-
- error.errorCode = BadValue;
- error.resourceID = vis->visualid;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = gc->majorOpcode;
- error.minorCode = X_GLXCreateContext;
- _XError(dpy, &error);
- return None;
- }
- if (renderType == 0) {
- /* Initialize renderType now */
- renderType = mode->rgbMode ? GLX_RGBA_TYPE : GLX_COLOR_INDEX_TYPE;
- }
- }
- else {
- mode = fbconfig;
- }
-
- gc->driContext = psc->driScreen->createContext(psc, mode, gc,
- shareList,
- renderType);
- if (gc->driContext != NULL) {
- gc->screen = mode->screen;
- gc->psc = psc;
- gc->mode = mode;
- gc->isDirect = GL_TRUE;
- }
+ if (allowDirect && psc->driScreen) {
+ gc->driContext = psc->driScreen->createContext(psc, fbconfig, gc,
+ shareList, renderType);
+ if (gc->driContext != NULL) {
+ gc->screen = screen;
+ gc->psc = psc;
+ gc->mode = fbconfig;
+ gc->isDirect = GL_TRUE;
}
+ }
#endif
- LockDisplay(dpy);
- if (fbconfig == NULL) {
- xGLXCreateContextReq *req;
-
- /* Send the glXCreateContext request */
- GetReq(GLXCreateContext, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXCreateContext;
- req->context = gc->xid = XAllocID(dpy);
- req->visual = vis->visualid;
- req->screen = vis->screen;
- req->shareList = shareList ? shareList->xid : None;
-#ifdef GLX_DIRECT_RENDERING
- req->isDirect = gc->driContext != NULL;
-#else
- req->isDirect = 0;
-#endif
- }
- else if (use_glx_1_3) {
- xGLXCreateNewContextReq *req;
-
- /* Send the glXCreateNewContext request */
- GetReq(GLXCreateNewContext, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXCreateNewContext;
- req->context = gc->xid = XAllocID(dpy);
- req->fbconfig = fbconfig->fbconfigID;
- req->screen = fbconfig->screen;
- req->renderType = renderType;
- req->shareList = shareList ? shareList->xid : None;
-#ifdef GLX_DIRECT_RENDERING
- req->isDirect = gc->driContext != NULL;
-#else
- req->isDirect = 0;
-#endif
- }
- else {
- xGLXVendorPrivateWithReplyReq *vpreq;
- xGLXCreateContextWithConfigSGIXReq *req;
-
- /* Send the glXCreateNewContext request */
- GetReqExtra(GLXVendorPrivateWithReply,
- sz_xGLXCreateContextWithConfigSGIXReq -
- sz_xGLXVendorPrivateWithReplyReq, vpreq);
- req = (xGLXCreateContextWithConfigSGIXReq *) vpreq;
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXVendorPrivateWithReply;
- req->vendorCode = X_GLXvop_CreateContextWithConfigSGIX;
- req->context = gc->xid = XAllocID(dpy);
- req->fbconfig = fbconfig->fbconfigID;
- req->screen = fbconfig->screen;
- req->renderType = renderType;
- req->shareList = shareList ? shareList->xid : None;
-#ifdef GLX_DIRECT_RENDERING
- req->isDirect = gc->driContext != NULL;
-#else
- req->isDirect = 0;
-#endif
- }
+ LockDisplay(dpy);
+ switch (code) {
+ case X_GLXCreateContext: {
+ xGLXCreateContextReq *req;
+
+ /* Send the glXCreateContext request */
+ GetReq(GLXCreateContext, req);
+ req->reqType = gc->majorOpcode;
+ req->glxCode = X_GLXCreateContext;
+ req->context = gc->xid = XAllocID(dpy);
+ req->visual = generic_id;
+ req->screen = screen;
+ req->shareList = shareList ? shareList->xid : None;
+ req->isDirect = GC_IS_DIRECT(gc);
+ break;
+ }
- UnlockDisplay(dpy);
- SyncHandle();
- gc->imported = GL_FALSE;
+ case X_GLXCreateNewContext: {
+ xGLXCreateNewContextReq *req;
+
+ /* Send the glXCreateNewContext request */
+ GetReq(GLXCreateNewContext, req);
+ req->reqType = gc->majorOpcode;
+ req->glxCode = X_GLXCreateNewContext;
+ req->context = gc->xid = XAllocID(dpy);
+ req->fbconfig = generic_id;
+ req->screen = screen;
+ req->renderType = renderType;
+ req->shareList = shareList ? shareList->xid : None;
+ req->isDirect = GC_IS_DIRECT(gc);
+ break;
}
- else {
- gc->xid = contextID;
- gc->imported = GL_TRUE;
+
+ case X_GLXvop_CreateContextWithConfigSGIX: {
+ xGLXVendorPrivateWithReplyReq *vpreq;
+ xGLXCreateContextWithConfigSGIXReq *req;
+
+ /* Send the glXCreateNewContext request */
+ GetReqExtra(GLXVendorPrivateWithReply,
+ sz_xGLXCreateContextWithConfigSGIXReq -
+ sz_xGLXVendorPrivateWithReplyReq, vpreq);
+ req = (xGLXCreateContextWithConfigSGIXReq *) vpreq;
+ req->reqType = gc->majorOpcode;
+ req->glxCode = X_GLXVendorPrivateWithReply;
+ req->vendorCode = X_GLXvop_CreateContextWithConfigSGIX;
+ req->context = gc->xid = XAllocID(dpy);
+ req->fbconfig = generic_id;
+ req->screen = screen;
+ req->renderType = renderType;
+ req->shareList = shareList ? shareList->xid : None;
+ req->isDirect = GC_IS_DIRECT(gc);
+ break;
+ }
+
+ default:
+ /* What to do here? This case is the sign of an internal error. It
+ * should never be reachable.
+ */
+ break;
}
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ gc->imported = GL_FALSE;
gc->renderType = renderType;
return gc;
@@ -493,8 +466,31 @@ PUBLIC GLXContext
glXCreateContext(Display * dpy, XVisualInfo * vis,
GLXContext shareList, Bool allowDirect)
{
- return CreateContext(dpy, vis, NULL, shareList, allowDirect, None,
- False, 0);
+ const __GLcontextModes *mode = NULL;
+ int renderType = 0;
+
+#ifdef GLX_DIRECT_RENDERING
+ __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, vis->screen);
+
+ mode = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
+ if (mode == NULL) {
+ xError error;
+
+ error.errorCode = BadValue;
+ error.resourceID = vis->visualid;
+ error.sequenceNumber = dpy->request;
+ error.type = X_Error;
+ error.majorCode = __glXSetupForCommand(dpy);
+ error.minorCode = X_GLXCreateContext;
+ _XError(dpy, &error);
+ return None;
+ }
+
+ renderType = mode->rgbMode ? GLX_RGBA_TYPE : GLX_COLOR_INDEX_TYPE;
+#endif
+
+ return CreateContext(dpy, vis->visualid, mode, shareList, allowDirect,
+ X_GLXCreateContext, renderType, vis->screen);
}
_X_HIDDEN void
@@ -860,11 +856,9 @@ glXIsDirect(Display * dpy, GLXContext gc)
{
if (!gc) {
return GL_FALSE;
-#ifdef GLX_DIRECT_RENDERING
}
- else if (gc->driContext) {
+ else if (GC_IS_DIRECT(gc)) {
return GL_TRUE;
-#endif
}
return __glXIsDirect(dpy, gc->xid);
}
@@ -1095,7 +1089,7 @@ init_fbconfig_for_chooser(__GLcontextModes * config,
#define MATCH_DONT_CARE( param ) \
do { \
- if ( (a-> param != GLX_DONT_CARE) \
+ if ( ((int) a-> param != (int) GLX_DONT_CARE) \
&& (a-> param != b-> param) ) { \
return False; \
} \
@@ -1103,7 +1097,7 @@ init_fbconfig_for_chooser(__GLcontextModes * config,
#define MATCH_MINIMUM( param ) \
do { \
- if ( (a-> param != GLX_DONT_CARE) \
+ if ( ((int) a-> param != (int) GLX_DONT_CARE) \
&& (a-> param > b-> param) ) { \
return False; \
} \
@@ -1170,7 +1164,7 @@ fbconfigs_compatible(const __GLcontextModes * const a,
* the (broken) drivers.
*/
- if (a->transparentPixel != GLX_DONT_CARE && a->transparentPixel != 0) {
+ if (a->transparentPixel != (int) GLX_DONT_CARE && a->transparentPixel != 0) {
if (a->transparentPixel == GLX_NONE) {
if (b->transparentPixel != GLX_NONE && b->transparentPixel != 0)
return False;
@@ -1478,6 +1472,8 @@ glXQueryExtensionsString(Display * dpy, int screen)
PUBLIC const char *
glXGetClientString(Display * dpy, int name)
{
+ (void) dpy;
+
switch (name) {
case GLX_VENDOR:
return (__glXGLXClientVendorName);
@@ -1639,7 +1635,6 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
else {
int *propList, *pProp;
int nPropListBytes;
- int i;
nPropListBytes = numValues << 3;
propList = (int *) Xmalloc(nPropListBytes);
@@ -1647,6 +1642,8 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
retval = 0;
}
else {
+ unsigned i;
+
_XRead(dpy, (char *) propList, nPropListBytes);
pProp = propList;
for (i = 0; i < numValues; i++) {
@@ -1742,10 +1739,14 @@ glXImportContextEXT(Display * dpy, GLXContextID contextID)
return NULL;
}
- ctx = CreateContext(dpy, NULL, NULL, NULL, False, contextID, False, 0);
+ ctx = AllocateGLXContext(dpy);
if (NULL != ctx) {
+ ctx->xid = contextID;
+ ctx->imported = GL_TRUE;
+
if (Success != __glXQueryContextInfo(dpy, ctx)) {
- return NULL;
+ __glXFreeContext(ctx);
+ ctx = NULL;
}
}
return ctx;
@@ -1791,8 +1792,12 @@ PUBLIC GLXContext
glXCreateNewContext(Display * dpy, GLXFBConfig config,
int renderType, GLXContext shareList, Bool allowDirect)
{
- return CreateContext(dpy, NULL, (__GLcontextModes *) config, shareList,
- allowDirect, None, True, renderType);
+ const __GLcontextModes *const fbconfig =
+ (const __GLcontextModes *const) config;
+
+ return CreateContext(dpy, fbconfig->fbconfigID, fbconfig, shareList,
+ allowDirect, X_GLXCreateNewContext, renderType,
+ fbconfig->screen);
}
@@ -1815,14 +1820,15 @@ glXGetFBConfigs(Display * dpy, int screen, int *nelements)
if (priv && (priv->screenConfigs != NULL)
&& (screen >= 0) && (screen <= ScreenCount(dpy))
&& (priv->screenConfigs[screen].configs != NULL)
- && (priv->screenConfigs[screen].configs->fbconfigID != GLX_DONT_CARE)) {
+ && (priv->screenConfigs[screen].configs->fbconfigID
+ != (int) GLX_DONT_CARE)) {
unsigned num_configs = 0;
__GLcontextModes *modes;
for (modes = priv->screenConfigs[screen].configs; modes != NULL;
modes = modes->next) {
- if (modes->fbconfigID != GLX_DONT_CARE) {
+ if (modes->fbconfigID != (int) GLX_DONT_CARE) {
num_configs++;
}
}
@@ -1834,7 +1840,7 @@ glXGetFBConfigs(Display * dpy, int screen, int *nelements)
i = 0;
for (modes = priv->screenConfigs[screen].configs; modes != NULL;
modes = modes->next) {
- if (modes->fbconfigID != GLX_DONT_CARE) {
+ if (modes->fbconfigID != (int) GLX_DONT_CARE) {
config[i] = modes;
i++;
}
@@ -1952,10 +1958,6 @@ __glXSwapIntervalMESA(unsigned int interval)
{
GLXContext gc = __glXGetCurrentContext();
- if (interval < 0) {
- return GLX_BAD_VALUE;
- }
-
#ifdef __DRI_SWAP_CONTROL
if (gc != NULL && gc->driContext) {
__GLXscreenConfigs *const psc = GetGLXScreenConfigs(gc->currentDpy,
@@ -2282,8 +2284,10 @@ glXCreateContextWithConfigSGIX(Display * dpy,
psc = GetGLXScreenConfigs(dpy, fbconfig->screen);
if ((psc != NULL)
&& __glXExtensionBitIsEnabled(psc, SGIX_fbconfig_bit)) {
- gc = CreateContext(dpy, NULL, (__GLcontextModes *) config, shareList,
- allowDirect, None, False, renderType);
+ gc = CreateContext(dpy, fbconfig->fbconfigID, fbconfig, shareList,
+ allowDirect,
+ X_GLXvop_CreateContextWithConfigSGIX, renderType,
+ fbconfig->screen);
}
return gc;
@@ -2298,7 +2302,7 @@ glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis)
if ((GetGLXPrivScreenConfig(dpy, vis->screen, &priv, &psc) != Success)
&& __glXExtensionBitIsEnabled(psc, SGIX_fbconfig_bit)
- && (psc->configs->fbconfigID != GLX_DONT_CARE)) {
+ && (psc->configs->fbconfigID != (int) GLX_DONT_CARE)) {
return (GLXFBConfigSGIX) _gl_context_modes_find_visual(psc->configs,
vis->visualid);
}
@@ -2386,6 +2390,8 @@ __driGetMscRateOML(__DRIdrawable * draw,
int i;
__GLXDRIdrawable *glxDraw = private;
+ (void) draw;
+
psc = glxDraw->psc;
if (XF86VidModeQueryVersion(psc->dpy, &i, &i) &&
XF86VidModeGetModeLine(psc->dpy, psc->scr, &dot_clock, &mode_line)) {
@@ -2432,6 +2438,11 @@ __driGetMscRateOML(__DRIdrawable * draw,
else
return False;
#else
+ (void) draw;
+ (void) numerator;
+ (void) denominator;
+ (void) private;
+
return False;
#endif
}
@@ -2870,14 +2881,9 @@ __glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer)
INT32 *buffer_ptr;
CARD8 opcode;
- if (gc == NULL)
+ if ((gc == NULL) || GC_IS_DIRECT(gc))
return;
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext)
- return;
-#endif
-
opcode = __glXSetupForCommand(dpy);
if (!opcode)
return;