mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 02:10:11 +01:00
revert XMesaCreateContext changes
This commit is contained in:
parent
b980b2eeb6
commit
7a1f3a37a1
2 changed files with 84 additions and 89 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: fakeglx.c,v 1.43 2001/01/08 04:06:20 keithw Exp $ */
|
||||
/* $Id: fakeglx.c,v 1.44 2001/01/08 04:55:22 keithw Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -1090,7 +1090,7 @@ Fake_glXCreateContext( Display *dpy, XVisualInfo *visinfo,
|
|||
GLXContext share_list, Bool direct )
|
||||
{
|
||||
XMesaVisual glxvis;
|
||||
struct __GLcontextRec *ctx;
|
||||
XMesaContext xmctx;
|
||||
|
||||
/* deallocate unused windows/buffers */
|
||||
XMesaGarbageCollect();
|
||||
|
|
@ -1105,13 +1105,12 @@ Fake_glXCreateContext( Display *dpy, XVisualInfo *visinfo,
|
|||
}
|
||||
}
|
||||
|
||||
ctx = XMesaCreateContext( glxvis, (struct __GLcontextRec *) share_list );
|
||||
if (ctx) {
|
||||
XMesaContext xmctx = (XMesaContext)(ctx->DriverCtx);
|
||||
xmctx = XMesaCreateContext( glxvis, (XMesaContext) share_list );
|
||||
if (xmctx) {
|
||||
/* set the direct/indirect flag */
|
||||
xmctx->direct = direct;
|
||||
}
|
||||
return (GLXContext) ctx;
|
||||
return (GLXContext) xmctx;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1124,16 +1123,15 @@ static XMesaBuffer MakeCurrent_PrevReadBuffer = 0;
|
|||
/* GLX 1.3 and later */
|
||||
static Bool
|
||||
Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
|
||||
GLXDrawable read, GLXContext glxctx )
|
||||
GLXDrawable read, GLXContext ctx )
|
||||
{
|
||||
if (glxctx && draw && read) {
|
||||
if (ctx && draw && read) {
|
||||
XMesaBuffer drawBuffer, readBuffer;
|
||||
GLcontext *ctx = (GLcontext *) glxctx;
|
||||
XMesaContext xmctx = (XMesaContext)(ctx->DriverCtx);
|
||||
XMesaContext xmctx = (XMesaContext) ctx;
|
||||
|
||||
/* Find the XMesaBuffer which corresponds to the GLXDrawable 'draw' */
|
||||
if (glxctx == MakeCurrent_PrevContext &&
|
||||
draw == MakeCurrent_PrevDrawable) {
|
||||
if (ctx == MakeCurrent_PrevContext
|
||||
&& draw == MakeCurrent_PrevDrawable) {
|
||||
drawBuffer = MakeCurrent_PrevDrawBuffer;
|
||||
}
|
||||
else {
|
||||
|
|
@ -1141,7 +1139,7 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
|
|||
}
|
||||
if (!drawBuffer) {
|
||||
/* drawable must be a new window! */
|
||||
drawBuffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, draw, xmctx );
|
||||
drawBuffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, draw, (XMesaContext) ctx );
|
||||
if (!drawBuffer) {
|
||||
/* Out of memory, or context/drawable depth mismatch */
|
||||
return False;
|
||||
|
|
@ -1149,7 +1147,7 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
|
|||
}
|
||||
|
||||
/* Find the XMesaBuffer which corresponds to the GLXDrawable 'read' */
|
||||
if (glxctx == MakeCurrent_PrevContext
|
||||
if (ctx == MakeCurrent_PrevContext
|
||||
&& read == MakeCurrent_PrevReadable) {
|
||||
readBuffer = MakeCurrent_PrevReadBuffer;
|
||||
}
|
||||
|
|
@ -1158,23 +1156,23 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
|
|||
}
|
||||
if (!readBuffer) {
|
||||
/* drawable must be a new window! */
|
||||
readBuffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, read, xmctx );
|
||||
readBuffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, read, (XMesaContext) ctx );
|
||||
if (!readBuffer) {
|
||||
/* Out of memory, or context/drawable depth mismatch */
|
||||
return False;
|
||||
}
|
||||
}
|
||||
|
||||
MakeCurrent_PrevContext = glxctx;
|
||||
MakeCurrent_PrevContext = ctx;
|
||||
MakeCurrent_PrevDrawable = draw;
|
||||
MakeCurrent_PrevReadable = read;
|
||||
MakeCurrent_PrevDrawBuffer = drawBuffer;
|
||||
MakeCurrent_PrevReadBuffer = readBuffer;
|
||||
|
||||
/* Now make current! */
|
||||
return (Bool) XMesaMakeCurrent2(xmctx, drawBuffer, readBuffer);
|
||||
return (Bool) XMesaMakeCurrent2((XMesaContext) ctx, drawBuffer, readBuffer);
|
||||
}
|
||||
else if (!glxctx && !draw && !read) {
|
||||
else if (!ctx && !draw && !read) {
|
||||
/* release current context w/out assigning new one. */
|
||||
XMesaMakeCurrent( NULL, NULL );
|
||||
MakeCurrent_PrevContext = 0;
|
||||
|
|
@ -1269,10 +1267,10 @@ static void
|
|||
Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
|
||||
unsigned long mask )
|
||||
{
|
||||
struct __GLcontextRec *csrc = (struct __GLcontextRec *) src;
|
||||
struct __GLcontextRec *cdst = (struct __GLcontextRec *) dst;
|
||||
XMesaContext xm_src = (XMesaContext) src;
|
||||
XMesaContext xm_dst = (XMesaContext) dst;
|
||||
(void) dpy;
|
||||
_mesa_copy_context( csrc, cdst, (GLuint) mask );
|
||||
_mesa_copy_context( xm_src->gl_ctx, xm_dst->gl_ctx, (GLuint) mask );
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1299,14 +1297,13 @@ void _kw_ungrab_all( Display *dpy )
|
|||
static void
|
||||
Fake_glXDestroyContext( Display *dpy, GLXContext ctx )
|
||||
{
|
||||
XMesaContext xmctx = (XMesaContext)(((GLcontext *)ctx)->DriverCtx);
|
||||
(void) dpy;
|
||||
MakeCurrent_PrevContext = 0;
|
||||
MakeCurrent_PrevDrawable = 0;
|
||||
MakeCurrent_PrevReadable = 0;
|
||||
MakeCurrent_PrevDrawBuffer = 0;
|
||||
MakeCurrent_PrevReadBuffer = 0;
|
||||
XMesaDestroyContext( xmctx );
|
||||
XMesaDestroyContext( (XMesaContext) ctx );
|
||||
XMesaGarbageCollect();
|
||||
}
|
||||
|
||||
|
|
@ -1315,9 +1312,8 @@ Fake_glXDestroyContext( Display *dpy, GLXContext ctx )
|
|||
static Bool
|
||||
Fake_glXIsDirect( Display *dpy, GLXContext ctx )
|
||||
{
|
||||
XMesaContext xmctx = (XMesaContext)(((GLcontext *)ctx)->DriverCtx);
|
||||
(void) dpy;
|
||||
return xmctx->direct;
|
||||
return ((XMesaContext) ctx)->direct;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: xm_api.c,v 1.14 2001/01/08 04:06:20 keithw Exp $ */
|
||||
/* $Id: xm_api.c,v 1.15 2001/01/08 04:55:22 keithw Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -1613,8 +1613,7 @@ void XMesaDestroyVisual( XMesaVisual v )
|
|||
* lists or NULL if no sharing is wanted.
|
||||
* Return: an XMesaContext or NULL if error.
|
||||
*/
|
||||
struct __GLcontextRec *XMesaCreateContext( XMesaVisual v,
|
||||
struct __GLcontextRec *share_list )
|
||||
XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list )
|
||||
{
|
||||
XMesaContext c;
|
||||
GLcontext *ctx;
|
||||
|
|
@ -1633,9 +1632,8 @@ struct __GLcontextRec *XMesaCreateContext( XMesaVisual v,
|
|||
}
|
||||
|
||||
ctx = c->gl_ctx = _mesa_create_context( v->gl_visual,
|
||||
share_list,
|
||||
(void *) c,
|
||||
direct );
|
||||
share_list ? share_list->gl_ctx : (GLcontext *) NULL,
|
||||
(void *) c, direct );
|
||||
if (!c->gl_ctx) {
|
||||
FREE(c);
|
||||
return NULL;
|
||||
|
|
@ -1678,7 +1676,8 @@ struct __GLcontextRec *XMesaCreateContext( XMesaVisual v,
|
|||
*/
|
||||
_mesa_context_initialize( ctx );
|
||||
|
||||
return ctx;
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1760,12 +1759,12 @@ XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, XMesaWindow w,
|
|||
assert(v);
|
||||
|
||||
#ifdef XFree86Server
|
||||
if (GET_VISUAL_DEPTH(v) != ((XMesaDrawable)w)->depth)
|
||||
if (GET_VISUAL_DEPTH(v) != ((XMesaDrawable)w)->depth) {
|
||||
#else
|
||||
XGetWindowAttributes( v->display, w, &attr );
|
||||
if (GET_VISUAL_DEPTH(v) != attr.depth)
|
||||
XGetWindowAttributes( v->display, w, &attr );
|
||||
|
||||
if (GET_VISUAL_DEPTH(v) != attr.depth) {
|
||||
#endif
|
||||
{
|
||||
if (getenv("MESA_DEBUG")) {
|
||||
fprintf(stderr, "XMesaCreateWindowBuffer: depth mismatch between visual and window!\n");
|
||||
}
|
||||
|
|
@ -1826,61 +1825,61 @@ XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, XMesaWindow w,
|
|||
#ifdef FX
|
||||
fxEnvVar = getenv("MESA_GLX_FX");
|
||||
if (fxEnvVar) {
|
||||
if (fxEnvVar[0]!='d') {
|
||||
int attribs[100];
|
||||
int numAttribs = 0;
|
||||
int hw;
|
||||
if (v->gl_visual->DepthBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_DEPTH_SIZE;
|
||||
attribs[numAttribs++] = 1;
|
||||
}
|
||||
if (v->gl_visual->DBflag) {
|
||||
attribs[numAttribs++] = FXMESA_DOUBLEBUFFER;
|
||||
}
|
||||
if (v->gl_visual->AccumRedBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_ACCUM_SIZE;
|
||||
attribs[numAttribs++] = v->gl_visual->AccumRedBits;
|
||||
}
|
||||
if (v->gl_visual->StencilBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_STENCIL_SIZE;
|
||||
attribs[numAttribs++] = v->gl_visual->StencilBits;
|
||||
}
|
||||
if (v->gl_visual->AlphaBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_ALPHA_SIZE;
|
||||
attribs[numAttribs++] = 1;
|
||||
}
|
||||
if (c->gl_ctx) {
|
||||
if (fxEnvVar[0]!='d') {
|
||||
int attribs[100];
|
||||
int numAttribs = 0;
|
||||
int hw;
|
||||
if (v->gl_visual->DepthBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_DEPTH_SIZE;
|
||||
attribs[numAttribs++] = 1;
|
||||
}
|
||||
if (v->gl_visual->DBflag) {
|
||||
attribs[numAttribs++] = FXMESA_DOUBLEBUFFER;
|
||||
}
|
||||
if (v->gl_visual->AccumRedBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_ACCUM_SIZE;
|
||||
attribs[numAttribs++] = v->gl_visual->AccumRedBits;
|
||||
}
|
||||
if (v->gl_visual->StencilBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_STENCIL_SIZE;
|
||||
attribs[numAttribs++] = v->gl_visual->StencilBits;
|
||||
}
|
||||
if (v->gl_visual->AlphaBits > 0) {
|
||||
attribs[numAttribs++] = FXMESA_ALPHA_SIZE;
|
||||
attribs[numAttribs++] = 1;
|
||||
}
|
||||
if (c->gl_ctx) {
|
||||
#define FXMESA_SHARE_CONTEXT 990099 /* keep in sync with fxapi.c! */
|
||||
attribs[numAttribs++] = FXMESA_SHARE_CONTEXT;
|
||||
attribs[numAttribs++] = (int) c->gl_ctx;
|
||||
}
|
||||
attribs[numAttribs++] = FXMESA_NONE;
|
||||
attribs[numAttribs++] = FXMESA_SHARE_CONTEXT;
|
||||
attribs[numAttribs++] = (int) c->gl_ctx;
|
||||
}
|
||||
attribs[numAttribs++] = FXMESA_NONE;
|
||||
|
||||
if ((hw = fxQueryHardware())==GR_SSTTYPE_VOODOO) {
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->width, b->height, attribs);
|
||||
if ((v->undithered_pf!=PF_INDEX) && (b->backimage)) {
|
||||
b->FXisHackUsable = b->FXctx ? GL_TRUE : GL_FALSE;
|
||||
if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')
|
||||
b->FXwindowHack = b->FXctx ? GL_TRUE : GL_FALSE;
|
||||
else
|
||||
b->FXwindowHack = GL_FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')
|
||||
b->FXctx = fxMesaCreateContext(w, GR_RESOLUTION_NONE,
|
||||
GR_REFRESH_75Hz, attribs);
|
||||
else
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->width, b->height, attribs);
|
||||
b->FXisHackUsable = GL_FALSE;
|
||||
b->FXwindowHack = GL_FALSE;
|
||||
}
|
||||
/*
|
||||
fprintf(stderr,
|
||||
"voodoo %d, wid %d height %d hack: usable %d active %d\n",
|
||||
hw, b->width, b->height, b->FXisHackUsable, b->FXwindowHack);
|
||||
*/
|
||||
}
|
||||
if ((hw = fxQueryHardware())==GR_SSTTYPE_VOODOO) {
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->width, b->height, attribs);
|
||||
if ((v->undithered_pf!=PF_INDEX) && (b->backimage)) {
|
||||
b->FXisHackUsable = b->FXctx ? GL_TRUE : GL_FALSE;
|
||||
if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')
|
||||
b->FXwindowHack = b->FXctx ? GL_TRUE : GL_FALSE;
|
||||
else
|
||||
b->FXwindowHack = GL_FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')
|
||||
b->FXctx = fxMesaCreateContext(w, GR_RESOLUTION_NONE,
|
||||
GR_REFRESH_75Hz, attribs);
|
||||
else
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->width, b->height, attribs);
|
||||
b->FXisHackUsable = GL_FALSE;
|
||||
b->FXwindowHack = GL_FALSE;
|
||||
}
|
||||
/*
|
||||
fprintf(stderr,
|
||||
"voodoo %d, wid %d height %d hack: usable %d active %d\n",
|
||||
hw, b->width, b->height, b->FXisHackUsable, b->FXwindowHack);
|
||||
*/
|
||||
}
|
||||
}
|
||||
else {
|
||||
fprintf(stderr,"WARNING: This Mesa Library includes the Glide driver but\n");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue