added OSMesaCreateContextExt()
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 8 Sep 2000 16:41:38 +0000 (16:41 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 8 Sep 2000 16:41:38 +0000 (16:41 +0000)
include/GL/osmesa.h
src/mesa/drivers/osmesa/osmesa.c

index 9746d74f919c5a16b4b96f64b728f8244f9e9242..4af2c69c4e30f9f51c7ebf9334e63ee0819e1733 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: osmesa.h,v 1.5 2000/03/28 16:59:39 rjfrank Exp $ */
+/* $Id: osmesa.h,v 1.6 2000/09/08 16:41:38 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.3
+ * Version:  3.5
  * 
  * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
  * 
@@ -59,11 +59,11 @@ extern "C" {
 #endif
 
 
-#include "GL/gl.h"
+#include <GL/gl.h>
 
 
 #define OSMESA_MAJOR_VERSION 3
-#define OSMESA_MINOR_VERSION 3
+#define OSMESA_MINOR_VERSION 5
 
 
 
@@ -114,18 +114,31 @@ typedef struct osmesa_context *OSMesaContext;
  *                     display lists.  NULL indicates no sharing.
  * Return:  an OSMesaContext or 0 if error
  */
-GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format,
-                                                    OSMesaContext sharelist );
+GLAPI OSMesaContext GLAPIENTRY
+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 GLAPIENTRY
+OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
+                        GLint accumBits, OSMesaContext sharelist);
+
 
 /*
  * Destroy an Off-Screen Mesa rendering context.
  *
  * Input:  ctx - the context to destroy
  */
-GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx );
+GLAPI void GLAPIENTRY
+OSMesaDestroyContext( OSMesaContext ctx );
 
 
 
@@ -156,9 +169,9 @@ GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx );
  *          invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
  *          width>internal limit or height>internal limit.
  */
-GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx,
-                                              void *buffer, GLenum type,
-                                              GLsizei width, GLsizei height );
+GLAPI GLboolean GLAPIENTRY
+OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
+                   GLsizei width, GLsizei height );
 
 
 
@@ -166,7 +179,8 @@ GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx,
 /*
  * Return the current Off-Screen Mesa rendering context handle.
  */
-GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void );
+GLAPI OSMesaContext GLAPIENTRY
+OSMesaGetCurrentContext( void );
 
 
 
@@ -183,7 +197,8 @@ GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void );
  *
  * New in version 2.0.
  */
-GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value );
+GLAPI void GLAPIENTRY
+OSMesaPixelStore( GLint pname, GLint value );
 
 
 
@@ -198,7 +213,8 @@ GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value );
  *                 OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction
  *         value - pointer to integer in which to return result.
  */
-GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value );
+GLAPI void GLAPIENTRY
+OSMesaGetIntegerv( GLint pname, GLint *value );
 
 
 
@@ -212,10 +228,10 @@ GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value );
  *
  * New in Mesa 2.4.
  */
-GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c,
-                                                 GLint *width, GLint *height,
-                                                 GLint *bytesPerValue,
-                                                 void **buffer );
+GLAPI GLboolean GLAPIENTRY
+OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height,
+                      GLint *bytesPerValue, void **buffer );
+
 
 
 /*
@@ -228,10 +244,10 @@ GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c,
  *
  * New in Mesa 3.3.
  */
-GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c,
-                                                 GLint *width, GLint *height,
-                                                 GLint *format,
-                                                 void **buffer );
+GLAPI GLboolean GLAPIENTRY
+OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height,
+                      GLint *format, void **buffer );
+
 
 
 #if defined(__BEOS__) || defined(__QUICKDRAW__)
index 56059607118e81e0ac8020793c0312a80d7296cf..7f79a1f272eadf8d21e40ae7d47287c46dc1b2fd 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: osmesa.c,v 1.19 2000/06/27 21:42:14 brianp Exp $ */
+/* $Id: osmesa.c,v 1.20 2000/09/08 16:41:39 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -99,11 +99,26 @@ static void osmesa_update_state( GLcontext *ctx );
  */
 OSMesaContext GLAPIENTRY
 OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
+{
+   return OSMesaCreateContextExt(format, DEFAULT_SOFTWARE_DEPTH_BITS,
+                                 8, 16, sharelist);
+}
+
+
+
+/*
+ * New in Mesa 3.5
+ *
+ * Create context and specify size of ancillary buffers.
+ */
+OSMesaContext GLAPIENTRY
+OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
+                        GLint accumBits, OSMesaContext sharelist )
 {
    OSMesaContext osmesa;
    GLint rshift, gshift, bshift, ashift;
    GLint rind, gind, bind;
-   GLint indexBits, alphaBits;
+   GLint indexBits, redBits, greenBits, blueBits, alphaBits;
    GLboolean rgbmode;
    GLboolean swalpha;
    GLuint i4 = 1;
@@ -119,6 +134,9 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
    }
    else if (format==OSMESA_RGBA) {
       indexBits = 0;
+      redBits = 8;
+      greenBits = 8;
+      blueBits = 8;
       alphaBits = 8;
       if (little_endian) {
          rshift = 0;
@@ -136,6 +154,9 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
    }
    else if (format==OSMESA_BGRA) {
       indexBits = 0;
+      redBits = 8;
+      greenBits = 8;
+      blueBits = 8;
       alphaBits = 8;
       if (little_endian) {
          ashift = 0;
@@ -153,6 +174,9 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
    }
    else if (format==OSMESA_ARGB) {
       indexBits = 0;
+      redBits = 8;
+      greenBits = 8;
+      blueBits = 8;
       alphaBits = 8;
       if (little_endian) {
          bshift = 0;
@@ -170,6 +194,9 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
    }
    else if (format==OSMESA_RGB) {
       indexBits = 0;
+      redBits = 8;
+      greenBits = 8;
+      blueBits = 8;
       alphaBits = 0;
       bshift = 0;
       gshift = 8;
@@ -183,6 +210,9 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
    }
    else if (format==OSMESA_BGR) {
       indexBits = 0;
+      redBits = 8;
+      greenBits = 8;
+      blueBits = 8;
       alphaBits = 0;
       bshift = 0;
       gshift = 8;
@@ -201,15 +231,22 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
 
    osmesa = (OSMesaContext) CALLOC_STRUCT(osmesa_context);
    if (osmesa) {
-      osmesa->gl_visual = gl_create_visual( rgbmode,
-                                            swalpha,    /* software alpha */
-                                            GL_FALSE,  /* double buffer */
-                                            GL_FALSE,  /* stereo */
-                                            DEFAULT_SOFTWARE_DEPTH_BITS,
-                                            STENCIL_BITS,
-                                            rgbmode ? ACCUM_BITS : 0,
-                                            indexBits,
-                                            8, 8, 8, alphaBits );
+      osmesa->gl_visual = _mesa_create_visual( rgbmode,
+                                               GL_FALSE,    /* double buffer */
+                                               GL_FALSE,    /* stereo */
+                                               redBits,
+                                               greenBits,
+                                               blueBits,
+                                               alphaBits,
+                                               indexBits,
+                                               depthBits,
+                                               stencilBits,
+                                               accumBits,
+                                               accumBits,
+                                               accumBits,
+                                               alphaBits ? accumBits : 0,
+                                               1            /* num samples */
+                                               );
       if (!osmesa->gl_visual) {
          FREE(osmesa);
          return NULL;
@@ -262,6 +299,7 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
 
 
 
+
 /*
  * Destroy an Off-Screen Mesa rendering context.
  *