glxcontext.h revision 35c4bbdf
14642e01fSmrg#ifdef HAVE_DIX_CONFIG_H 24642e01fSmrg#include <dix-config.h> 34642e01fSmrg#endif 44642e01fSmrg 54642e01fSmrg#ifndef _GLX_context_h_ 64642e01fSmrg#define _GLX_context_h_ 74642e01fSmrg 84642e01fSmrg/* 94642e01fSmrg * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) 104642e01fSmrg * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. 114642e01fSmrg * 124642e01fSmrg * Permission is hereby granted, free of charge, to any person obtaining a 134642e01fSmrg * copy of this software and associated documentation files (the "Software"), 144642e01fSmrg * to deal in the Software without restriction, including without limitation 154642e01fSmrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 164642e01fSmrg * and/or sell copies of the Software, and to permit persons to whom the 174642e01fSmrg * Software is furnished to do so, subject to the following conditions: 184642e01fSmrg * 194642e01fSmrg * The above copyright notice including the dates of first publication and 204642e01fSmrg * either this permission notice or a reference to 214642e01fSmrg * http://oss.sgi.com/projects/FreeB/ 224642e01fSmrg * shall be included in all copies or substantial portions of the Software. 234642e01fSmrg * 244642e01fSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 254642e01fSmrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 264642e01fSmrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 274642e01fSmrg * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 284642e01fSmrg * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 294642e01fSmrg * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 304642e01fSmrg * SOFTWARE. 314642e01fSmrg * 324642e01fSmrg * Except as contained in this notice, the name of Silicon Graphics, Inc. 334642e01fSmrg * shall not be used in advertising or otherwise to promote the sale, use or 344642e01fSmrg * other dealings in this Software without prior written authorization from 354642e01fSmrg * Silicon Graphics, Inc. 364642e01fSmrg */ 374642e01fSmrg 384642e01fSmrgtypedef struct __GLXtextureFromPixmap __GLXtextureFromPixmap; 394642e01fSmrgstruct __GLXtextureFromPixmap { 4035c4bbdfSmrg int (*bindTexImage) (__GLXcontext * baseContext, 4135c4bbdfSmrg int buffer, __GLXdrawable * pixmap); 4235c4bbdfSmrg int (*releaseTexImage) (__GLXcontext * baseContext, 4335c4bbdfSmrg int buffer, __GLXdrawable * pixmap); 444642e01fSmrg}; 454642e01fSmrg 464642e01fSmrgstruct __GLXcontext { 4735c4bbdfSmrg void (*destroy) (__GLXcontext * context); 4835c4bbdfSmrg int (*makeCurrent) (__GLXcontext * context); 4935c4bbdfSmrg int (*loseCurrent) (__GLXcontext * context); 5035c4bbdfSmrg int (*copy) (__GLXcontext * dst, __GLXcontext * src, unsigned long mask); 5135c4bbdfSmrg Bool (*wait) (__GLXcontext * context, __GLXclientState * cl, int *error); 526747b715Smrg 534642e01fSmrg __GLXtextureFromPixmap *textureFromPixmap; 544642e01fSmrg 554642e01fSmrg /* 5635c4bbdfSmrg ** list of context structs 5735c4bbdfSmrg */ 584642e01fSmrg __GLXcontext *next; 594642e01fSmrg 604642e01fSmrg /* 6135c4bbdfSmrg ** config struct for this context 6235c4bbdfSmrg */ 634642e01fSmrg __GLXconfig *config; 644642e01fSmrg 654642e01fSmrg /* 6635c4bbdfSmrg ** Pointer to screen info data for this context. This is set 6735c4bbdfSmrg ** when the context is created. 6835c4bbdfSmrg */ 694642e01fSmrg __GLXscreen *pGlxScreen; 704642e01fSmrg 714642e01fSmrg /* 7235c4bbdfSmrg ** If this context is current for a client, this will be that client 7335c4bbdfSmrg */ 7435c4bbdfSmrg ClientPtr currentClient; 7535c4bbdfSmrg 7635c4bbdfSmrg /* 7735c4bbdfSmrg ** The XID of this context. 7835c4bbdfSmrg */ 794642e01fSmrg XID id; 804642e01fSmrg 814642e01fSmrg /* 8235c4bbdfSmrg ** The XID of the shareList context. 8335c4bbdfSmrg */ 844642e01fSmrg XID share_id; 854642e01fSmrg 864642e01fSmrg /* 8735c4bbdfSmrg ** Whether this context's ID still exists. 8835c4bbdfSmrg */ 894642e01fSmrg GLboolean idExists; 9035c4bbdfSmrg 914642e01fSmrg /* 9235c4bbdfSmrg ** Whether this context is a direct rendering context. 9335c4bbdfSmrg */ 944642e01fSmrg GLboolean isDirect; 954642e01fSmrg 964642e01fSmrg /* 9735c4bbdfSmrg ** This flag keeps track of whether there are unflushed GL commands. 9835c4bbdfSmrg */ 994642e01fSmrg GLboolean hasUnflushedCommands; 10035c4bbdfSmrg 1014642e01fSmrg /* 10235c4bbdfSmrg ** Current rendering mode for this context. 10335c4bbdfSmrg */ 1044642e01fSmrg GLenum renderMode; 10535c4bbdfSmrg 10635c4bbdfSmrg /** 10735c4bbdfSmrg * Reset notification strategy used when a GPU reset occurs. 10835c4bbdfSmrg */ 10935c4bbdfSmrg GLenum resetNotificationStrategy; 11035c4bbdfSmrg 11135c4bbdfSmrg /** 11235c4bbdfSmrg * Context release behavior 11335c4bbdfSmrg */ 11435c4bbdfSmrg GLenum releaseBehavior; 11535c4bbdfSmrg 1164642e01fSmrg /* 11735c4bbdfSmrg ** Buffers for feedback and selection. 11835c4bbdfSmrg */ 1194642e01fSmrg GLfloat *feedbackBuf; 12035c4bbdfSmrg GLint feedbackBufSize; /* number of elements allocated */ 1214642e01fSmrg GLuint *selectBuf; 12235c4bbdfSmrg GLint selectBufSize; /* number of elements allocated */ 1234642e01fSmrg 1244642e01fSmrg /* 12535c4bbdfSmrg ** The drawable private this context is bound to 12635c4bbdfSmrg */ 1274642e01fSmrg __GLXdrawable *drawPriv; 1284642e01fSmrg __GLXdrawable *readPriv; 1294642e01fSmrg}; 1304642e01fSmrg 13135c4bbdfSmrgvoid __glXContextDestroy(__GLXcontext * context); 13235c4bbdfSmrg 13335c4bbdfSmrgextern int validGlxScreen(ClientPtr client, int screen, 13435c4bbdfSmrg __GLXscreen ** pGlxScreen, int *err); 13535c4bbdfSmrg 13635c4bbdfSmrgextern int validGlxFBConfig(ClientPtr client, __GLXscreen * pGlxScreen, 13735c4bbdfSmrg XID id, __GLXconfig ** config, int *err); 13835c4bbdfSmrg 13935c4bbdfSmrgextern int validGlxContext(ClientPtr client, XID id, int access_mode, 14035c4bbdfSmrg __GLXcontext ** context, int *err); 14135c4bbdfSmrg 14235c4bbdfSmrgextern __GLXcontext *__glXdirectContextCreate(__GLXscreen * screen, 14335c4bbdfSmrg __GLXconfig * modes, 14435c4bbdfSmrg __GLXcontext * shareContext); 1454642e01fSmrg 14635c4bbdfSmrg#endif /* !__GLX_context_h__ */ 147