summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2000-09-08 16:41:38 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2000-09-08 16:41:38 +0000
commit2bf5d9470d3232763cb49b5589209940d4d5398d (patch)
treedc796cd55d36b1f4bc9db0bef8e8b82c6d310f57
parent8ad306baf6b9cbc956dfba9ae11af2b1d45c8788 (diff)
added OSMesaCreateContextExt()
-rw-r--r--include/GL/osmesa.h58
-rw-r--r--src/mesa/drivers/osmesa/osmesa.c60
2 files changed, 86 insertions, 32 deletions
diff --git a/include/GL/osmesa.h b/include/GL/osmesa.h
index 9746d74f91..4af2c69c4e 100644
--- a/include/GL/osmesa.h
+++ b/include/GL/osmesa.h
@@ -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__)
diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c
index 5605960711..7f79a1f272 100644
--- a/src/mesa/drivers/osmesa/osmesa.c
+++ b/src/mesa/drivers/osmesa/osmesa.c
@@ -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
@@ -100,10 +100,25 @@ 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.
*