summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Kuehling <[email protected]>2004-03-07 01:36:50 +0000
committerFelix Kuehling <[email protected]>2004-03-07 01:36:50 +0000
commit2cd815b66009eea8e06dc4b6dfd32cb7898ff416 (patch)
treee0bc635d89e01165e1224e1f8e98939e8a8d631e
parent2c8dacea5fa52e793bc594c97f6bc730459f915d (diff)
Fixed two small problems in the vertex setup.
- make sure that vertex setup is initialized - Savage seems to need the W coordinate for smooth shading
-rw-r--r--src/mesa/drivers/dri/savage/savage_xmesa.c5
-rw-r--r--src/mesa/drivers/dri/savage/savagetris.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c
index db9256e615e..c7b31df2c68 100644
--- a/src/mesa/drivers/dri/savage/savage_xmesa.c
+++ b/src/mesa/drivers/dri/savage/savage_xmesa.c
@@ -408,6 +408,11 @@ savageCreateContext( const __GLcontextModes *mesaVis,
imesa->depth_scale = (imesa->savageScreen->zpp == 2) ?
(1.0F/0x10000):(1.0F/0x1000000);
+ /* Uninitialized vertex format. Force setting the vertex state in
+ * savageRenderStart.
+ */
+ imesa->vertex_size = 0;
+
/* Utah stuff
*/
imesa->new_state = ~0;
diff --git a/src/mesa/drivers/dri/savage/savagetris.c b/src/mesa/drivers/dri/savage/savagetris.c
index a8db86f3b12..c9a7145605e 100644
--- a/src/mesa/drivers/dri/savage/savagetris.c
+++ b/src/mesa/drivers/dri/savage/savagetris.c
@@ -760,7 +760,7 @@ static void savageRenderStart( GLcontext *ctx )
/* EMIT_ATTR's must be in order as they tell t_vertex.c how to
* build up a hardware vertex.
*/
- if (index & _TNL_BITS_TEX_ANY) {
+ if ((index & _TNL_BITS_TEX_ANY) || !(ctx->_TriangleCaps & DD_FLATSHADE)) {
EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, SAVAGE_HW_NO_W );
}
else {
@@ -797,9 +797,12 @@ static void savageRenderStart( GLcontext *ctx )
}
/* Only need to change the vertex emit code if there has been a
- * statechange to a new hardware vertex format:
+ * statechange to a new hardware vertex format and also when the
+ * vertex format is set for the first time. This is indicated by
+ * imesa->vertex_size == 0.
*/
- if (drawCmd != (imesa->DrawPrimitiveCmd & SAVAGE_HW_SKIPFLAGS)) {
+ if (drawCmd != (imesa->DrawPrimitiveCmd & SAVAGE_HW_SKIPFLAGS) ||
+ imesa->vertex_size == 0) {
imesa->vertex_size =
_tnl_install_attrs( ctx,
imesa->vertex_attrs,