fix bug rendering points with fragment program (see #11330)
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.1
|
* Version: 7.1
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -208,6 +208,14 @@ _swrast_choose_point( GLcontext *ctx )
|
|||||||
GLboolean specular = (ctx->Fog.ColorSumEnabled ||
|
GLboolean specular = (ctx->Fog.ColorSumEnabled ||
|
||||||
(ctx->Light.Enabled &&
|
(ctx->Light.Enabled &&
|
||||||
ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR));
|
ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR));
|
||||||
|
GLboolean attribs = (ctx->FragmentProgram._Current ||
|
||||||
|
ctx->Texture._EnabledCoordUnits ||
|
||||||
|
swrast->_FogEnabled ||
|
||||||
|
specular);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XXX this is a mess that should be cleaned up someday
|
||||||
|
*/
|
||||||
|
|
||||||
if (ctx->RenderMode==GL_RENDER) {
|
if (ctx->RenderMode==GL_RENDER) {
|
||||||
if (ctx->Point.PointSprite) {
|
if (ctx->Point.PointSprite) {
|
||||||
@@ -218,7 +226,7 @@ _swrast_choose_point( GLcontext *ctx )
|
|||||||
else
|
else
|
||||||
USE(sprite_point);
|
USE(sprite_point);
|
||||||
}
|
}
|
||||||
else if (ctx->Point.SmoothFlag) {
|
else if (ctx->Point.SmoothFlag && !attribs) {
|
||||||
/* Smooth points */
|
/* Smooth points */
|
||||||
if (rgbMode) {
|
if (rgbMode) {
|
||||||
if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
||||||
@@ -237,7 +245,7 @@ _swrast_choose_point( GLcontext *ctx )
|
|||||||
}
|
}
|
||||||
else if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
else if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
||||||
if (rgbMode) {
|
if (rgbMode) {
|
||||||
if (ctx->Texture._EnabledCoordUnits) {
|
if (attribs) {
|
||||||
if (ctx->Point.SmoothFlag) {
|
if (ctx->Point.SmoothFlag) {
|
||||||
USE(atten_antialiased_rgba_point);
|
USE(atten_antialiased_rgba_point);
|
||||||
}
|
}
|
||||||
@@ -254,9 +262,7 @@ _swrast_choose_point( GLcontext *ctx )
|
|||||||
USE(atten_general_ci_point);
|
USE(atten_general_ci_point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((ctx->Texture._EnabledCoordUnits
|
else if (attribs && rgbMode) {
|
||||||
|| specular
|
|
||||||
|| swrast->_FogEnabled) && rgbMode) {
|
|
||||||
/* textured, fogged */
|
/* textured, fogged */
|
||||||
USE(textured_rgba_point);
|
USE(textured_rgba_point);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.5.3
|
* Version: 7.1
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
@@ -1178,7 +1178,10 @@ shade_texture_span(GLcontext *ctx, SWspan *span)
|
|||||||
if (span->primitive == GL_BITMAP && span->array->ChanType != GL_FLOAT) {
|
if (span->primitive == GL_BITMAP && span->array->ChanType != GL_FLOAT) {
|
||||||
convert_color_type(span, GL_FLOAT, 0);
|
convert_color_type(span, GL_FLOAT, 0);
|
||||||
}
|
}
|
||||||
interpolate_active_attribs(ctx, span, ~0);
|
if (span->primitive != GL_POINT) {
|
||||||
|
/* for points, we populated the arrays already */
|
||||||
|
interpolate_active_attribs(ctx, span, ~0);
|
||||||
|
}
|
||||||
span->array->ChanType = GL_FLOAT;
|
span->array->ChanType = GL_FLOAT;
|
||||||
|
|
||||||
if (!(span->arrayMask & SPAN_Z))
|
if (!(span->arrayMask & SPAN_Z))
|
||||||
|
Reference in New Issue
Block a user