ReactOS  0.4.13-dev-1089-g05f0b08
context.h
Go to the documentation of this file.
1 /* $Id: context.h,v 1.9 1997/09/29 22:25:28 brianp Exp $ */
2 
3 /*
4  * Mesa 3-D graphics library
5  * Version: 2.5
6  * Copyright (C) 1995-1997 Brian Paul
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this library; if not, write to the Free
20  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21  */
22 
23 
24 /*
25  * $Log: context.h,v $
26  * Revision 1.9 1997/09/29 22:25:28 brianp
27  * added const to a few function parameters
28  *
29  * Revision 1.8 1997/05/26 21:14:13 brianp
30  * gl_create_visual() now takes red/green/blue/alpha_bits arguments
31  *
32  * Revision 1.7 1997/04/16 23:55:06 brianp
33  * added gl_set_api_table()
34  *
35  * Revision 1.6 1997/04/12 17:12:43 brianp
36  * added gl_get_current_context()
37  *
38  * Revision 1.5 1997/02/27 19:57:38 brianp
39  * added gl_problem() function
40  *
41  * Revision 1.4 1997/02/10 19:49:50 brianp
42  * added gl_ResizeBuffersMESA()
43  *
44  * Revision 1.3 1996/09/19 03:14:49 brianp
45  * now just one parameter for gl_create_framebuffer()
46  *
47  * Revision 1.2 1996/09/15 14:20:22 brianp
48  * added new functions for GLframebuffer and GLvisual support
49  *
50  * Revision 1.1 1996/09/13 01:38:16 brianp
51  * Initial revision
52  *
53  */
54 
55 
56 #ifndef CONTEXT_H
57 #define CONTEXT_H
58 
59 
60 #include "types.h"
61 
62 
63 
64 #ifdef THREADS
65  /*
66  * A seperate GLcontext for each thread
67  */
68  extern GLcontext *gl_get_thread_context( void );
69 #else
70  /*
71  * All threads use same pointer to current context.
72  */
73  extern GLcontext *CC;
74 #endif
75 
76 
77 
78 /*
79  * There are three Mesa datatypes which are meant to be used by device
80  * drivers:
81  * GLcontext: this contains the Mesa rendering state
82  * GLvisual: this describes the color buffer (rgb vs. ci), whether
83  * or not there's a depth buffer, stencil buffer, etc.
84  * GLframebuffer: contains pointers to the depth buffer, stencil
85  * buffer, accum buffer and alpha buffers.
86  *
87  * These types should be encapsulated by corresponding device driver
88  * datatypes. See xmesa.h and xmesaP.h for an example.
89  *
90  * The following functions create and destroy these datatypes.
91  */
92 
93 
94 /*
95  * Create/destroy a GLvisual. A GLvisual is like a GLX visual. It describes
96  * the colorbuffer, depth buffer, stencil buffer and accum buffer which will
97  * be used by the GL context and framebuffer.
98  */
99 extern GLvisual *gl_create_visual( GLboolean rgb_flag,
100  GLboolean alpha_flag,
101  GLboolean db_flag,
102  GLint depth_bits,
103  GLint stencil_bits,
104  GLint accum_bits,
105  GLint index_bits,
106  GLfloat red_scale,
107  GLfloat green_scale,
108  GLfloat blue_scale,
109  GLfloat alpha_scale,
110  GLint red_bits,
111  GLint green_bits,
112  GLint blue_bits,
113  GLint alpha_bits );
114 
115 extern void gl_destroy_visual( GLvisual *vis );
116 
117 
118 /*
119  * Create/destroy a GLcontext. A GLcontext is like a GLX context. It
120  * contains the rendering state.
121  */
122 extern GLcontext *gl_create_context( GLvisual *visual,
123  GLcontext *share_list,
124  void *driver_ctx );
125 
126 extern void gl_destroy_context( GLcontext *ctx );
127 
128 
129 /*
130  * Create/destroy a GLframebuffer. A GLframebuffer is like a GLX drawable.
131  * It bundles up the depth buffer, stencil buffer and accum buffers into a
132  * single entity.
133  */
134 extern GLframebuffer *gl_create_framebuffer( GLvisual *visual );
135 
137 
138 
139 
140 extern void gl_make_current( GLcontext *ctx, GLframebuffer *buffer );
141 
142 extern GLcontext *gl_get_current_context(void);
143 
144 extern void gl_copy_context(const GLcontext *src, GLcontext *dst, GLuint mask);
145 
146 extern void gl_set_api_table( GLcontext *ctx, const struct gl_api_table *api );
147 
148 
149 
150 /*
151  * GL_MESA_resize_buffers extension
152  */
153 extern void gl_ResizeBuffersMESA( GLcontext *ctx );
154 
155 
156 
157 /*
158  * Miscellaneous
159  */
160 
161 extern void gl_problem( const GLcontext *ctx, const char *s );
162 
163 extern void gl_warning( const GLcontext *ctx, const char *s );
164 
165 extern void gl_error( GLcontext *ctx, GLenum error, const char *s );
166 
167 extern GLenum gl_GetError( GLcontext *ctx );
168 
169 
170 extern void gl_update_state( GLcontext *ctx );
171 
172 
173 
174 #ifdef PROFILE
175 extern GLdouble gl_time( void );
176 #endif
177 
178 
179 #endif
void gl_copy_context(const GLcontext *src, GLcontext *dst, GLuint mask)
Definition: context.c:1293
double GLdouble
Definition: gl.h:163
void gl_destroy_context(GLcontext *ctx)
Definition: context.c:1186
api
Definition: notification.c:37
void gl_error(GLcontext *ctx, GLenum error, const char *s)
Definition: context.c:1421
#define error(str)
Definition: mkdosfs.c:1605
GLenum gl_GetError(GLcontext *ctx)
Definition: context.c:1481
void gl_warning(const GLcontext *ctx, const char *s)
Definition: context.c:1406
GLuint buffer
Definition: glext.h:5915
GLenum GLint GLuint mask
Definition: glext.h:6028
GLframebuffer * gl_create_framebuffer(GLvisual *visual)
Definition: context.c:1230
unsigned char GLboolean
Definition: gl.h:151
void gl_destroy_visual(GLvisual *vis)
Definition: context.c:1029
GLcontext * gl_create_context(GLvisual *visual, GLcontext *share_list, void *driver_ctx)
Definition: context.c:1093
GLcontext * gl_get_thread_context(void)
Definition: swimpl.c:1422
void gl_update_state(GLcontext *ctx)
Definition: context.c:1749
void gl_ResizeBuffersMESA(GLcontext *ctx)
Definition: context.c:1497
void gl_make_current(GLcontext *ctx, GLframebuffer *buffer)
Definition: context.c:1276
GLdouble s
Definition: gl.h:2039
GLenum src
Definition: glext.h:6340
unsigned int GLenum
Definition: gl.h:150
void gl_set_api_table(GLcontext *ctx, const struct gl_api_table *api)
Definition: context.c:1372
unsigned int GLuint
Definition: gl.h:159
void gl_destroy_framebuffer(GLframebuffer *buffer)
Definition: context.c:1249
GLenum GLenum dst
Definition: glext.h:6340
GLvisual * gl_create_visual(GLboolean rgb_flag, GLboolean alpha_flag, GLboolean db_flag, GLint depth_bits, GLint stencil_bits, GLint accum_bits, GLint index_bits, GLfloat red_scale, GLfloat green_scale, GLfloat blue_scale, GLfloat alpha_scale, GLint red_bits, GLint green_bits, GLint blue_bits, GLint alpha_bits)
Definition: context.c:936
float GLfloat
Definition: gl.h:161
int GLint
Definition: gl.h:156
void gl_problem(const GLcontext *ctx, const char *s)
Definition: context.c:1394
GLcontext * gl_get_current_context(void)
GLcontext * CC