1afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Mesa 3-D graphics library
37ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian * Version:  7.1
4afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
57ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
6afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
7afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Permission is hereby granted, free of charge, to any person obtaining a
8afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * copy of this software and associated documentation files (the "Software"),
9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * to deal in the Software without restriction, including without limitation
10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * and/or sell copies of the Software, and to permit persons to whom the
12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Software is furnished to do so, subject to the following conditions:
13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * The above copyright notice and this permission notice shall be included
15afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * in all copies or substantial portions of the Software.
16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
26afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
27afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Mesa/X11 interface.  This header file serves as the documentation for
28afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * the Mesa/X11 interface functions.
29afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
30afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Note: this interface isn't intended for user programs.  It's primarily
31afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * just for implementing the pseudo-GLX interface.
32afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
33afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
34afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
35afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* Sample Usage:
36afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
37afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgIn addition to the usual X calls to select a visual, create a colormap
38afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgand create a window, you must do the following to use the X/Mesa interface:
39afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
40afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg1. Call XMesaCreateVisual() to make an XMesaVisual from an XVisualInfo.
41afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
42afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg2. Call XMesaCreateContext() to create an X/Mesa rendering context, given
43afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg   the XMesaVisual.
44afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
45afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg3. Call XMesaCreateWindowBuffer() to create an XMesaBuffer from an X window
46afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg   and XMesaVisual.
47afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
48afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg4. Call XMesaMakeCurrent() to bind the XMesaBuffer to an XMesaContext and
49afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg   to make the context the current one.
50afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
51afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg5. Make gl* calls to render your graphics.
52afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
53afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg6. Use XMesaSwapBuffers() when double buffering to swap front/back buffers.
54afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
55afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg7. Before the X window is destroyed, call XMesaDestroyBuffer().
56afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
57afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg8. Before exiting, call XMesaDestroyVisual and XMesaDestroyContext.
58afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
59afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg*/
60afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
61afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
62afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
63afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
64afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#ifndef XMESA_H
65afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define XMESA_H
66afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
67b5b5c52034840dbfcd3f76a9e7cde8b379e7d517Jouk Jansen#ifdef __VMS
68b5b5c52034840dbfcd3f76a9e7cde8b379e7d517Jouk Jansen#include <GL/vms_x_fix.h>
69b5b5c52034840dbfcd3f76a9e7cde8b379e7d517Jouk Jansen#endif
70afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
71afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#ifdef __cplusplus
72afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern "C" {
73afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif
74afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
75afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include <X11/Xlib.h>
76afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include <X11/Xutil.h>
77afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "xmesa_x.h"
78afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "GL/gl.h"
79afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
8065a9ca33816773f4edcd1c88bf7bf139eb440f4cDaniel Borca#define XMESA_MAJOR_VERSION 6
8165a9ca33816773f4edcd1c88bf7bf139eb440f4cDaniel Borca#define XMESA_MINOR_VERSION 3
82afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
83afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
84afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
85afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
86afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Values passed to XMesaGetString:
87afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
88afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define XMESA_VERSION 1
89afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define XMESA_EXTENSIONS 2
90afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
91afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
92afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
93afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Values passed to XMesaSetFXmode:
94afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
95afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define XMESA_FX_WINDOW       1
96afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define XMESA_FX_FULLSCREEN   2
97afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
98afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
99afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
100afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgtypedef struct xmesa_context *XMesaContext;
101afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
102afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgtypedef struct xmesa_visual *XMesaVisual;
103afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
104afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgtypedef struct xmesa_buffer *XMesaBuffer;
105afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
106afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
107afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
108afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
109afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Create a new X/Mesa visual.
110afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Input:  display - X11 display
111afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         visinfo - an XVisualInfo pointer
112afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         rgb_flag - GL_TRUE = RGB mode,
113afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *                    GL_FALSE = color index mode
114afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         alpha_flag - alpha buffer requested?
115afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         db_flag - GL_TRUE = double-buffered,
116afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *                   GL_FALSE = single buffered
117afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         stereo_flag - stereo visual?
118afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         ximage_flag - GL_TRUE = use an XImage for back buffer,
119afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *                       GL_FALSE = use an off-screen pixmap for back buffer
120c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         depth_size - requested bits/depth values, or zero
121c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         stencil_size - requested bits/stencil values, or zero
122c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         accum_red_size - requested bits/red accum values, or zero
123c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         accum_green_size - requested bits/green accum values, or zero
124c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         accum_blue_size - requested bits/blue accum values, or zero
125c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         accum_alpha_size - requested bits/alpha accum values, or zero
126c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         num_samples - number of samples/pixel if multisampling, or zero
127c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         level - visual level, usually 0
128c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul *         visualCaveat - ala the GLX extension, usually GLX_NONE_EXT
129afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return;  a new XMesaVisual or 0 if error.
130afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
131afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern XMesaVisual XMesaCreateVisual( XMesaDisplay *display,
132c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      XMesaVisualInfo visinfo,
133c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLboolean rgb_flag,
134c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLboolean alpha_flag,
135c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLboolean db_flag,
136c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLboolean stereo_flag,
137c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLboolean ximage_flag,
138c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint depth_size,
139c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint stencil_size,
140c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint accum_red_size,
141c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint accum_green_size,
142c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint accum_blue_size,
143c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint accum_alpha_size,
144c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint num_samples,
145c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint level,
146c8735e8f8299676e443e6ca0ffd339ab94e013f9Brian Paul                                      GLint visualCaveat );
147a5724069f146e840795f1884e7230ff3882bcdb6Brian Paul
148afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
149afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Destroy an XMesaVisual, but not the associated XVisualInfo.
150afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
151afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void XMesaDestroyVisual( XMesaVisual v );
152afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
153afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
154afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
155afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
156afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Create a new XMesaContext for rendering into an X11 window.
157afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
158afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Input:  visual - an XMesaVisual
159afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         share_list - another XMesaContext with which to share display
160afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *                      lists or NULL if no sharing is wanted.
161afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return:  an XMesaContext or NULL if error.
162afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
163afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern XMesaContext XMesaCreateContext( XMesaVisual v,
164ede979fcb5ba2c7dacb97535c7abcafdbd95af64Brian Paul					XMesaContext share_list );
165afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
166afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
167afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
168afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Destroy a rendering context as returned by XMesaCreateContext()
169afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
170afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void XMesaDestroyContext( XMesaContext c );
171afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
172afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
17350aaabc248c9823106ff772873cbf2631d4dadcdGeorge Sapountzis
17450aaabc248c9823106ff772873cbf2631d4dadcdGeorge Sapountzis
175afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
176afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Create an XMesaBuffer from an X window.
177afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
178ede979fcb5ba2c7dacb97535c7abcafdbd95af64Brian Paulextern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v, XMesaWindow w );
179afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
180afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
181afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
182afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Create an XMesaBuffer from an X pixmap.
183afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
184afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v,
185afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg					    XMesaPixmap p,
186ede979fcb5ba2c7dacb97535c7abcafdbd95af64Brian Paul					    XMesaColormap cmap );
187afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
188afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
189afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
190afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Destroy an XMesaBuffer, but not the corresponding window or pixmap.
191afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
192afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void XMesaDestroyBuffer( XMesaBuffer b );
193afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
194afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
195afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
196afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return the XMesaBuffer handle which corresponds to an X drawable, if any.
197afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
198afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * New in Mesa 2.3.
199afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
200afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern XMesaBuffer XMesaFindBuffer( XMesaDisplay *dpy,
201afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				    XMesaDrawable d );
202afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
203afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
204afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
205afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
206afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Bind a buffer to a context and make the context the current one.
207afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
208afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLboolean XMesaMakeCurrent( XMesaContext c,
209afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				   XMesaBuffer b );
210afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
211afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
212afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
2132257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul * Bind two buffers (read and draw) to a context and make the
2142257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul * context the current one.
2152257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul * New in Mesa 3.3
2162257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul */
2172257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paulextern GLboolean XMesaMakeCurrent2( XMesaContext c,
2182257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul                                    XMesaBuffer drawBuffer,
2192257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul                                    XMesaBuffer readBuffer );
2202257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul
2212257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul
2222257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul/*
223f9db0039b161759892e5e9b04334de89ab448811Brian Paul * Unbind the current context from its buffer.
224f9db0039b161759892e5e9b04334de89ab448811Brian Paul */
225f9db0039b161759892e5e9b04334de89ab448811Brian Paulextern GLboolean XMesaUnbindContext( XMesaContext c );
226f9db0039b161759892e5e9b04334de89ab448811Brian Paul
227f9db0039b161759892e5e9b04334de89ab448811Brian Paul
228f9db0039b161759892e5e9b04334de89ab448811Brian Paul/*
229afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return a handle to the current context.
230afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
231afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern XMesaContext XMesaGetCurrentContext( void );
232afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
233afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
234afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
2352257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul * Return handle to the current (draw) buffer.
236afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
237afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern XMesaBuffer XMesaGetCurrentBuffer( void );
238afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
239afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
240afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
2412257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul * Return handle to the current read buffer.
2422257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul * New in Mesa 3.3
2432257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul */
2442257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paulextern XMesaBuffer XMesaGetCurrentReadBuffer( void );
2452257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul
2462257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul
2472257a120133010f42b4d0c3eb78b6a46a579e55bBrian Paul/*
248afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Swap the front and back buffers for the given buffer.  No action is
249afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * taken if the buffer is not double buffered.
250afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
251afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void XMesaSwapBuffers( XMesaBuffer b );
252afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
253afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
254afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
255afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Copy a sub-region of the back buffer to the front buffer.
256afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
257afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * New in Mesa 2.6
258afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
259afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void XMesaCopySubBuffer( XMesaBuffer b,
260afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				int x,
261afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				int y,
262afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				int width,
263afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				int height );
264afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
265afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
266afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
267fab1f07d6ad01463897ae792f4b33738afb07369Jeff Smith * Return a pointer to the Pixmap or XImage being used as the back
268afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * color buffer of an XMesaBuffer.  This function is a way to get "under
269afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * the hood" of X/Mesa so one can manipulate the back buffer directly.
270afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Input:  b - the XMesaBuffer
271afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Output:  pixmap - pointer to back buffer's Pixmap, or 0
272afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *          ximage - pointer to back buffer's XImage, or NULL
273afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return:  GL_TRUE = context is double buffered
274afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *          GL_FALSE = context is single buffered
275afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
276afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLboolean XMesaGetBackBuffer( XMesaBuffer b,
277afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				     XMesaPixmap *pixmap,
278afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				     XMesaImage **ximage );
279afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
280afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
281afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
282afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
283afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return the depth buffer associated with an XMesaBuffer.
284afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Input:  b - the XMesa buffer handle
285afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Output:  width, height - size of buffer in pixels
286afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *          bytesPerValue - bytes per depth value (2 or 4)
287afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *          buffer - pointer to depth buffer values
288afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return:  GL_TRUE or GL_FALSE to indicate success or failure.
289afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
290afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * New in Mesa 2.4.
291afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
292afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLboolean XMesaGetDepthBuffer( XMesaBuffer b,
293afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				      GLint *width,
294afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				      GLint *height,
295afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				      GLint *bytesPerValue,
296afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				      void **buffer );
297afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
298afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
299afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
300afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
301afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Flush/sync a context
302afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
303afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern void XMesaFlush( XMesaContext c );
304afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
305afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
306afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
307afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
308afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Get an X/Mesa-specific string.
309afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Input:  name - either XMESA_VERSION or XMESA_EXTENSIONS
310afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
311afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern const char *XMesaGetString( XMesaContext c, int name );
312afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
313afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
314afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
315afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
316afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Scan for XMesaBuffers whose window/pixmap has been destroyed, then free
317afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * any memory used by that buffer.
318afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
319afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * New in Mesa 2.3.
320afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
32190e227f0791cb585dc4e4e1f71e32c67f5e20436Andy Skinnerextern void XMesaGarbageCollect( XMesaDisplay* dpy );
322afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
323afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
324afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
325afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
326afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return a dithered pixel value.
327afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Input:  c - XMesaContext
328afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         x, y - window coordinate
329afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *         red, green, blue, alpha - color components in [0,1]
330afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return:  pixel value
331afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
332afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * New in Mesa 2.3.
333afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
334afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern unsigned long XMesaDitherColor( XMesaContext xmesa,
335afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				       GLint x,
336afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				       GLint y,
337afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				       GLfloat red,
338afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				       GLfloat green,
339afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				       GLfloat blue,
340afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg				       GLfloat alpha );
341afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
342afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
343afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
344afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/*
345afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * 3Dfx Glide driver only!
346afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Set 3Dfx/Glide full-screen or window rendering mode.
347afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Input:  mode - either XMESA_FX_WINDOW (window rendering mode) or
348afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *                XMESA_FX_FULLSCREEN (full-screen rendering mode)
349afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Return:  GL_TRUE if success
350afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *          GL_FALSE if invalid mode or if not using 3Dfx driver
351afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg *
352afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * New in Mesa 2.6.
353afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */
354afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgextern GLboolean XMesaSetFXmode( GLint mode );
355afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
356afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
357afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
35893c132a058eb44e824615f10cf53f30f2326d807Brian Paul/*
35993c132a058eb44e824615f10cf53f30f2326d807Brian Paul * Reallocate the back/depth/stencil/accum/etc/ buffers associated with
36093c132a058eb44e824615f10cf53f30f2326d807Brian Paul * buffer <b> if its size has changed.
36193c132a058eb44e824615f10cf53f30f2326d807Brian Paul *
36293c132a058eb44e824615f10cf53f30f2326d807Brian Paul * New in Mesa 4.0.2
36393c132a058eb44e824615f10cf53f30f2326d807Brian Paul */
36493c132a058eb44e824615f10cf53f30f2326d807Brian Paulextern void XMesaResizeBuffers( XMesaBuffer b );
36593c132a058eb44e824615f10cf53f30f2326d807Brian Paul
36693c132a058eb44e824615f10cf53f30f2326d807Brian Paul
367fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul
368fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul/*
369fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul * Create a pbuffer.
370fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul * New in Mesa 4.1
371fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul */
372fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paulextern XMesaBuffer XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap,
373fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul                                      unsigned int width, unsigned int height);
374fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul
375fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul
376fa647e8336767654e1f67729b7eca61fbf76ff41Brian Paul
3777ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian/*
3787ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian * Texture from Pixmap
3797ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian * New in Mesa 7.1
3807ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian */
3817ace7cfba43427fc09dec23ac94b5c2b663d58ffBrianextern void
38224d965fab52f790188e5de6e67e7387809b1f145Michel DänzerXMesaBindTexImage(XMesaDisplay *dpy, XMesaBuffer drawable, int buffer,
3837ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian                  const int *attrib_list);
3847ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian
3857ace7cfba43427fc09dec23ac94b5c2b663d58ffBrianextern void
38624d965fab52f790188e5de6e67e7387809b1f145Michel DänzerXMesaReleaseTexImage(XMesaDisplay *dpy, XMesaBuffer drawable, int buffer);
3877ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian
3887ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian
3897ace7cfba43427fc09dec23ac94b5c2b663d58ffBrianextern XMesaBuffer
3907ace7cfba43427fc09dec23ac94b5c2b663d58ffBrianXMesaCreatePixmapTextureBuffer(XMesaVisual v, XMesaPixmap p,
3917ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian                               XMesaColormap cmap,
3927ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian                               int format, int target, int mipmap);
3937ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian
3947ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian
3957ace7cfba43427fc09dec23ac94b5c2b663d58ffBrian
396afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#ifdef __cplusplus
397afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg}
398afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif
399afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
400afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
401afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#endif
402