Move interpolate_texcoords() and interpolate_varying() calls into shade_texture_span().

Added some INLINE hints.
This commit is contained in:
Brian Paul
2006-10-21 00:20:16 +00:00
parent 61c89be313
commit f614a61905
+18 -21
View File
@@ -153,7 +153,7 @@ _swrast_span_default_texcoords( GLcontext *ctx, SWspan *span )
/**
* Interpolate primary colors to fill in the span->array->color array.
*/
static void
static INLINE void
interpolate_colors(SWspan *span)
{
const GLuint n = span->end;
@@ -277,7 +277,7 @@ interpolate_colors(SWspan *span)
/**
* Interpolate specular/secondary colors.
*/
static void
static INLINE void
interpolate_specular(SWspan *span)
{
const GLuint n = span->end;
@@ -390,7 +390,7 @@ interpolate_specular(SWspan *span)
/* Fill in the span.color.index array from the interpolation values */
static void
static INLINE void
interpolate_indexes(GLcontext *ctx, SWspan *span)
{
GLfixed index = span->index;
@@ -422,7 +422,7 @@ interpolate_indexes(GLcontext *ctx, SWspan *span)
/* Fill in the span.array.fog values from the interpolation values */
static void
static INLINE void
interpolate_fog(const GLcontext *ctx, SWspan *span)
{
GLfloat *fog = span->array->fog;
@@ -814,7 +814,7 @@ interpolate_texcoords(GLcontext *ctx, SWspan *span)
/**
* Fill in the span.varying array from the interpolation values.
*/
static void
static INLINE void
interpolate_varying(GLcontext *ctx, SWspan *span)
{
GLuint i, j;
@@ -846,7 +846,7 @@ interpolate_varying(GLcontext *ctx, SWspan *span)
/**
* Apply the current polygon stipple pattern to a span of pixels.
*/
static void
static INLINE void
stipple_polygon_span( GLcontext *ctx, SWspan *span )
{
const GLuint highbit = 0x80000000;
@@ -879,7 +879,7 @@ stipple_polygon_span( GLcontext *ctx, SWspan *span )
* Return: GL_TRUE some pixels still visible
* GL_FALSE nothing visible
*/
static GLuint
static INLINE GLuint
clip_span( GLcontext *ctx, SWspan *span )
{
const GLint xmin = ctx->DrawBuffer->_Xmin;
@@ -1178,7 +1178,7 @@ _swrast_write_index_span( GLcontext *ctx, SWspan *span)
* Add specular color to base color. This is used only when
* GL_LIGHT_MODEL_COLOR_CONTROL = GL_SEPARATE_SPECULAR_COLOR.
*/
static void
static INLINE void
add_specular(GLcontext *ctx, SWspan *span)
{
switch (span->array->ChanType) {
@@ -1238,7 +1238,7 @@ add_specular(GLcontext *ctx, SWspan *span)
/**
* Apply antialiasing coverage value to alpha values.
*/
static void
static INLINE void
apply_aa_coverage(SWspan *span)
{
const GLfloat *coverage = span->array->coverage;
@@ -1271,7 +1271,7 @@ apply_aa_coverage(SWspan *span)
/**
* Clamp span's float colors to [0,1]
*/
static void
static INLINE void
clamp_colors(SWspan *span)
{
GLfloat (*rgba)[4] = span->array->color.sz4.rgba;
@@ -1289,7 +1289,7 @@ clamp_colors(SWspan *span)
/**
* Convert the span's color arrays to the given type.
*/
static void
static INLINE void
convert_color_type(GLcontext *ctx, SWspan *span, GLenum newType)
{
GLvoid *src, *dst;
@@ -1324,13 +1324,16 @@ convert_color_type(GLcontext *ctx, SWspan *span, GLenum newType)
/**
* Apply fragment shader, fragment program or normal texturing to span.
*/
static void
static INLINE void
shade_texture_span(GLcontext *ctx, SWspan *span)
{
/* Now we need the rgba array, fill it in if needed */
if (span->interpMask & SPAN_RGBA)
interpolate_colors(span);
if (ctx->Texture._EnabledCoordUnits && (span->interpMask & SPAN_TEXTURE))
interpolate_texcoords(ctx, span);
if (ctx->ShaderObjects._FragmentShaderPresent ||
ctx->FragmentProgram._Enabled ||
ctx->ATIFragmentShader._Enabled) {
@@ -1358,6 +1361,9 @@ shade_texture_span(GLcontext *ctx, SWspan *span)
if (span->interpMask & SPAN_Z)
_swrast_span_interpolate_z (ctx, span);
if (ctx->ShaderObjects._FragmentShaderPresent)
interpolate_varying(ctx, span);
/* Run fragment program/shader now */
if (ctx->ShaderObjects._FragmentShaderPresent) {
_swrast_exec_arbshader (ctx, span);
@@ -1451,15 +1457,6 @@ _swrast_write_rgba_span( GLcontext *ctx, SWspan *span)
stipple_polygon_span(ctx, span);
}
/* Interpolate texcoords? */
if (ctx->Texture._EnabledCoordUnits && (span->interpMask & SPAN_TEXTURE)) {
interpolate_texcoords(ctx, span);
}
if (ctx->ShaderObjects._FragmentShaderPresent) {
interpolate_varying(ctx, span);
}
/* This is the normal place to compute the resulting fragment color/Z.
* As an optimization, we try to defer this until after Z/stencil
* testing in order to try to avoid computing colors that we won't