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