From: Courtney Goeltzenleuchter Date: Wed, 13 Nov 2013 23:24:56 +0000 (-0700) Subject: mesa: Convert gl_viewport_attrib::Near and ::Far to double X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d4dc35987;p=mesa.git mesa: Convert gl_viewport_attrib::Near and ::Far to double v4: Split out from a single megapatch. Suggested by Ken. Signed-off-by: Ian Romanick Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 2189b3173e7..ad6096baac8 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 6fcd4f622cd..8e2fdaec956 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 9dbfa6bfbc6..1d5dd4816a7 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 3bc89ab030a..8eede518f9d 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 274f969d2e4..38fa51ec1b7 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 2b097cb3130..fc65f84dcf4 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 );