diff options
author | Brian Paul <brianp@vmware.com> | 2009-02-03 10:12:51 -0700 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-02-03 15:36:38 -0700 |
commit | 49e80bf6b163310f7cd776261872201eea57053a (patch) | |
tree | df04e7f40deb7a5e8402ae12b7190fcd10c269c1 | |
parent | b5d549e3514af1d299b27d80bd157a65f397fe15 (diff) |
xlib: use MESA_GLX_FORCE_DIRECT to make glXIsDirect() always return True
Some apps won't run w/ indirect rendering contexts.
Also, consolidate some context-init code in new init_glx_context() function.
-rw-r--r-- | src/mesa/drivers/x11/fakeglx.c | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/src/mesa/drivers/x11/fakeglx.c b/src/mesa/drivers/x11/fakeglx.c index ea3585258d..73fde865e3 100644 --- a/src/mesa/drivers/x11/fakeglx.c +++ b/src/mesa/drivers/x11/fakeglx.c @@ -1,8 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 7.1 + * Version: 7.5 * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -1392,6 +1393,25 @@ Fake_glXChooseVisual( Display *dpy, int screen, int *list ) } +/** + * Init basic fields of a new fake_glx_context. + * If the MESA_GLX_FORCE_DIRECT env var is set, the context will be marked as + * a direct rendering context. Some apps won't run without this. + */ +static void +init_glx_context(struct fake_glx_context *glxCtx, Display *dpy) +{ + GLboolean direct = _mesa_getenv("MESA_GLX_FORCE_DIRECT") ? GL_TRUE : GL_FALSE; + glxCtx->xmesaContext->direct = direct; + glxCtx->glxContext.isDirect = direct; + glxCtx->glxContext.currentDpy = dpy; + glxCtx->glxContext.xid = (XID) glxCtx; /* self pointer */ + + assert((void *) glxCtx == (void *) &(glxCtx->glxContext)); +} + + + static GLXContext Fake_glXCreateContext( Display *dpy, XVisualInfo *visinfo, GLXContext share_list, Bool direct ) @@ -1430,12 +1450,7 @@ Fake_glXCreateContext( Display *dpy, XVisualInfo *visinfo, return NULL; } - glxCtx->xmesaContext->direct = GL_FALSE; - glxCtx->glxContext.isDirect = GL_FALSE; - glxCtx->glxContext.currentDpy = dpy; - glxCtx->glxContext.xid = (XID) glxCtx; /* self pointer */ - - assert((void *) glxCtx == (void *) &(glxCtx->glxContext)); + init_glx_context(glxCtx, dpy); return (GLXContext) glxCtx; } @@ -2441,12 +2456,7 @@ Fake_glXCreateNewContext( Display *dpy, GLXFBConfig config, return NULL; } - glxCtx->xmesaContext->direct = GL_FALSE; - glxCtx->glxContext.isDirect = GL_FALSE; - glxCtx->glxContext.currentDpy = dpy; - glxCtx->glxContext.xid = (XID) glxCtx; /* self pointer */ - - assert((void *) glxCtx == (void *) &(glxCtx->glxContext)); + init_glx_context(glxCtx, dpy); return (GLXContext) glxCtx; } @@ -2664,12 +2674,7 @@ Fake_glXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, int re return NULL; } - glxCtx->xmesaContext->direct = GL_FALSE; - glxCtx->glxContext.isDirect = GL_FALSE; - glxCtx->glxContext.currentDpy = dpy; - glxCtx->glxContext.xid = (XID) glxCtx; /* self pointer */ - - assert((void *) glxCtx == (void *) &(glxCtx->glxContext)); + init_glx_context(glxCtx, dpy); return (GLXContext) glxCtx; } |