-/* $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.
*
#endif
-#include "GL/gl.h"
+#include <GL/gl.h>
#define OSMESA_MAJOR_VERSION 3
-#define OSMESA_MINOR_VERSION 3
+#define OSMESA_MINOR_VERSION 5
* 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 );
* 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 );
/*
* Return the current Off-Screen Mesa rendering context handle.
*/
-GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void );
+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 );
* 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 );
*
* 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 );
+
/*
*
* 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__)
-/* $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
*/
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;
}
else if (format==OSMESA_RGBA) {
indexBits = 0;
+ redBits = 8;
+ greenBits = 8;
+ blueBits = 8;
alphaBits = 8;
if (little_endian) {
rshift = 0;
}
else if (format==OSMESA_BGRA) {
indexBits = 0;
+ redBits = 8;
+ greenBits = 8;
+ blueBits = 8;
alphaBits = 8;
if (little_endian) {
ashift = 0;
}
else if (format==OSMESA_ARGB) {
indexBits = 0;
+ redBits = 8;
+ greenBits = 8;
+ blueBits = 8;
alphaBits = 8;
if (little_endian) {
bshift = 0;
}
else if (format==OSMESA_RGB) {
indexBits = 0;
+ redBits = 8;
+ greenBits = 8;
+ blueBits = 8;
alphaBits = 0;
bshift = 0;
gshift = 8;
}
else if (format==OSMESA_BGR) {
indexBits = 0;
+ redBits = 8;
+ greenBits = 8;
+ blueBits = 8;
alphaBits = 0;
bshift = 0;
gshift = 8;
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;
+
/*
* Destroy an Off-Screen Mesa rendering context.
*