b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* uglmesa.h - Public header UGL/Mesa */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/* Copyright (C) 2001 by Wind River Systems, Inc */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Mesa 3-D graphics library
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Version: 4.0
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * The MIT License
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 * THE AUTHORS OR COPYRIGHT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * DEALINGS IN THE SOFTWARE.
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Author:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Stephane Raimbault <stephane.raimbault@windriver.com>
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifndef UGLMESA_H
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGLMESA_H
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef __cplusplus
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncextern "C" {
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_MAJOR_VERSION 4
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_MINOR_VERSION 0
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include <GL/gl.h>
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#include <ugl/ugl.h>
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Values for display mode of uglMesaCreateContext ()
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * With these mask values, it's possible to test double buffer mode
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * with UGL_MESA_DOUBLE mask
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * SINGLE 0000 0001
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * DOUBLE 0000 0110
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * - SOFT 0000 0010
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * - HARD 0000 0100
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * WINDML 0001 0000
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync *
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_SINGLE 0x01
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DOUBLE 0x06
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DOUBLE_SOFTWARE 0x02
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DOUBLE_HARDWARE 0x04
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_WINDML_EXCLUSIVE 0x10
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_FULLSCREEN_WIDTH 0x0
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_FULLSCREEN_HEIGHT 0x0
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * uglMesaPixelStore() parameters:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_ROW_LENGTH 0x20
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_Y_UP 0x21
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * Accepted by uglMesaGetIntegerv:
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_LEFT_X 0x01
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_TOP_Y 0x02
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_WIDTH 0x03
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_HEIGHT 0x04
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DISPLAY_WIDTH 0x05
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DISPLAY_HEIGHT 0x06
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_COLOR_FORMAT 0x07
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_COLOR_MODEL 0x08
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_PIXEL_FORMAT 0x09
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_TYPE 0x0A
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_RGB 0x0B
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_COLOR_INDEXED 0x0C
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_SINGLE_BUFFER 0x0D
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DOUBLE_BUFFER 0x0E
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DOUBLE_BUFFER_SOFTWARE 0x0F
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#define UGL_MESA_DOUBLE_BUFFER_HARDWARE 0x10
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync/*
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync * typedefs
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync */
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsynctypedef struct uglMesaContext * UGL_MESA_CONTEXT;
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncUGL_MESA_CONTEXT uglMesaCreateNewContext (GLenum mode,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync UGL_MESA_CONTEXT share_list);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncUGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum mode,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint depth_bits,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint stencil_bits,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_red_bits,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_green_bits,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_blue_bits,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint accum_alpha_bits,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync UGL_MESA_CONTEXT share_list);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaMakeCurrentContext (UGL_MESA_CONTEXT umc,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLsizei left, GLsizei top,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLsizei width, GLsizei height);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaMoveWindow (GLsizei dx, GLsizei dy);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaMoveToWindow (GLsizei left, GLsizei top);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaResizeWindow (GLsizei dw, GLsizei dh);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaResizeToWindow (GLsizei width, GLsizei height);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncvoid uglMesaDestroyContext (void);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncUGL_MESA_CONTEXT uglMesaGetCurrentContext (void);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncvoid uglMesaSwapBuffers (void);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncvoid uglMesaPixelStore (GLint pname, GLint value);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncvoid uglMesaGetIntegerv (GLint pname, GLint *value);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaGetDepthBuffer (GLint *width, GLint *height,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint *bytesPerValue, void **buffer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaGetColorBuffer (GLint *width, GLint *height,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLint *format, void **buffer);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsyncGLboolean uglMesaSetColor (GLubyte index, GLfloat red,
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync GLfloat green, GLfloat blue);
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#ifdef __cplusplus
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync}
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync
b8014c3bbb8a0f9d16e82278eabba771cbfd9b2evboxsync#endif