[Mesa-dev] [PATCH 06/37] mesa: Convert gl_viewport_attrib::Near and ::Far to double
Ian Romanick
idr at freedesktop.org
Fri Jan 17 17:03:26 PST 2014
From: Courtney Goeltzenleuchter <courtney at LunarG.com>
v4: Split out from a single megapatch. Suggested by Ken.
Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
---
src/mesa/main/get.c | 5 +++++
src/mesa/main/get_hash_params.py | 2 +-
src/mesa/main/mtypes.h | 2 +-
src/mesa/main/viewport.c | 4 ++--
src/mesa/math/m_matrix.c | 6 +++---
src/mesa/math/m_matrix.h | 2 +-
6 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 2189b31..ad6096b 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -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;
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index 6fcd4f6..8e2fdae 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -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" ],
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 9dbfa6b..1d5dd48 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -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. */
};
diff --git a/src/mesa/main/viewport.c b/src/mesa/main/viewport.c
index 3bc89ab..8eede51 100644
--- a/src/mesa/main/viewport.c
+++ b/src/mesa/main/viewport.c
@@ -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
diff --git a/src/mesa/math/m_matrix.c b/src/mesa/math/m_matrix.c
index 274f969..38fa51e 100644
--- a/src/mesa/math/m_matrix.c
+++ b/src/mesa/math/m_matrix.c
@@ -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;
}
diff --git a/src/mesa/math/m_matrix.h b/src/mesa/math/m_matrix.h
index 2b097cb..fc65f84 100644
--- a/src/mesa/math/m_matrix.h
+++ b/src/mesa/math/m_matrix.h
@@ -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 );
--
1.8.1.4
More information about the mesa-dev
mailing list