mesa: Require that drivers supporting point sprites support point parameters

All drivers in Mesa do.  This allows a lot of extension checking code to be
gutted from the function.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Ian Romanick 2012-07-27 17:38:32 -07:00
parent 33e01d93ca
commit 25ffb86893
1 changed files with 46 additions and 60 deletions

View File

@ -104,9 +104,22 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params)
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
/* Drivers that support point sprites must also support point parameters.
* If point parameters aren't supported, then this function shouldn't even
* exist.
*/
ASSERT(!(ctx->Extensions.ARB_point_sprite
|| ctx->Extensions.NV_point_sprite)
|| ctx->Extensions.EXT_point_parameters);
if (!ctx->Extensions.EXT_point_parameters) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"unsupported function called (unsupported extension)");
return;
}
switch (pname) {
case GL_DISTANCE_ATTENUATION_EXT:
if (ctx->Extensions.EXT_point_parameters) {
if (TEST_EQ_3V(ctx->Point.Params, params))
return;
FLUSH_VERTICES(ctx, _NEW_POINT);
@ -119,15 +132,8 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params)
ctx->_TriangleCaps |= DD_POINT_ATTEN;
else
ctx->_TriangleCaps &= ~DD_POINT_ATTEN;
}
else {
_mesa_error(ctx, GL_INVALID_ENUM,
"glPointParameterf[v]{EXT,ARB}(pname)");
return;
}
break;
case GL_POINT_SIZE_MIN_EXT:
if (ctx->Extensions.EXT_point_parameters) {
if (params[0] < 0.0F) {
_mesa_error( ctx, GL_INVALID_VALUE,
"glPointParameterf[v]{EXT,ARB}(param)" );
@ -137,15 +143,8 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params)
return;
FLUSH_VERTICES(ctx, _NEW_POINT);
ctx->Point.MinSize = params[0];
}
else {
_mesa_error(ctx, GL_INVALID_ENUM,
"glPointParameterf[v]{EXT,ARB}(pname)");
return;
}
break;
case GL_POINT_SIZE_MAX_EXT:
if (ctx->Extensions.EXT_point_parameters) {
if (params[0] < 0.0F) {
_mesa_error( ctx, GL_INVALID_VALUE,
"glPointParameterf[v]{EXT,ARB}(param)" );
@ -155,15 +154,8 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params)
return;
FLUSH_VERTICES(ctx, _NEW_POINT);
ctx->Point.MaxSize = params[0];
}
else {
_mesa_error(ctx, GL_INVALID_ENUM,
"glPointParameterf[v]{EXT,ARB}(pname)");
return;
}
break;
case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
if (ctx->Extensions.EXT_point_parameters) {
if (params[0] < 0.0F) {
_mesa_error( ctx, GL_INVALID_VALUE,
"glPointParameterf[v]{EXT,ARB}(param)" );
@ -173,12 +165,6 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params)
return;
FLUSH_VERTICES(ctx, _NEW_POINT);
ctx->Point.Threshold = params[0];
}
else {
_mesa_error(ctx, GL_INVALID_ENUM,
"glPointParameterf[v]{EXT,ARB}(pname)");
return;
}
break;
case GL_POINT_SPRITE_R_MODE_NV:
/* This is one area where ARB_point_sprite and NV_point_sprite