summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/viewport.c
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2015-07-11 22:46:19 -0700
committerMatt Turner <mattst88@gmail.com>2015-07-29 09:34:51 -0700
commitf8a647883a14694f1b758c12187b3f35b9d039a7 (patch)
treecd11148549da4b67e6a9a3f1b941b3dfaa27295c /src/mesa/main/viewport.c
parentecc559218d0a544f8a5f878c500f125c2d588d82 (diff)
downloadexternal_mesa3d-f8a647883a14694f1b758c12187b3f35b9d039a7.zip
external_mesa3d-f8a647883a14694f1b758c12187b3f35b9d039a7.tar.gz
external_mesa3d-f8a647883a14694f1b758c12187b3f35b9d039a7.tar.bz2
mesa: Use floats for viewport bounds.
ARB_viewport_array specifies that DEPTH_RANGE consists of double- precision parameters (corresponding commit d4dc35987), and a preparatory commit (6340e609a) added _mesa_get_viewport_xform() which returned double-precision scale[3] and translate[3] vectors, even though X, Y, Width, and Height were still floats. All users of _mesa_get_viewport_xform() immediately convert the double scale and translation vectors into floats (which were floats originally, but were converted to doubles in _mesa_get_viewport_xform(), sigh). i965 at least cannot consume doubles (see SF_CLIP_VIEWPORT). If we want to pass doubles to hardware, we should have a different function that does that. Acked-by: Mathias Froehlich <Mathias.Froehlich@web.de>
Diffstat (limited to 'src/mesa/main/viewport.c')
-rw-r--r--src/mesa/main/viewport.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/mesa/main/viewport.c b/src/mesa/main/viewport.c
index 9917f2d..7d891429 100644
--- a/src/mesa/main/viewport.c
+++ b/src/mesa/main/viewport.c
@@ -443,12 +443,12 @@ _mesa_ClipControl(GLenum origin, GLenum depth)
*/
void
_mesa_get_viewport_xform(struct gl_context *ctx, unsigned i,
- double scale[3], double translate[3])
+ float scale[3], float translate[3])
{
- double x = ctx->ViewportArray[i].X;
- double y = ctx->ViewportArray[i].Y;
- double half_width = 0.5*ctx->ViewportArray[i].Width;
- double half_height = 0.5*ctx->ViewportArray[i].Height;
+ float x = ctx->ViewportArray[i].X;
+ float y = ctx->ViewportArray[i].Y;
+ float half_width = 0.5f * ctx->ViewportArray[i].Width;
+ float half_height = 0.5f * ctx->ViewportArray[i].Height;
double n = ctx->ViewportArray[i].Near;
double f = ctx->ViewportArray[i].Far;
@@ -462,8 +462,8 @@ _mesa_get_viewport_xform(struct gl_context *ctx, unsigned i,
translate[1] = half_height + y;
}
if (ctx->Transform.ClipDepthMode == GL_NEGATIVE_ONE_TO_ONE) {
- scale[2] = 0.5*(f - n);
- translate[2] = 0.5*(n + f);
+ scale[2] = 0.5 * (f - n);
+ translate[2] = 0.5 * (n + f);
} else {
scale[2] = f - n;
translate[2] = n;