1#ifdef HAVE_DIX_CONFIG_H 2#include <dix-config.h> 3#endif 4 5#ifndef _GLX_context_h_ 6#define _GLX_context_h_ 7 8/* 9 * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) 10 * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. 11 * 12 * Permission is hereby granted, free of charge, to any person obtaining a 13 * copy of this software and associated documentation files (the "Software"), 14 * to deal in the Software without restriction, including without limitation 15 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 16 * and/or sell copies of the Software, and to permit persons to whom the 17 * Software is furnished to do so, subject to the following conditions: 18 * 19 * The above copyright notice including the dates of first publication and 20 * either this permission notice or a reference to 21 * http://oss.sgi.com/projects/FreeB/ 22 * shall be included in all copies or substantial portions of the Software. 23 * 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 25 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 27 * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 28 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 29 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 * SOFTWARE. 31 * 32 * Except as contained in this notice, the name of Silicon Graphics, Inc. 33 * shall not be used in advertising or otherwise to promote the sale, use or 34 * other dealings in this Software without prior written authorization from 35 * Silicon Graphics, Inc. 36 */ 37 38typedef struct __GLXtextureFromPixmap __GLXtextureFromPixmap; 39struct __GLXtextureFromPixmap { 40 int (*bindTexImage) (__GLXcontext *baseContext, 41 int buffer, 42 __GLXdrawable *pixmap); 43 int (*releaseTexImage) (__GLXcontext *baseContext, 44 int buffer, 45 __GLXdrawable *pixmap); 46}; 47 48 49struct __GLXcontext { 50 void (*destroy) (__GLXcontext *context); 51 int (*makeCurrent) (__GLXcontext *context); 52 int (*loseCurrent) (__GLXcontext *context); 53 int (*copy) (__GLXcontext *dst, 54 __GLXcontext *src, 55 unsigned long mask); 56 int (*forceCurrent) (__GLXcontext *context); 57 58 Bool (*wait) (__GLXcontext *context, 59 __GLXclientState *cl, 60 int *error); 61 62 __GLXtextureFromPixmap *textureFromPixmap; 63 64 /* 65 ** list of context structs 66 */ 67 __GLXcontext *last; 68 __GLXcontext *next; 69 70 /* 71 ** config struct for this context 72 */ 73 __GLXconfig *config; 74 75 /* 76 ** Pointer to screen info data for this context. This is set 77 ** when the context is created. 78 */ 79 __GLXscreen *pGlxScreen; 80 81 /* 82 ** The XID of this context. 83 */ 84 XID id; 85 86 /* 87 ** The XID of the shareList context. 88 */ 89 XID share_id; 90 91 /* 92 ** Whether this context's ID still exists. 93 */ 94 GLboolean idExists; 95 96 /* 97 ** Whether this context is current for some client. 98 */ 99 GLboolean isCurrent; 100 101 /* 102 ** Whether this context is a direct rendering context. 103 */ 104 GLboolean isDirect; 105 106 /* 107 ** This flag keeps track of whether there are unflushed GL commands. 108 */ 109 GLboolean hasUnflushedCommands; 110 111 /* 112 ** Current rendering mode for this context. 113 */ 114 GLenum renderMode; 115 116 /* 117 ** Buffers for feedback and selection. 118 */ 119 GLfloat *feedbackBuf; 120 GLint feedbackBufSize; /* number of elements allocated */ 121 GLuint *selectBuf; 122 GLint selectBufSize; /* number of elements allocated */ 123 124 /* 125 ** The drawable private this context is bound to 126 */ 127 __GLXdrawable *drawPriv; 128 __GLXdrawable *readPriv; 129}; 130 131void __glXContextDestroy(__GLXcontext *context); 132 133#endif /* !__GLX_context_h__ */ 134