summaryrefslogtreecommitdiffstats
path: root/src/mesa/swrast_setup/ss_context.c
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2008-10-08 09:28:10 -0600
committerBrian Paul <[email protected]>2008-10-08 09:33:56 -0600
commit5462d447aa5bce9e558594eabeddd624cd39b1de (patch)
treeb2d159ce112cc448fbc1acf599050deacc05b132 /src/mesa/swrast_setup/ss_context.c
parent902727b7e3eb3c2c9bcddf1d55d3c95c73377cf3 (diff)
mesa: fix vertex format/attribute bug
If the tnl output attributes matches the swsetup input attributes we still need to check if the desired vertex color type (float vs. chan) has changed so that we use the right emit functions. Fixes a conformance failure found with logicop test at pathlevel 3.
Diffstat (limited to 'src/mesa/swrast_setup/ss_context.c')
-rw-r--r--src/mesa/swrast_setup/ss_context.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/mesa/swrast_setup/ss_context.c b/src/mesa/swrast_setup/ss_context.c
index f4d90c514bb..61172f9979b 100644
--- a/src/mesa/swrast_setup/ss_context.c
+++ b/src/mesa/swrast_setup/ss_context.c
@@ -112,22 +112,25 @@ setup_vertex_format(GLcontext *ctx)
{
TNLcontext *tnl = TNL_CONTEXT(ctx);
SScontext *swsetup = SWSETUP_CONTEXT(ctx);
+ GLboolean intColors = !ctx->FragmentProgram._Current
+ && !ctx->ATIFragmentShader._Enabled
+ && ctx->RenderMode == GL_RENDER
+ && CHAN_TYPE == GL_UNSIGNED_BYTE;
- if (!RENDERINPUTS_EQUAL(tnl->render_inputs_bitset,
+ if (intColors != swsetup->intColors ||
+ !RENDERINPUTS_EQUAL(tnl->render_inputs_bitset,
swsetup->last_index_bitset)) {
DECLARE_RENDERINPUTS(index_bitset);
struct tnl_attr_map map[_TNL_ATTRIB_MAX];
int i, e = 0;
+ swsetup->intColors = intColors;
+
RENDERINPUTS_COPY( index_bitset, tnl->render_inputs_bitset );
EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, attrib[FRAG_ATTRIB_WPOS] );
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_COLOR0 )) {
- swsetup->intColors = !ctx->FragmentProgram._Current
- && !ctx->ATIFragmentShader._Enabled
- && ctx->RenderMode == GL_RENDER
- && CHAN_TYPE == GL_UNSIGNED_BYTE;
if (swsetup->intColors)
EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4CHAN_4F_RGBA, color );
else