Calculate DEPTH_SCALE correctly for polygon offset.
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 30 Dec 2004 16:30:26 +0000 (16:30 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 30 Dec 2004 16:30:26 +0000 (16:30 +0000)
src/mesa/drivers/dri/unichrome/via_context.c
src/mesa/drivers/dri/unichrome/via_context.h
src/mesa/drivers/dri/unichrome/via_tris.c

index b3cc66f087c30d6f501cc832ff09f6e7a9d3f4ed..4c70af60c83cd5dd244f3b02a13c6b9b10777114 100644 (file)
@@ -356,6 +356,7 @@ viaCreateContext(const __GLcontextModes *mesaVis,
        vmesa->depth_max = (GLfloat)0xffff;
        vmesa->depth_clear_mask = 0xf << 28;
        vmesa->ClearDepth = 0xffff;
+       vmesa->polygon_offset_scale = 1.0 / vmesa->depth_max;
        break;
     case 24:
        vmesa->hasDepth = GL_TRUE;
@@ -370,6 +371,7 @@ viaCreateContext(const __GLcontextModes *mesaVis,
        vmesa->have_hw_stencil = GL_TRUE;
        vmesa->stencilBits = mesaVis->stencilBits;
        vmesa->stencil_clear_mask = 0x1 << 28;
+       vmesa->polygon_offset_scale = 2.0 / vmesa->depth_max;
        break;
     case 32:
        vmesa->hasDepth = GL_TRUE;
@@ -380,6 +382,7 @@ viaCreateContext(const __GLcontextModes *mesaVis,
        vmesa->depth_clear_mask = 0;
        vmesa->ClearDepth = 0xffffffff;
        vmesa->depth_clear_mask = 0xf << 28;
+       vmesa->polygon_offset_scale = 2.0 / vmesa->depth_max;
        break;
     default:
        assert(0); 
index 25def2e0758d4da734166dc3329f61819be283b8..a409b8c6b72d0bb100f5798797501d6b4447628a 100644 (file)
@@ -103,6 +103,7 @@ struct via_context_t {
    GLuint depth_clear_mask;
    GLuint stencil_clear_mask;
    GLfloat depth_max;
+   GLfloat polygon_offset_scale;
 
     GLubyte    *dma;
     viaRegion tex;
index 6dbbfe0343a2e263dafae5241713104b6df99cc8..8c16d01000e248735da4f3bfdbd4125f46efb771 100644 (file)
@@ -222,7 +222,7 @@ static struct {
     } while (0)
 
 
-#define DEPTH_SCALE (1.0 / 0xffff)
+#define DEPTH_SCALE vmesa->polygon_offset_scale
 #define UNFILLED_TRI unfilled_tri
 #define UNFILLED_QUAD unfilled_quad
 #define VERT_X(_v) _v->v.x