b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Mesa 3-D graphics library
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Version: 7.1
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Permission is hereby granted, free of charge, to any person obtaining a
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * copy of this software and associated documentation files (the "Software"),
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * to deal in the Software without restriction, including without limitation
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * and/or sell copies of the Software, and to permit persons to whom the
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Software is furnished to do so, subject to the following conditions:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * The above copyright notice and this permission notice shall be included
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * in all copies or substantial portions of the Software.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Mesa/X11 interface. This header file serves as the documentation for
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * the Mesa/X11 interface functions.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Note: this interface isn't intended for user programs. It's primarily
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * just for implementing the pseudo-GLX interface.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* Sample Usage:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncIn addition to the usual X calls to select a visual, create a colormap
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncand create a window, you must do the following to use the X/Mesa interface:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync1. Call XMesaCreateVisual() to make an XMesaVisual from an XVisualInfo.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync2. Call XMesaCreateContext() to create an X/Mesa rendering context, given
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync the XMesaVisual.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync3. Call XMesaCreateWindowBuffer() to create an XMesaBuffer from an X window
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync and XMesaVisual.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync4. Call XMesaMakeCurrent() to bind the XMesaBuffer to an XMesaContext and
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync to make the context the current one.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync5. Make gl* calls to render your graphics.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync6. Use XMesaSwapBuffers() when double buffering to swap front/back buffers.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync7. Before the X window is destroyed, call XMesaDestroyBuffer().
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync8. Before exiting, call XMesaDestroyVisual and XMesaDestroyContext.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync*/
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifndef XMESA_H
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define XMESA_H
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef __VMS
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include <GL/vms_x_fix.h>
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef __cplusplus
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern "C" {
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef XFree86Server
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include "xmesa_xf86.h"
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#else
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include <X11/Xlib.h>
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include <X11/Xutil.h>
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include "xmesa_x.h"
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include "GL/gl.h"
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef AMIWIN
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include <pragmas/xlib_pragmas.h>
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern struct Library *XLibBase;
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define XMESA_MAJOR_VERSION 6
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define XMESA_MINOR_VERSION 3
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Values passed to XMesaGetString:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define XMESA_VERSION 1
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define XMESA_EXTENSIONS 2
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Values passed to XMesaSetFXmode:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define XMESA_FX_WINDOW 1
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define XMESA_FX_FULLSCREEN 2
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef struct xmesa_context *XMesaContext;
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef struct xmesa_visual *XMesaVisual;
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef struct xmesa_buffer *XMesaBuffer;
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Create a new X/Mesa visual.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Input: display - X11 display
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * visinfo - an XVisualInfo pointer
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * rgb_flag - GL_TRUE = RGB mode,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GL_FALSE = color index mode
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * alpha_flag - alpha buffer requested?
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * db_flag - GL_TRUE = double-buffered,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GL_FALSE = single buffered
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * stereo_flag - stereo visual?
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * ximage_flag - GL_TRUE = use an XImage for back buffer,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GL_FALSE = use an off-screen pixmap for back buffer
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * depth_size - requested bits/depth values, or zero
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * stencil_size - requested bits/stencil values, or zero
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * accum_red_size - requested bits/red accum values, or zero
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * accum_green_size - requested bits/green accum values, or zero
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * accum_blue_size - requested bits/blue accum values, or zero
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * accum_alpha_size - requested bits/alpha accum values, or zero
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * num_samples - number of samples/pixel if multisampling, or zero
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * level - visual level, usually 0
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * visualCaveat - ala the GLX extension, usually GLX_NONE_EXT
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return; a new XMesaVisual or 0 if error.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaVisual XMesaCreateVisual( XMesaDisplay *display,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaVisualInfo visinfo,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLboolean rgb_flag,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLboolean alpha_flag,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLboolean db_flag,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLboolean stereo_flag,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLboolean ximage_flag,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint depth_size,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint stencil_size,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_red_size,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_green_size,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_blue_size,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_alpha_size,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint num_samples,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint level,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint visualCaveat );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Destroy an XMesaVisual, but not the associated XVisualInfo.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaDestroyVisual( XMesaVisual v );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Create a new XMesaContext for rendering into an X11 window.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Input: visual - an XMesaVisual
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * share_list - another XMesaContext with which to share display
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * lists or NULL if no sharing is wanted.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return: an XMesaContext or NULL if error.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaContext XMesaCreateContext( XMesaVisual v,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaContext share_list );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Destroy a rendering context as returned by XMesaCreateContext()
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaDestroyContext( XMesaContext c );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef XFree86Server
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * These are the extra routines required for integration with XFree86.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * None of these routines should be user visible. -KEM
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaForceCurrent( XMesaContext c );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaLoseCurrent( XMesaContext c );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaCopyContext( XMesaContext src,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaContext dst,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLuint mask );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif /* XFree86Server */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Create an XMesaBuffer from an X window.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v, XMesaWindow w );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Create an XMesaBuffer from an X pixmap.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaPixmap p,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaColormap cmap );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Destroy an XMesaBuffer, but not the corresponding window or pixmap.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaDestroyBuffer( XMesaBuffer b );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return the XMesaBuffer handle which corresponds to an X drawable, if any.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 2.3.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaBuffer XMesaFindBuffer( XMesaDisplay *dpy,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaDrawable d );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Bind a buffer to a context and make the context the current one.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaMakeCurrent( XMesaContext c,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaBuffer b );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Bind two buffers (read and draw) to a context and make the
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * context the current one.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 3.3
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaMakeCurrent2( XMesaContext c,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaBuffer drawBuffer,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaBuffer readBuffer );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Unbind the current context from its buffer.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaUnbindContext( XMesaContext c );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return a handle to the current context.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaContext XMesaGetCurrentContext( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return handle to the current (draw) buffer.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaBuffer XMesaGetCurrentBuffer( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return handle to the current read buffer.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 3.3
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaBuffer XMesaGetCurrentReadBuffer( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Swap the front and back buffers for the given buffer. No action is
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * taken if the buffer is not double buffered.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaSwapBuffers( XMesaBuffer b );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Copy a sub-region of the back buffer to the front buffer.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 2.6
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaCopySubBuffer( XMesaBuffer b,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync int x,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync int y,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync int width,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync int height );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return a pointer to the the Pixmap or XImage being used as the back
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * color buffer of an XMesaBuffer. This function is a way to get "under
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * the hood" of X/Mesa so one can manipulate the back buffer directly.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Input: b - the XMesaBuffer
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Output: pixmap - pointer to back buffer's Pixmap, or 0
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * ximage - pointer to back buffer's XImage, or NULL
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return: GL_TRUE = context is double buffered
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GL_FALSE = context is single buffered
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaGetBackBuffer( XMesaBuffer b,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaPixmap *pixmap,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaImage **ximage );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return the depth buffer associated with an XMesaBuffer.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Input: b - the XMesa buffer handle
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Output: width, height - size of buffer in pixels
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * bytesPerValue - bytes per depth value (2 or 4)
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * buffer - pointer to depth buffer values
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return: GL_TRUE or GL_FALSE to indicate success or failure.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 2.4.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaGetDepthBuffer( XMesaBuffer b,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint *width,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint *height,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint *bytesPerValue,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync void **buffer );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Flush/sync a context
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaFlush( XMesaContext c );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Get an X/Mesa-specific string.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Input: name - either XMESA_VERSION or XMESA_EXTENSIONS
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern const char *XMesaGetString( XMesaContext c, int name );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Scan for XMesaBuffers whose window/pixmap has been destroyed, then free
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * any memory used by that buffer.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 2.3.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaGarbageCollect( void );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return a dithered pixel value.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Input: c - XMesaContext
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * x, y - window coordinate
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * red, green, blue, alpha - color components in [0,1]
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return: pixel value
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 2.3.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern unsigned long XMesaDitherColor( XMesaContext xmesa,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint x,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint y,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLfloat red,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLfloat green,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLfloat blue,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLfloat alpha );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * 3Dfx Glide driver only!
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Set 3Dfx/Glide full-screen or window rendering mode.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Input: mode - either XMESA_FX_WINDOW (window rendering mode) or
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * XMESA_FX_FULLSCREEN (full-screen rendering mode)
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Return: GL_TRUE if success
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * GL_FALSE if invalid mode or if not using 3Dfx driver
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 2.6.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern GLboolean XMesaSetFXmode( GLint mode );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Reallocate the back/depth/stencil/accum/etc/ buffers associated with
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * buffer <b> if its size has changed.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 4.0.2
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void XMesaResizeBuffers( XMesaBuffer b );
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Create a pbuffer.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 4.1
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaBuffer XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync unsigned int width, unsigned int height);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Texture from Pixmap
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * New in Mesa 7.1
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncXMesaBindTexImage(XMesaDisplay *dpy, XMesaBuffer drawable, int buffer,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync const int *attrib_list);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern void
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncXMesaReleaseTexImage(XMesaDisplay *dpy, XMesaBuffer drawable, int buffer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern XMesaBuffer
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncXMesaCreatePixmapTextureBuffer(XMesaVisual v, XMesaPixmap p,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync XMesaColormap cmap,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync int format, int target, int mipmap);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef __cplusplus
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync}
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif