Implemented support for the HP occlusion test extension (osmesa and X)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: gl.h,v 1.35 2000/03/23 16:54:50 brianp Exp $ */
|
/* $Id: gl.h,v 1.36 2000/03/28 16:59:39 rjfrank Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -2095,6 +2095,16 @@ GLAPI void GLAPIENTRY glUnlockArraysEXT( void );
|
|||||||
|
|
||||||
#endif /* GL_EXT_compiled_vertex_array */
|
#endif /* GL_EXT_compiled_vertex_array */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 137. GL_HP_occlusion_test
|
||||||
|
*/
|
||||||
|
#ifndef GL_HP_occlusion_test
|
||||||
|
#define GL_HP_occlusion_test 1
|
||||||
|
|
||||||
|
#define GL_OCCLUSION_TEST_HP 0x8165
|
||||||
|
#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
|
||||||
|
|
||||||
|
#endif /* GL_HP_occlusion_test */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: osmesa.h,v 1.4 2000/01/18 17:29:18 brianp Exp $ */
|
/* $Id: osmesa.h,v 1.5 2000/03/28 16:59:39 rjfrank Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -96,15 +96,6 @@ extern "C" {
|
|||||||
#define OSMESA_TYPE 0x23
|
#define OSMESA_TYPE 0x23
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Accepted by OSMesaGetBooleanv:
|
|
||||||
* New in version 3.3
|
|
||||||
*/
|
|
||||||
/* This is based on the HP proposed extension */
|
|
||||||
#define OSMESA_OCCLUSION_TEST_RESULT_HP 0x30
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct osmesa_context *OSMesaContext;
|
typedef struct osmesa_context *OSMesaContext;
|
||||||
|
|
||||||
|
|
||||||
@@ -211,16 +202,6 @@ GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value );
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return a boolean value like glGetBooleanv.
|
|
||||||
* Input: pname -
|
|
||||||
* OSMESA_OCCLUSION_TEST_RESULT_HP return current test result
|
|
||||||
* value - pointer to boolean in which to return result.
|
|
||||||
*/
|
|
||||||
GLAPI void GLAPIENTRY OSMesaGetBooleanv( GLint pname, GLboolean *value );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the depth buffer associated with an OSMesa context.
|
* Return the depth buffer associated with an OSMesa context.
|
||||||
* Input: c - the OSMesa context
|
* Input: c - the OSMesa context
|
||||||
@@ -237,6 +218,20 @@ GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c,
|
|||||||
void **buffer );
|
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 GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c,
|
||||||
|
GLint *width, GLint *height,
|
||||||
|
GLint *format,
|
||||||
|
void **buffer );
|
||||||
|
|
||||||
|
|
||||||
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: gears.c,v 1.2 1999/10/21 16:39:06 brianp Exp $ */
|
/* $Id: gears.c,v 1.3 2000/03/28 16:59:39 rjfrank Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 3-D gear wheels. This program is in the public domain.
|
* 3-D gear wheels. This program is in the public domain.
|
||||||
@@ -14,6 +14,9 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: gears.c,v $
|
* $Log: gears.c,v $
|
||||||
|
* Revision 1.3 2000/03/28 16:59:39 rjfrank
|
||||||
|
* Implemented support for the HP occlusion test extension (osmesa and X)
|
||||||
|
*
|
||||||
* Revision 1.2 1999/10/21 16:39:06 brianp
|
* Revision 1.2 1999/10/21 16:39:06 brianp
|
||||||
* added -info command line option
|
* added -info command line option
|
||||||
*
|
*
|
||||||
@@ -178,12 +181,14 @@ gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
|
static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
|
||||||
static GLint gear1, gear2, gear3;
|
static GLint gear1, gear2, gear3, gear3box;
|
||||||
static GLfloat angle = 0.0;
|
static GLfloat angle = 0.0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
draw(void)
|
draw(void)
|
||||||
{
|
{
|
||||||
|
GLboolean bRet = GL_TRUE;
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
@@ -206,7 +211,20 @@ draw(void)
|
|||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(-3.1, 4.2, 0.0);
|
glTranslatef(-3.1, 4.2, 0.0);
|
||||||
glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0);
|
glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0);
|
||||||
glCallList(gear3);
|
|
||||||
|
#ifdef GL_HP_occlusion_test
|
||||||
|
glDepthMask(GL_FALSE);
|
||||||
|
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);
|
||||||
|
glEnable(GL_OCCLUSION_TEST_HP);
|
||||||
|
glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP,&bRet);
|
||||||
|
glCallList(gear3box);
|
||||||
|
glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP,&bRet);
|
||||||
|
glDepthMask(GL_TRUE);
|
||||||
|
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
|
||||||
|
glDisable(GL_OCCLUSION_TEST_HP);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (bRet) glCallList(gear3);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
@@ -305,6 +323,16 @@ init(int argc, char *argv[])
|
|||||||
{0.0, 0.8, 0.2, 1.0};
|
{0.0, 0.8, 0.2, 1.0};
|
||||||
static GLfloat blue[4] =
|
static GLfloat blue[4] =
|
||||||
{0.2, 0.2, 1.0, 1.0};
|
{0.2, 0.2, 1.0, 1.0};
|
||||||
|
static float cube[8][3] = {
|
||||||
|
{-2.35,-2.35,-0.5},
|
||||||
|
{ 2.35,-2.35,-0.5},
|
||||||
|
{ 2.35, 2.35,-0.5},
|
||||||
|
{-2.35, 2.35,-0.5},
|
||||||
|
{-2.35,-2.35, 0.5},
|
||||||
|
{ 2.35,-2.35, 0.5},
|
||||||
|
{ 2.35, 2.35, 0.5},
|
||||||
|
{-2.35, 2.35, 0.5},
|
||||||
|
};
|
||||||
|
|
||||||
glLightfv(GL_LIGHT0, GL_POSITION, pos);
|
glLightfv(GL_LIGHT0, GL_POSITION, pos);
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
@@ -331,6 +359,26 @@ init(int argc, char *argv[])
|
|||||||
gear(1.3, 2.0, 0.5, 10, 0.7);
|
gear(1.3, 2.0, 0.5, 10, 0.7);
|
||||||
glEndList();
|
glEndList();
|
||||||
|
|
||||||
|
gear3box = glGenLists(1);
|
||||||
|
glNewList(gear3box, GL_COMPILE);
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glVertex3fv(cube[3]); glVertex3fv(cube[2]);
|
||||||
|
glVertex3fv(cube[1]); glVertex3fv(cube[0]);
|
||||||
|
glVertex3fv(cube[4]); glVertex3fv(cube[5]);
|
||||||
|
glVertex3fv(cube[6]); glVertex3fv(cube[7]);
|
||||||
|
glVertex3fv(cube[0]); glVertex3fv(cube[1]);
|
||||||
|
glVertex3fv(cube[5]); glVertex3fv(cube[4]);
|
||||||
|
glVertex3fv(cube[1]); glVertex3fv(cube[2]);
|
||||||
|
glVertex3fv(cube[6]); glVertex3fv(cube[5]);
|
||||||
|
glVertex3fv(cube[2]); glVertex3fv(cube[3]);
|
||||||
|
glVertex3fv(cube[7]); glVertex3fv(cube[6]);
|
||||||
|
glVertex3fv(cube[3]); glVertex3fv(cube[0]);
|
||||||
|
glVertex3fv(cube[4]); glVertex3fv(cube[7]);
|
||||||
|
glEnd();
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glEndList();
|
||||||
|
|
||||||
glEnable(GL_NORMALIZE);
|
glEnable(GL_NORMALIZE);
|
||||||
|
|
||||||
if (argc > 1 && strcmp(argv[1], "-info")==0) {
|
if (argc > 1 && strcmp(argv[1], "-info")==0) {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: osdemo.c,v 1.3 2000/03/06 23:56:21 brianp Exp $ */
|
/* $Id: osdemo.c,v 1.4 2000/03/28 16:59:39 rjfrank Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Demo of off-screen Mesa rendering
|
* Demo of off-screen Mesa rendering
|
||||||
@@ -75,24 +75,26 @@ static void render_image( void )
|
|||||||
glutSolidCone(1.0, 2.0, 16, 1);
|
glutSolidCone(1.0, 2.0, 16, 1);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
#ifdef OSMESA_OCCLUSION_TEST_RESULT_HP
|
#ifdef GL_HP_occlusion_test
|
||||||
{
|
{
|
||||||
GLboolean bRet;
|
GLboolean bRet;
|
||||||
OSMesaGetBooleanv(OSMESA_OCCLUSION_TEST_RESULT_HP,&bRet);
|
|
||||||
glDepthMask(GL_FALSE);
|
glDepthMask(GL_FALSE);
|
||||||
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);
|
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);
|
||||||
|
glEnable(GL_OCCLUSION_TEST_HP);
|
||||||
|
glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP,&bRet);
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(0.75, 0.0, -1.0);
|
glTranslatef(0.75, 0.0, -1.0);
|
||||||
glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue_mat );
|
glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue_mat );
|
||||||
glutSolidSphere(1.0, 20, 20);
|
glutSolidSphere(1.0, 20, 20);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
OSMesaGetBooleanv(OSMESA_OCCLUSION_TEST_RESULT_HP,&bRet);
|
glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP,&bRet);
|
||||||
printf("Occlusion test 1 (result should be 1): %d\n",bRet);
|
printf("Occlusion test 1 (result should be 1): %d\n",bRet);
|
||||||
|
|
||||||
glDepthMask(GL_TRUE);
|
glDepthMask(GL_TRUE);
|
||||||
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
|
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
|
||||||
|
glDisable(GL_OCCLUSION_TEST_HP);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -102,26 +104,28 @@ static void render_image( void )
|
|||||||
glutSolidSphere(1.0, 20, 20);
|
glutSolidSphere(1.0, 20, 20);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
#ifdef OSMESA_OCCLUSION_TEST_RESULT_HP
|
#ifdef GL_HP_occlusion_test
|
||||||
{
|
{
|
||||||
GLboolean bRet;
|
GLboolean bRet;
|
||||||
|
|
||||||
OSMesaGetBooleanv(OSMESA_OCCLUSION_TEST_RESULT_HP,&bRet);
|
|
||||||
glDepthMask(GL_FALSE);
|
glDepthMask(GL_FALSE);
|
||||||
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);
|
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);
|
||||||
|
glEnable(GL_OCCLUSION_TEST_HP);
|
||||||
|
glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP,&bRet);
|
||||||
|
|
||||||
/* draw a sphere inside the previous sphere */
|
/* draw a sphere inside the previous sphere */
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(0.75, 0.0, -1.0);
|
glTranslatef(0.75, 0.0, -1.0);
|
||||||
glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue_mat );
|
glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue_mat );
|
||||||
glutSolidSphere(0.5, 20, 20);
|
glutSolidSphere(0.5, 20, 20);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
OSMesaGetBooleanv(OSMESA_OCCLUSION_TEST_RESULT_HP,&bRet);
|
glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP,&bRet);
|
||||||
printf("Occlusion test 2 (result should be 0): %d\n",bRet);
|
printf("Occlusion test 2 (result should be 0): %d\n",bRet);
|
||||||
|
|
||||||
glDepthMask(GL_TRUE);
|
glDepthMask(GL_TRUE);
|
||||||
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
|
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
|
||||||
|
glDisable(GL_OCCLUSION_TEST_HP);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: osmesa.c,v 1.11 2000/03/17 15:32:29 brianp Exp $ */
|
/* $Id: osmesa.c,v 1.12 2000/03/28 16:59:39 rjfrank Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -47,6 +47,7 @@
|
|||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "vb.h"
|
#include "vb.h"
|
||||||
|
#include "extensions.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -74,7 +75,6 @@ struct osmesa_context {
|
|||||||
void *rowaddr[MAX_HEIGHT]; /* address of first pixel in each image row */
|
void *rowaddr[MAX_HEIGHT]; /* address of first pixel in each image row */
|
||||||
GLboolean yup; /* TRUE -> Y increases upward */
|
GLboolean yup; /* TRUE -> Y increases upward */
|
||||||
/* FALSE -> Y increases downward */
|
/* FALSE -> Y increases downward */
|
||||||
GLboolean bVisible; /* TRUE if geometry is visible */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -224,7 +224,7 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
|
|||||||
FREE(osmesa);
|
FREE(osmesa);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
gl_extensions_enable(&(osmesa->gl_ctx),"GL_HP_occlusion_test");
|
||||||
|
|
||||||
osmesa->gl_buffer = gl_create_framebuffer( osmesa->gl_visual,
|
osmesa->gl_buffer = gl_create_framebuffer( osmesa->gl_visual,
|
||||||
osmesa->gl_visual->DepthBits > 0,
|
osmesa->gl_visual->DepthBits > 0,
|
||||||
@@ -254,7 +254,6 @@ OSMesaCreateContext( GLenum format, OSMesaContext sharelist )
|
|||||||
osmesa->rind = rind;
|
osmesa->rind = rind;
|
||||||
osmesa->gind = gind;
|
osmesa->gind = gind;
|
||||||
osmesa->bind = bind;
|
osmesa->bind = bind;
|
||||||
osmesa->bVisible = GL_FALSE;
|
|
||||||
}
|
}
|
||||||
return osmesa;
|
return osmesa;
|
||||||
}
|
}
|
||||||
@@ -466,21 +465,6 @@ void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLAPIENTRY OSMesaGetBooleanv( GLint pname, GLboolean *value )
|
|
||||||
{
|
|
||||||
OSMesaContext ctx = OSMesaGetCurrentContext();
|
|
||||||
|
|
||||||
switch (pname) {
|
|
||||||
case OSMESA_OCCLUSION_TEST_RESULT_HP:
|
|
||||||
*value = ctx->bVisible;
|
|
||||||
ctx->bVisible = GL_FALSE;
|
|
||||||
return;
|
|
||||||
default:
|
|
||||||
gl_error(&ctx->gl_ctx, GL_INVALID_ENUM, "OSMesaGetBooleanv(pname)" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the depth buffer associated with an OSMesa context.
|
* Return the depth buffer associated with an OSMesa context.
|
||||||
* Input: c - the OSMesa context
|
* Input: c - the OSMesa context
|
||||||
@@ -508,8 +492,31 @@ GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the color buffer associated with an OSMesa context.
|
||||||
|
* Input: c - the OSMesa context
|
||||||
|
* Output: width, height - size of buffer in pixels
|
||||||
|
* format - the pixel format (OSMESA_FORMAT)
|
||||||
|
* buffer - pointer to color buffer values
|
||||||
|
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
|
||||||
|
*/
|
||||||
|
GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c, GLint *width,
|
||||||
|
GLint *height, GLint *format, void **buffer )
|
||||||
|
{
|
||||||
|
if (!c->buffer) {
|
||||||
|
*width = 0;
|
||||||
|
*height = 0;
|
||||||
|
*format = 0;
|
||||||
|
*buffer = 0;
|
||||||
|
return GL_FALSE;
|
||||||
|
} else {
|
||||||
|
*width = c->width;
|
||||||
|
*height = c->height;
|
||||||
|
*format = c->format;
|
||||||
|
*buffer = c->buffer;
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
/*** Device Driver Functions ***/
|
/*** Device Driver Functions ***/
|
||||||
@@ -711,7 +718,6 @@ static void write_rgba_span( const GLcontext *ctx,
|
|||||||
GLint gshift = osmesa->gshift;
|
GLint gshift = osmesa->gshift;
|
||||||
GLint bshift = osmesa->bshift;
|
GLint bshift = osmesa->bshift;
|
||||||
GLint ashift = osmesa->ashift;
|
GLint ashift = osmesa->ashift;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
if (mask) {
|
if (mask) {
|
||||||
for (i=0;i<n;i++,ptr4++) {
|
for (i=0;i<n;i++,ptr4++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
@@ -737,7 +743,6 @@ static void write_rgba_span_rgba( const GLcontext *ctx,
|
|||||||
GLuint *ptr4 = PIXELADDR4( x, y );
|
GLuint *ptr4 = PIXELADDR4( x, y );
|
||||||
const GLuint *rgba4 = (const GLuint *) rgba;
|
const GLuint *rgba4 = (const GLuint *) rgba;
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
if (mask) {
|
if (mask) {
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
@@ -763,7 +768,6 @@ static void write_rgb_span( const GLcontext *ctx,
|
|||||||
GLint gshift = osmesa->gshift;
|
GLint gshift = osmesa->gshift;
|
||||||
GLint bshift = osmesa->bshift;
|
GLint bshift = osmesa->bshift;
|
||||||
GLint ashift = osmesa->ashift;
|
GLint ashift = osmesa->ashift;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
if (mask) {
|
if (mask) {
|
||||||
for (i=0;i<n;i++,ptr4++) {
|
for (i=0;i<n;i++,ptr4++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
@@ -787,7 +791,6 @@ static void write_monocolor_span( const GLcontext *ctx,
|
|||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLuint *ptr4 = PIXELADDR4(x,y);
|
GLuint *ptr4 = PIXELADDR4(x,y);
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++,ptr4++) {
|
for (i=0;i<n;i++,ptr4++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
*ptr4 = osmesa->pixel;
|
*ptr4 = osmesa->pixel;
|
||||||
@@ -807,7 +810,6 @@ static void write_rgba_pixels( const GLcontext *ctx,
|
|||||||
GLint gshift = osmesa->gshift;
|
GLint gshift = osmesa->gshift;
|
||||||
GLint bshift = osmesa->bshift;
|
GLint bshift = osmesa->bshift;
|
||||||
GLint ashift = osmesa->ashift;
|
GLint ashift = osmesa->ashift;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
GLuint *ptr4 = PIXELADDR4(x[i],y[i]);
|
GLuint *ptr4 = PIXELADDR4(x[i],y[i]);
|
||||||
@@ -824,7 +826,6 @@ static void write_monocolor_pixels( const GLcontext *ctx,
|
|||||||
{
|
{
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
GLuint *ptr4 = PIXELADDR4(x[i],y[i]);
|
GLuint *ptr4 = PIXELADDR4(x[i],y[i]);
|
||||||
@@ -894,7 +895,6 @@ static void write_rgba_span3( const GLcontext *ctx,
|
|||||||
GLint rind = osmesa->rind;
|
GLint rind = osmesa->rind;
|
||||||
GLint gind = osmesa->gind;
|
GLint gind = osmesa->gind;
|
||||||
GLint bind = osmesa->bind;
|
GLint bind = osmesa->bind;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
if (mask) {
|
if (mask) {
|
||||||
for (i=0;i<n;i++,ptr3+=3) {
|
for (i=0;i<n;i++,ptr3+=3) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
@@ -924,7 +924,6 @@ static void write_rgb_span3( const GLcontext *ctx,
|
|||||||
GLint rind = osmesa->rind;
|
GLint rind = osmesa->rind;
|
||||||
GLint gind = osmesa->gind;
|
GLint gind = osmesa->gind;
|
||||||
GLint bind = osmesa->bind;
|
GLint bind = osmesa->bind;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
if (mask) {
|
if (mask) {
|
||||||
for (i=0;i<n;i++,ptr3+=3) {
|
for (i=0;i<n;i++,ptr3+=3) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
@@ -960,7 +959,6 @@ static void write_monocolor_span3( const GLcontext *ctx,
|
|||||||
|
|
||||||
GLubyte *ptr3 = PIXELADDR3( x, y);
|
GLubyte *ptr3 = PIXELADDR3( x, y);
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++,ptr3+=3) {
|
for (i=0;i<n;i++,ptr3+=3) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
ptr3[rind] = rval;
|
ptr3[rind] = rval;
|
||||||
@@ -979,7 +977,6 @@ static void write_rgba_pixels3( const GLcontext *ctx,
|
|||||||
GLint rind = osmesa->rind;
|
GLint rind = osmesa->rind;
|
||||||
GLint gind = osmesa->gind;
|
GLint gind = osmesa->gind;
|
||||||
GLint bind = osmesa->bind;
|
GLint bind = osmesa->bind;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
GLubyte *ptr3 = PIXELADDR3(x[i],y[i]);
|
GLubyte *ptr3 = PIXELADDR3(x[i],y[i]);
|
||||||
@@ -1002,7 +999,6 @@ static void write_monocolor_pixels3( const GLcontext *ctx,
|
|||||||
GLubyte rval = UNPACK_RED(osmesa->pixel);
|
GLubyte rval = UNPACK_RED(osmesa->pixel);
|
||||||
GLubyte gval = UNPACK_GREEN(osmesa->pixel);
|
GLubyte gval = UNPACK_GREEN(osmesa->pixel);
|
||||||
GLubyte bval = UNPACK_BLUE(osmesa->pixel);
|
GLubyte bval = UNPACK_BLUE(osmesa->pixel);
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
GLubyte *ptr3 = PIXELADDR3(x[i],y[i]);
|
GLubyte *ptr3 = PIXELADDR3(x[i],y[i]);
|
||||||
@@ -1064,7 +1060,6 @@ static void write_index32_span( const GLcontext *ctx,
|
|||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLubyte *ptr1 = PIXELADDR1(x,y);
|
GLubyte *ptr1 = PIXELADDR1(x,y);
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
if (mask) {
|
if (mask) {
|
||||||
for (i=0;i<n;i++,ptr1++) {
|
for (i=0;i<n;i++,ptr1++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
@@ -1088,7 +1083,6 @@ static void write_index8_span( const GLcontext *ctx,
|
|||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLubyte *ptr1 = PIXELADDR1(x,y);
|
GLubyte *ptr1 = PIXELADDR1(x,y);
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
if (mask) {
|
if (mask) {
|
||||||
for (i=0;i<n;i++,ptr1++) {
|
for (i=0;i<n;i++,ptr1++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
@@ -1109,7 +1103,6 @@ static void write_monoindex_span( const GLcontext *ctx,
|
|||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLubyte *ptr1 = PIXELADDR1(x,y);
|
GLubyte *ptr1 = PIXELADDR1(x,y);
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++,ptr1++) {
|
for (i=0;i<n;i++,ptr1++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
*ptr1 = (GLubyte) osmesa->pixel;
|
*ptr1 = (GLubyte) osmesa->pixel;
|
||||||
@@ -1124,7 +1117,6 @@ static void write_index_pixels( const GLcontext *ctx,
|
|||||||
{
|
{
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
GLubyte *ptr1 = PIXELADDR1(x[i],y[i]);
|
GLubyte *ptr1 = PIXELADDR1(x[i],y[i]);
|
||||||
@@ -1140,7 +1132,6 @@ static void write_monoindex_pixels( const GLcontext *ctx,
|
|||||||
{
|
{
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLuint i;
|
GLuint i;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
if (mask[i]) {
|
if (mask[i]) {
|
||||||
GLubyte *ptr1 = PIXELADDR1(x[i],y[i]);
|
GLubyte *ptr1 = PIXELADDR1(x[i],y[i]);
|
||||||
@@ -1192,7 +1183,6 @@ static void flat_rgba_line( GLcontext *ctx,
|
|||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLubyte *color = ctx->VB->ColorPtr->data[pvert];
|
GLubyte *color = ctx->VB->ColorPtr->data[pvert];
|
||||||
unsigned long pixel = PACK_RGBA( color[0], color[1], color[2], color[3] );
|
unsigned long pixel = PACK_RGBA( color[0], color[1], color[2], color[3] );
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
|
|
||||||
#define INTERP_XY 1
|
#define INTERP_XY 1
|
||||||
#define CLIP_HACK 1
|
#define CLIP_HACK 1
|
||||||
@@ -1215,7 +1205,6 @@ static void flat_rgba_z_line( GLcontext *ctx,
|
|||||||
OSMesaContext osmesa = (OSMesaContext) ctx;
|
OSMesaContext osmesa = (OSMesaContext) ctx;
|
||||||
GLubyte *color = ctx->VB->ColorPtr->data[pvert];
|
GLubyte *color = ctx->VB->ColorPtr->data[pvert];
|
||||||
unsigned long pixel = PACK_RGBA( color[0], color[1], color[2], color[3] );
|
unsigned long pixel = PACK_RGBA( color[0], color[1], color[2], color[3] );
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
|
|
||||||
#define INTERP_XY 1
|
#define INTERP_XY 1
|
||||||
#define INTERP_Z 1
|
#define INTERP_Z 1
|
||||||
@@ -1252,7 +1241,6 @@ static void flat_blend_rgba_line( GLcontext *ctx,
|
|||||||
GLint rvalue = VB->ColorPtr->data[pvert][0]*avalue;
|
GLint rvalue = VB->ColorPtr->data[pvert][0]*avalue;
|
||||||
GLint gvalue = VB->ColorPtr->data[pvert][1]*avalue;
|
GLint gvalue = VB->ColorPtr->data[pvert][1]*avalue;
|
||||||
GLint bvalue = VB->ColorPtr->data[pvert][2]*avalue;
|
GLint bvalue = VB->ColorPtr->data[pvert][2]*avalue;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
|
|
||||||
#define INTERP_XY 1
|
#define INTERP_XY 1
|
||||||
#define CLIP_HACK 1
|
#define CLIP_HACK 1
|
||||||
@@ -1289,7 +1277,6 @@ static void flat_blend_rgba_z_line( GLcontext *ctx,
|
|||||||
GLint rvalue = VB->ColorPtr->data[pvert][0]*avalue;
|
GLint rvalue = VB->ColorPtr->data[pvert][0]*avalue;
|
||||||
GLint gvalue = VB->ColorPtr->data[pvert][1]*avalue;
|
GLint gvalue = VB->ColorPtr->data[pvert][1]*avalue;
|
||||||
GLint bvalue = VB->ColorPtr->data[pvert][2]*avalue;
|
GLint bvalue = VB->ColorPtr->data[pvert][2]*avalue;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
|
|
||||||
#define INTERP_XY 1
|
#define INTERP_XY 1
|
||||||
#define INTERP_Z 1
|
#define INTERP_Z 1
|
||||||
@@ -1329,7 +1316,6 @@ static void flat_blend_rgba_z_line_write( GLcontext *ctx,
|
|||||||
GLint rvalue = VB->ColorPtr->data[pvert][0]*avalue;
|
GLint rvalue = VB->ColorPtr->data[pvert][0]*avalue;
|
||||||
GLint gvalue = VB->ColorPtr->data[pvert][1]*avalue;
|
GLint gvalue = VB->ColorPtr->data[pvert][1]*avalue;
|
||||||
GLint bvalue = VB->ColorPtr->data[pvert][2]*avalue;
|
GLint bvalue = VB->ColorPtr->data[pvert][2]*avalue;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
|
|
||||||
#define INTERP_XY 1
|
#define INTERP_XY 1
|
||||||
#define INTERP_Z 1
|
#define INTERP_Z 1
|
||||||
@@ -1470,7 +1456,7 @@ static void smooth_rgba_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
|
|||||||
GLint bshift = osmesa->bshift;
|
GLint bshift = osmesa->bshift;
|
||||||
GLint ashift = osmesa->ashift;
|
GLint ashift = osmesa->ashift;
|
||||||
(void) pv;
|
(void) pv;
|
||||||
osmesa->bVisible = GL_TRUE; /* if here, the occlusion test is misused */
|
|
||||||
#define INTERP_Z 1
|
#define INTERP_Z 1
|
||||||
#define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
|
#define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
|
||||||
#define INTERP_RGB 1
|
#define INTERP_RGB 1
|
||||||
@@ -1573,16 +1559,15 @@ static triangle_func choose_triangle_function( GLcontext *ctx )
|
|||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
#define OCC_STD_MASK_TEST \
|
#define OCC_STD_MASK_TEST \
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx->DriverCtx; \
|
if (ctx->OcclusionResult) return; \
|
||||||
if (osmesa->bVisible) return; \
|
|
||||||
if (mask) { \
|
if (mask) { \
|
||||||
GLuint i; \
|
GLuint i; \
|
||||||
for (i=0;i<n;i++) if (mask[i]) { \
|
for (i=0;i<n;i++) if (mask[i]) { \
|
||||||
osmesa->bVisible = GL_TRUE; \
|
((GLcontext *)ctx)->OcclusionResult = GL_TRUE; \
|
||||||
return; \
|
return; \
|
||||||
} \
|
} \
|
||||||
} else { \
|
} else { \
|
||||||
osmesa->bVisible = GL_TRUE; \
|
((GLcontext *)ctx)->OcclusionResult = GL_TRUE; \
|
||||||
} \
|
} \
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -1679,16 +1664,14 @@ static void write_monocolor_pixels_occ( const GLcontext *ctx,
|
|||||||
static void line_occ( GLcontext *ctx,
|
static void line_occ( GLcontext *ctx,
|
||||||
GLuint vert0, GLuint vert1, GLuint pvert )
|
GLuint vert0, GLuint vert1, GLuint pvert )
|
||||||
{
|
{
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx->DriverCtx;
|
ctx->OcclusionResult = GL_TRUE;
|
||||||
osmesa->bVisible = GL_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void line_z_occ( GLcontext *ctx,
|
static void line_z_occ( GLcontext *ctx,
|
||||||
GLuint vert0, GLuint vert1, GLuint pvert )
|
GLuint vert0, GLuint vert1, GLuint pvert )
|
||||||
{
|
{
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx->DriverCtx;
|
if (ctx->OcclusionResult) return;
|
||||||
if (osmesa->bVisible) return;
|
|
||||||
|
|
||||||
#define INTERP_XY 1
|
#define INTERP_XY 1
|
||||||
#define INTERP_Z 1
|
#define INTERP_Z 1
|
||||||
@@ -1696,7 +1679,7 @@ static void line_z_occ( GLcontext *ctx,
|
|||||||
#define CLIP_HACK 1
|
#define CLIP_HACK 1
|
||||||
#define PLOT(X,Y) \
|
#define PLOT(X,Y) \
|
||||||
if (Z < *zPtr) { \
|
if (Z < *zPtr) { \
|
||||||
osmesa->bVisible = GL_TRUE; \
|
ctx->OcclusionResult = GL_TRUE; \
|
||||||
return; \
|
return; \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1714,16 +1697,15 @@ static void line_z_occ( GLcontext *ctx,
|
|||||||
static void triangle_occ( GLcontext *ctx, GLuint v0, GLuint v1,
|
static void triangle_occ( GLcontext *ctx, GLuint v0, GLuint v1,
|
||||||
GLuint v2, GLuint pv )
|
GLuint v2, GLuint pv )
|
||||||
{
|
{
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx->DriverCtx;
|
ctx->OcclusionResult = GL_TRUE;
|
||||||
osmesa->bVisible = GL_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void triangle_z_occ( GLcontext *ctx, GLuint v0, GLuint v1,
|
static void triangle_z_occ( GLcontext *ctx, GLuint v0, GLuint v1,
|
||||||
GLuint v2, GLuint pv )
|
GLuint v2, GLuint pv )
|
||||||
{
|
{
|
||||||
OSMesaContext osmesa = (OSMesaContext) ctx->DriverCtx;
|
if (ctx->OcclusionResult) return;
|
||||||
if (osmesa->bVisible) return;
|
|
||||||
#define INTERP_Z 1
|
#define INTERP_Z 1
|
||||||
#define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
|
#define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
|
||||||
#define INNER_LOOP( LEFT, RIGHT, Y ) \
|
#define INNER_LOOP( LEFT, RIGHT, Y ) \
|
||||||
@@ -1732,7 +1714,7 @@ static void triangle_z_occ( GLcontext *ctx, GLuint v0, GLuint v1,
|
|||||||
for (i=0;i<len;i++) { \
|
for (i=0;i<len;i++) { \
|
||||||
GLdepth z = FixedToDepth(ffz); \
|
GLdepth z = FixedToDepth(ffz); \
|
||||||
if (z < zRow[i]) { \
|
if (z < zRow[i]) { \
|
||||||
osmesa->bVisible = GL_TRUE; \
|
ctx->OcclusionResult = GL_TRUE; \
|
||||||
return; \
|
return; \
|
||||||
} \
|
} \
|
||||||
ffz += fdzdx; \
|
ffz += fdzdx; \
|
||||||
@@ -1831,15 +1813,17 @@ static void osmesa_update_state( GLcontext *ctx )
|
|||||||
* extension use will just cause unnecessary rasterization
|
* extension use will just cause unnecessary rasterization
|
||||||
* to occur. The image will be correct in any case.
|
* to occur. The image will be correct in any case.
|
||||||
*/
|
*/
|
||||||
if ((ctx->Color.IndexMask == 0) &&
|
if ((ctx->Depth.OcclusionTest) &&
|
||||||
|
(((!ctx->Visual->RGBAflag) &&
|
||||||
|
(ctx->Color.IndexMask == 0)) ||
|
||||||
|
((ctx->Visual->RGBAflag) &&
|
||||||
(ctx->Color.ColorMask[0] == 0) &&
|
(ctx->Color.ColorMask[0] == 0) &&
|
||||||
(ctx->Color.ColorMask[1] == 0) &&
|
(ctx->Color.ColorMask[1] == 0) &&
|
||||||
(ctx->Color.ColorMask[2] == 0) &&
|
(ctx->Color.ColorMask[2] == 0) &&
|
||||||
(ctx->Color.ColorMask[3] == 0) &&
|
(ctx->Color.ColorMask[3] == 0))) &&
|
||||||
|
(ctx->Depth.Func == GL_LESS) &&
|
||||||
(ctx->Stencil.Enabled == GL_FALSE)) {
|
(ctx->Stencil.Enabled == GL_FALSE)) {
|
||||||
|
|
||||||
/* XXX depth.func == GL_LESS ? */
|
|
||||||
|
|
||||||
ctx->Driver.WriteCI32Span = write_index32_span_occ;
|
ctx->Driver.WriteCI32Span = write_index32_span_occ;
|
||||||
ctx->Driver.WriteCI8Span = write_index8_span_occ;
|
ctx->Driver.WriteCI8Span = write_index8_span_occ;
|
||||||
ctx->Driver.WriteMonoCISpan = write_monoindex_span_occ;
|
ctx->Driver.WriteMonoCISpan = write_monoindex_span_occ;
|
||||||
@@ -1859,5 +1843,7 @@ static void osmesa_update_state( GLcontext *ctx )
|
|||||||
ctx->Driver.LineFunc = line_occ;
|
ctx->Driver.LineFunc = line_occ;
|
||||||
ctx->Driver.TriangleFunc = triangle_occ;
|
ctx->Driver.TriangleFunc = triangle_occ;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
ctx->OcclusionResult = GL_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: enums.c,v 1.7 2000/03/07 17:54:58 brianp Exp $ */
|
/* $Id: enums.c,v 1.8 2000/03/28 16:59:39 rjfrank Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -769,6 +769,9 @@ enum_elt all_enums[] =
|
|||||||
{ "GL_CLIENT_ACTIVE_TEXTURE_ARB", 0x84E1 },
|
{ "GL_CLIENT_ACTIVE_TEXTURE_ARB", 0x84E1 },
|
||||||
{ "GL_MAX_TEXTURE_UNITS_ARB", 0x84E2 },
|
{ "GL_MAX_TEXTURE_UNITS_ARB", 0x84E2 },
|
||||||
|
|
||||||
|
{ "GL_OCCLUSION_TEST_HP", 0x8165 },
|
||||||
|
{ "GL_OCCLUSION_TEST_RESULT_HP", 0x8166 },
|
||||||
|
|
||||||
{ "GL_TEXTURE_FILTER_CONTROL_EXT", 0x8500 },
|
{ "GL_TEXTURE_FILTER_CONTROL_EXT", 0x8500 },
|
||||||
{ "GL_TEXTUER_LOD_BIAS_EXT", 0x8501 },
|
{ "GL_TEXTUER_LOD_BIAS_EXT", 0x8501 },
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: extensions.c,v 1.20 2000/03/11 23:23:26 brianp Exp $ */
|
/* $Id: extensions.c,v 1.21 2000/03/28 16:59:39 rjfrank Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -130,7 +130,7 @@ static int set_extension( GLcontext *ctx, const char *name, GLint state )
|
|||||||
if (i == ctx->Extensions.ext_list)
|
if (i == ctx->Extensions.ext_list)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (i->enabled && !(i->enabled & ALWAYS_ENABLED)) {
|
if (!(i->enabled & ALWAYS_ENABLED)) {
|
||||||
if (i->notify) i->notify( ctx, state );
|
if (i->notify) i->notify( ctx, state );
|
||||||
i->enabled = state;
|
i->enabled = state;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user