Edit

IABSD.fr/xenocara/lib/mesa/include/GL/osmesa.h

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2025-06-05 11:23:11
    Hash : 67d6f117
    Message : Import Mesa 25.0.7

  • lib/mesa/include/GL/osmesa.h
  • /*
     * Mesa 3-D graphics library
     * 
     * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
     * 
     * Permission is hereby granted, free of charge, to any person obtaining a
     * copy of this software and associated documentation files (the "Software"),
     * to deal in the Software without restriction, including without limitation
     * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     * and/or sell copies of the Software, and to permit persons to whom the
     * Software is furnished to do so, subject to the following conditions:
     * 
     * The above copyright notice and this permission notice shall be included
     * in all copies or substantial portions of the Software.
     * 
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
     * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     * OTHER DEALINGS IN THE SOFTWARE.
     */
    
    
    /*
     * Mesa Off-Screen rendering interface.
     *
     * This is an operating system and window system independent interface to
     * Mesa which allows one to render images into a client-supplied buffer in
     * main memory.  Such images may manipulated or saved in whatever way the
     * client wants.
     *
     * These are the API functions:
     *   OSMesaCreateContext - create a new Off-Screen Mesa rendering context
     *   OSMesaMakeCurrent - bind an OSMesaContext to a client's image buffer
     *                       and make the specified context the current one.
     *   OSMesaDestroyContext - destroy an OSMesaContext
     *   OSMesaGetCurrentContext - return thread's current context ID
     *   OSMesaPixelStore - controls how pixels are stored in image buffer
     *   OSMesaGetIntegerv - return OSMesa state parameters
     *
     *
     * The limits on the width and height of an image buffer can be retrieved
     * via OSMesaGetIntegerv(OSMESA_MAX_WIDTH/OSMESA_MAX_HEIGHT).
     */
    
    
    #ifndef OSMESA_H
    #define OSMESA_H
    
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    
    #include <GL/gl.h>
    
    
    #define OSMESA_MAJOR_VERSION 11
    #define OSMESA_MINOR_VERSION 2
    #define OSMESA_PATCH_VERSION 0
    
    
    
    /*
     * Values for the format parameter of OSMesaCreateContext()
     * New in version 2.0.
     */
    #define OSMESA_COLOR_INDEX	GL_COLOR_INDEX
    #define OSMESA_RGBA		GL_RGBA
    #define OSMESA_BGRA		0x1
    #define OSMESA_ARGB		0x2
    #define OSMESA_RGB		GL_RGB
    #define OSMESA_BGR		0x4
    #define OSMESA_RGB_565		0x5
    
    
    /*
     * OSMesaPixelStore() parameters:
     * New in version 2.0.
     */
    #define OSMESA_ROW_LENGTH	0x10
    #define OSMESA_Y_UP		0x11
    
    
    /*
     * Accepted by OSMesaGetIntegerv:
     */
    #define OSMESA_WIDTH		0x20
    #define OSMESA_HEIGHT		0x21
    #define OSMESA_FORMAT		0x22
    #define OSMESA_TYPE		0x23
    #define OSMESA_MAX_WIDTH	0x24  /* new in 4.0 */
    #define OSMESA_MAX_HEIGHT	0x25  /* new in 4.0 */
    
    /*
     * Accepted in OSMesaCreateContextAttrib's attribute list.
     */
    #define OSMESA_DEPTH_BITS            0x30
    #define OSMESA_STENCIL_BITS          0x31
    #define OSMESA_ACCUM_BITS            0x32
    #define OSMESA_PROFILE               0x33
    #define OSMESA_CORE_PROFILE          0x34
    #define OSMESA_COMPAT_PROFILE        0x35
    #define OSMESA_CONTEXT_MAJOR_VERSION 0x36
    #define OSMESA_CONTEXT_MINOR_VERSION 0x37
    
    
    typedef struct osmesa_context *OSMesaContext;
    
    
    /*
     * Create an Off-Screen Mesa rendering context.  The only attribute needed is
     * an RGBA vs Color-Index mode flag.
     *
     * Input:  format - one of OSMESA_COLOR_INDEX, OSMESA_RGBA, OSMESA_BGRA,
     *                  OSMESA_ARGB, OSMESA_RGB, or OSMESA_BGR.
     *         sharelist - specifies another OSMesaContext with which to share
     *                     display lists.  NULL indicates no sharing.
     * Return:  an OSMesaContext or 0 if error
     */
    GLAPI OSMesaContext APIENTRY
    OSMesaCreateContext( GLenum format, OSMesaContext sharelist );
    
    
    
    /*
     * Create an Off-Screen Mesa rendering context and specify desired
     * size of depth buffer, stencil buffer and accumulation buffer.
     * If you specify zero for depthBits, stencilBits, accumBits you
     * can save some memory.
     *
     * New in Mesa 3.5
     */
    GLAPI OSMesaContext APIENTRY
    OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
                            GLint accumBits, OSMesaContext sharelist);
    
    
    /*
     * Create an Off-Screen Mesa rendering context with attribute list.
     * The list is composed of (attribute, value) pairs and terminated with
     * attribute==0.  Supported Attributes:
     *
     * Attributes                    Values
     * --------------------------------------------------------------------------
     * OSMESA_FORMAT                 OSMESA_RGBA*, OSMESA_BGRA, OSMESA_ARGB, etc.
     * OSMESA_DEPTH_BITS             0*, 16, 24, 32
     * OSMESA_STENCIL_BITS           0*, 8
     * OSMESA_ACCUM_BITS             0*, 16
     * OSMESA_PROFILE                OSMESA_COMPAT_PROFILE*, OSMESA_CORE_PROFILE
     * OSMESA_CONTEXT_MAJOR_VERSION  1*, 2, 3
     * OSMESA_CONTEXT_MINOR_VERSION  0+
     *
     * Note: * = default value
     *
     * We return a context version >= what's specified by OSMESA_CONTEXT_MAJOR/
     * MINOR_VERSION for the given profile.  For example, if you request a GL 1.4
     * compat profile, you might get a GL 3.0 compat profile.
     * Otherwise, null is returned if the version/profile is not supported.
     *
     * New in Mesa 11.2
     */
    GLAPI OSMesaContext APIENTRY
    OSMesaCreateContextAttribs( const int *attribList, OSMesaContext sharelist );
    
    
    
    /*
     * Destroy an Off-Screen Mesa rendering context.
     *
     * Input:  ctx - the context to destroy
     */
    GLAPI void APIENTRY
    OSMesaDestroyContext( OSMesaContext ctx );
    
    
    
    /*
     * Bind an OSMesaContext to an image buffer.  The image buffer is just a
     * block of memory which the client provides.  Its size must be at least
     * as large as width*height*sizeof(type).  Its address should be a multiple
     * of 4 if using RGBA mode.
     *
     * Image data is stored in the order of glDrawPixels:  row-major order
     * with the lower-left image pixel stored in the first array position
     * (ie. bottom-to-top).
     *
     * Since the only type initially supported is GL_UNSIGNED_BYTE, if the
     * context is in RGBA mode, each pixel will be stored as a 4-byte RGBA
     * value.  If the context is in color indexed mode, each pixel will be
     * stored as a 1-byte value.
     *
     * If the context's viewport hasn't been initialized yet, it will now be
     * initialized to (0,0,width,height).
     *
     * Input:  ctx - the rendering context
     *         buffer - the image buffer memory
     *         type - data type for pixel components, only GL_UNSIGNED_BYTE
     *                supported now
     *         width, height - size of image buffer in pixels, at least 1
     * Return:  GL_TRUE if success, GL_FALSE if error because of invalid ctx,
     *          invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
     *          width>internal limit or height>internal limit.
     */
    GLAPI GLboolean APIENTRY
    OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
                       GLsizei width, GLsizei height );
    
    
    
    
    /*
     * Return the current Off-Screen Mesa rendering context handle.
     */
    GLAPI OSMesaContext APIENTRY
    OSMesaGetCurrentContext( void );
    
    
    
    /*
     * Set pixel store/packing parameters for the current context.
     * This is similar to glPixelStore.
     * Input:  pname - OSMESA_ROW_LENGTH
     *                    specify actual pixels per row in image buffer
     *                    0 = same as image width (default)
     *                 OSMESA_Y_UP
     *                    zero = Y coordinates increase downward
     *                    non-zero = Y coordinates increase upward (default)
     *         value - the value for the parameter pname
     *
     * New in version 2.0.
     */
    GLAPI void APIENTRY
    OSMesaPixelStore( GLint pname, GLint value );
    
    
    
    /*
     * Return an integer value like glGetIntegerv.
     * Input:  pname -
     *                 OSMESA_WIDTH  return current image width
     *                 OSMESA_HEIGHT  return current image height
     *                 OSMESA_FORMAT  return image format
     *                 OSMESA_TYPE  return color component data type
     *                 OSMESA_ROW_LENGTH return row length in pixels
     *                 OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction
     *         value - pointer to integer in which to return result.
     */
    GLAPI void APIENTRY
    OSMesaGetIntegerv( GLint pname, GLint *value );
    
    
    
    /*
     * Return the depth buffer associated with an OSMesa context.
     * Input:  c - the OSMesa context
     * Output:  width, height - size of buffer in pixels
     *          bytesPerValue - bytes per depth value (2 or 4)
     *          buffer - pointer to depth buffer values
     * Return:  GL_TRUE or GL_FALSE to indicate success or failure.
     *
     * New in Mesa 2.4.
     */
    GLAPI GLboolean APIENTRY
    OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height,
                          GLint *bytesPerValue, void **buffer );
    
    
    
    /*
     * Return the color buffer associated with an OSMesa context.
     * Input:  c - the OSMesa context
     * Output:  width, height - size of buffer in pixels
     *          format - buffer format (OSMESA_FORMAT)
     *          buffer - pointer to depth buffer values
     * Return:  GL_TRUE or GL_FALSE to indicate success or failure.
     *
     * New in Mesa 3.3.
     */
    GLAPI GLboolean APIENTRY
    OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height,
                          GLint *format, void **buffer );
    
    
    
    /**
     * This typedef is new in Mesa 6.3.
     */
    typedef void (*OSMESAproc)();
    
    
    /*
     * Return pointer to the named function.
     * New in Mesa 4.1
     * Return OSMESAproc in 6.3.
     */
    GLAPI OSMESAproc APIENTRY
    OSMesaGetProcAddress( const char *funcName );
    
    
    
    /**
     * Enable/disable color clamping, off by default.
     * New in Mesa 6.4.2
     */
    GLAPI void APIENTRY
    OSMesaColorClamp(GLboolean enable);
    
    
    /**
     * Enable/disable Gallium post-process filters.
     * This should be called after a context is created, but before it is
     * made current for the first time.  After a context has been made
     * current, this function has no effect.
     * If the enable_value param is zero, the filter is disabled.  Otherwise
     * the filter is enabled, and the value may control the filter's quality.
     * New in Mesa 10.0
     */
    GLAPI void APIENTRY
    OSMesaPostprocess(OSMesaContext osmesa, const char *filter,
                      unsigned enable_value);
    
    
    #ifdef __cplusplus
    }
    #endif
    
    
    #endif