mesa: Convert gl_viewport_attrib::Near and ::Far to double
authorCourtney Goeltzenleuchter <courtney@LunarG.com>
Wed, 13 Nov 2013 23:24:56 +0000 (16:24 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 20 Jan 2014 19:31:50 +0000 (11:31 -0800)
v4: Split out from a single megapatch.  Suggested by Ken.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/get.c
src/mesa/main/get_hash_params.py
src/mesa/main/mtypes.h
src/mesa/main/viewport.c
src/mesa/math/m_matrix.c
src/mesa/math/m_matrix.h

index 2189b3173e7e57e2b394e38ba39379824c7c71fb..ad6096baac89c5f048b28ea79180750d20f6c31e 100644 (file)
@@ -697,6 +697,11 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
       v->value_int_4[3] = ctx->Viewport.Height;
       break;
 
+   case GL_DEPTH_RANGE:
+      v->value_double_2[0] = ctx->Viewport.Near;
+      v->value_double_2[1] = ctx->Viewport.Far;
+      break;
+
    case GL_ACTIVE_STENCIL_FACE_EXT:
       v->value_enum = ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT;
       break;
index 6fcd4f622cdbd1d810c5f555c2665aab73280ef7..8e2fdaec956e0320f33676c68781ef0fb7f9214b 100644 (file)
@@ -11,7 +11,7 @@ descriptor=[
   [ "DEPTH_BITS", "BUFFER_INT(Visual.depthBits), extra_new_buffers" ],
   [ "DEPTH_CLEAR_VALUE", "CONTEXT_FIELD(Depth.Clear, TYPE_DOUBLEN), NO_EXTRA" ],
   [ "DEPTH_FUNC", "CONTEXT_ENUM(Depth.Func), NO_EXTRA" ],
-  [ "DEPTH_RANGE", "CONTEXT_FIELD(Viewport.Near, TYPE_FLOATN_2), NO_EXTRA" ],
+  [ "DEPTH_RANGE", "LOC_CUSTOM, TYPE_DOUBLEN_2, 0, NO_EXTRA" ],
   [ "DEPTH_TEST", "CONTEXT_BOOL(Depth.Test), NO_EXTRA" ],
   [ "DEPTH_WRITEMASK", "CONTEXT_BOOL(Depth.Mask), NO_EXTRA" ],
   [ "DITHER", "CONTEXT_BOOL(Color.DitherFlag), NO_EXTRA" ],
index 9dbfa6bfbc6880f34764b4fb4f004941f557a894..1d5dd4816a76da73f30605b8f89b2e5f20f36931 100644 (file)
@@ -1434,7 +1434,7 @@ struct gl_viewport_attrib
 {
    GLint X, Y;                 /**< position */
    GLsizei Width, Height;      /**< size */
-   GLfloat Near, Far;          /**< Depth buffer range */
+   GLdouble Near, Far;         /**< Depth buffer range */
    GLmatrix _WindowMap;                /**< Mapping transformation as a matrix. */
 };
 
index 3bc89ab030ae0f71c35bbaea0f7e7c6054d121a1..8eede518f9d6c97ca3268780f91022f3cb834d3a 100644 (file)
@@ -127,8 +127,8 @@ _mesa_DepthRange(GLclampd nearval, GLclampd farval)
        ctx->Viewport.Far == farval)
       return;
 
-   ctx->Viewport.Near = (GLfloat) CLAMP(nearval, 0.0, 1.0);
-   ctx->Viewport.Far = (GLfloat) CLAMP(farval, 0.0, 1.0);
+   ctx->Viewport.Near = CLAMP(nearval, 0.0, 1.0);
+   ctx->Viewport.Far = CLAMP(farval, 0.0, 1.0);
    ctx->NewState |= _NEW_VIEWPORT;
 
 #if 1
index 274f969d2e4d7eb55a33ae7d8c45d261e3ae076d..38fa51ec1b7f097cc5f1e484d12362cd0bfa0115 100644 (file)
@@ -1111,14 +1111,14 @@ _math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
  */
 void
 _math_matrix_viewport(GLmatrix *m, GLint x, GLint y, GLint width, GLint height,
-                      GLfloat zNear, GLfloat zFar, GLfloat depthMax)
+                      GLdouble zNear, GLdouble zFar, GLdouble depthMax)
 {
    m->m[MAT_SX] = (GLfloat) width / 2.0F;
    m->m[MAT_TX] = m->m[MAT_SX] + x;
    m->m[MAT_SY] = (GLfloat) height / 2.0F;
    m->m[MAT_TY] = m->m[MAT_SY] + y;
-   m->m[MAT_SZ] = depthMax * ((zFar - zNear) / 2.0F);
-   m->m[MAT_TZ] = depthMax * ((zFar - zNear) / 2.0F + zNear);
+   m->m[MAT_SZ] = (GLfloat) (depthMax * ((zFar - zNear) / 2.0));
+   m->m[MAT_TZ] = (GLfloat) (depthMax * ((zFar - zNear) / 2.0 + zNear));
    m->flags = MAT_FLAG_GENERAL_SCALE | MAT_FLAG_TRANSLATION;
    m->type = MATRIX_3D_NO_ROT;
 }
index 2b097cb31302125ce52cbed374a825be643d0984..fc65f84dcf40fa7535d7868fb65d168c09a5f275 100644 (file)
@@ -123,7 +123,7 @@ _math_matrix_frustum( GLmatrix *mat,
 
 extern void
 _math_matrix_viewport(GLmatrix *m, GLint x, GLint y, GLint width, GLint height,
-                      GLfloat zNear, GLfloat zFar, GLfloat depthMax);
+                      GLdouble zNear, GLdouble zFar, GLdouble depthMax);
 
 extern void
 _math_matrix_set_identity( GLmatrix *dest );