VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.14.0/glapi.h

Last change on this file was 45134, checked in by vboxsync, 12 years ago

Additions/X11: build vboxvideo_drv.so for X.Org Server 1.14.

  • Property svn:eol-style set to native
File size: 4.0 KB
Line 
1/*
2 * Mesa 3-D graphics library
3 * Version: 7.1
4 *
5 * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 * and/or sell copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included
15 * in all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25/**
26 * \mainpage Mesa GL API Module
27 *
28 * \section GLAPIIntroduction Introduction
29 *
30 * The Mesa GL API module is responsible for dispatching all the
31 * gl*() functions. All GL functions are dispatched by jumping through
32 * the current dispatch table (basically a struct full of function
33 * pointers.)
34 *
35 * A per-thread current dispatch table and per-thread current context
36 * pointer are managed by this module too.
37 *
38 * This module is intended to be non-Mesa-specific so it can be used
39 * with the X/DRI libGL also.
40 */
41
42#ifndef _GLAPI_H
43#define _GLAPI_H
44
45#define GL_GLEXT_PROTOTYPES
46
47#include "GL/gl.h"
48#include "GL/glext.h"
49#include "glthread.h"
50
51struct _glapi_table;
52
53typedef void (*_glapi_proc) (void); /* generic function pointer */
54
55typedef void (*_glapi_warning_func) (void *ctx, const char *str, ...);
56
57#if defined(USE_MGL_NAMESPACE)
58#define _glapi_set_dispatch _mglapi_set_dispatch
59#define _glapi_get_dispatch _mglapi_get_dispatch
60#define _glapi_set_context _mglapi_set_context
61#define _glapi_get_context _mglapi_get_context
62#define _glapi_Context _mglapi_Context
63#define _glapi_Dispatch _mglapi_Dispatch
64#endif
65
66/*
67 * Number of extension functions which we can dynamically add at runtime.
68 */
69#define MAX_EXTENSION_FUNCS 300
70
71/**
72 ** Define the GET_CURRENT_CONTEXT() macro.
73 ** \param C local variable which will hold the current context.
74 **/
75#if defined (GLX_USE_TLS)
76
77const extern void *_glapi_Context;
78const extern struct _glapi_table *_glapi_Dispatch;
79
80extern TLS void *_glapi_tls_Context;
81
82#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_tls_Context
83
84#else
85
86extern void *_glapi_Context;
87extern struct _glapi_table *_glapi_Dispatch;
88
89#ifdef THREADS
90#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context())
91#else
92#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_Context
93#endif
94
95#endif /* defined (GLX_USE_TLS) */
96
97/**
98 ** GL API public functions
99 **/
100
101extern void
102 _glapi_check_multithread(void);
103
104extern void
105 _glapi_set_context(void *context);
106
107extern void *_glapi_get_context(void);
108
109extern void
110 _glapi_set_dispatch(struct _glapi_table *dispatch);
111
112extern struct _glapi_table *_glapi_get_dispatch(void);
113
114extern int
115 _glapi_begin_dispatch_override(struct _glapi_table *override);
116
117extern void
118 _glapi_end_dispatch_override(int layer);
119
120struct _glapi_table *_glapi_get_override_dispatch(int layer);
121
122extern GLuint _glapi_get_dispatch_table_size(void);
123
124extern int
125
126_glapi_add_dispatch(const char *const *function_names,
127 const char *parameter_signature);
128
129extern _glapi_proc _glapi_get_proc_address(const char *funcName);
130
131extern struct _glapi_table *_glapi_create_table_from_handle(void *handle,
132 const char
133 *symbol_prefix);
134
135#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette