/*
* This is the big one!
- * Interpolate Z, RGB, Alpha, specular, fog, and N sets of texture coordinates.
+ * Interpolate Z, RGB, Alpha, specular, fog, N sets of texture coordinates, and varying floats.
* Yup, it's slow.
*/
#define NAME multitextured_triangle
#define INTERP_RGB 1
#define INTERP_ALPHA 1
#define INTERP_SPEC 1
-#define INTERP_MULTITEX 1
+#define INTERP_MULTITEX 1\r
+#define INTERP_VARYING 1
#define RENDER_SPAN( span ) _swrast_write_rgba_span(ctx, &span);
#include "s_tritemp.h"
}
}
- if (ctx->Texture._EnabledCoordUnits || ctx->FragmentProgram._Active || ctx->ATIFragmentShader._Enabled) {
+ if (ctx->Texture._EnabledCoordUnits || ctx->FragmentProgram._Active ||\r
+ ctx->ATIFragmentShader._Enabled || ctx->ShaderObjects._FragmentShaderPresent) {
/* Ugh, we do a _lot_ of tests to pick the best textured tri func */
- const struct gl_texture_object *texObj2D;
+ const struct gl_texture_object *texObj2D;
const struct gl_texture_image *texImg;
GLenum minFilter, magFilter, envMode;
GLint format;
/* First see if we can use an optimized 2-D texture function */
if (ctx->Texture._EnabledCoordUnits == 0x1
&& !ctx->FragmentProgram._Active
- && !ctx->ATIFragmentShader._Enabled
+ && !ctx->ATIFragmentShader._Enabled\r
+ && !ctx->ShaderObjects._FragmentShaderPresent
&& ctx->Texture.Unit[0]._ReallyEnabled == TEXTURE_2D_BIT
&& texObj2D->WrapS == GL_REPEAT
- && texObj2D->WrapT == GL_REPEAT
+ && texObj2D->WrapT == GL_REPEAT
&& texImg->_IsPowerOfTwo
&& texImg->Border == 0
&& texImg->Width == texImg->RowStride
&& (format == MESA_FORMAT_RGB || format == MESA_FORMAT_RGBA)
- && minFilter == magFilter
- && ctx->Light.Model.ColorControl == GL_SINGLE_COLOR
- && ctx->Texture.Unit[0].EnvMode != GL_COMBINE_EXT) {
+ && minFilter == magFilter
+ && ctx->Light.Model.ColorControl == GL_SINGLE_COLOR
+ && ctx->Texture.Unit[0].EnvMode != GL_COMBINE_EXT) {
if (ctx->Hint.PerspectiveCorrection==GL_FASTEST) {
if (minFilter == GL_NEAREST
&& format == MESA_FORMAT_RGB