mesa: Converty gl_viewport_attrib::X, ::Y, ::Width, and ::Height to float
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:53 +0000 (11:31 -0800)
v4: Split out from a single megapatch.  Suggested by Ken.  Also make
meta's save_state::ViewportX, ::ViewportY, ::ViewportW, and ::ViewportH
to match gl_viewport_attrib.

Signed-off-by: Courtney Goeltzenleuchter <courtney@LunarG.com>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
12 files changed:
src/mesa/drivers/common/meta.c
src/mesa/drivers/dri/i965/brw_clip_state.c
src/mesa/drivers/dri/i965/gen6_clip_state.c
src/mesa/drivers/dri/i965/gen6_viewport_state.c
src/mesa/drivers/dri/i965/gen7_viewport_state.c
src/mesa/main/get.c
src/mesa/main/get_hash_params.py
src/mesa/main/mtypes.h
src/mesa/math/m_matrix.c
src/mesa/math/m_matrix.h
src/mesa/state_tracker/st_atom_viewport.c
src/mesa/swrast/s_context.c

index 173b45cea0ac032786d0b2761661f5633f84763f..3608ee85c58cab1a0d202addf3fe118187e3f4dc 100644 (file)
@@ -170,7 +170,7 @@ struct save_state
    struct gl_buffer_object *ArrayBufferObj;
 
    /** MESA_META_VIEWPORT */
-   GLint ViewportX, ViewportY, ViewportW, ViewportH;
+   GLfloat ViewportX, ViewportY, ViewportW, ViewportH;
    GLclampd DepthNear, DepthFar;
 
    /** MESA_META_CLAMP_FRAGMENT_COLOR */
@@ -744,8 +744,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
       /* set viewport to match window size */
       if (ctx->Viewport.X != 0 ||
           ctx->Viewport.Y != 0 ||
-          ctx->Viewport.Width != ctx->DrawBuffer->Width ||
-          ctx->Viewport.Height != ctx->DrawBuffer->Height) {
+          ctx->Viewport.Width != (float) ctx->DrawBuffer->Width ||
+          ctx->Viewport.Height != (float) ctx->DrawBuffer->Height) {
          _mesa_set_viewport(ctx, 0, 0,
                             ctx->DrawBuffer->Width, ctx->DrawBuffer->Height);
       }
index a0bdb4384aedd3d23d0a7ddb6ddd9297c8d88d22..021acc80e5214fa4ccc94b4c9a04953e78197e33 100644 (file)
@@ -43,8 +43,8 @@ upload_clip_vp(struct brw_context *brw)
                         sizeof(*vp), 32, &brw->clip.vp_offset);
 
    const float maximum_post_clamp_delta = 4096;
-   float gbx = maximum_post_clamp_delta / (float) ctx->Viewport.Width;
-   float gby = maximum_post_clamp_delta / (float) ctx->Viewport.Height;
+   float gbx = maximum_post_clamp_delta / ctx->Viewport.Width;
+   float gby = maximum_post_clamp_delta / ctx->Viewport.Height;
 
    vp->xmin = -gbx;
    vp->xmax = gbx;
@@ -127,8 +127,8 @@ brw_upload_clip_unit(struct brw_context *brw)
    /* enable guardband clipping if we can */
    if (ctx->Viewport.X == 0 &&
        ctx->Viewport.Y == 0 &&
-       ctx->Viewport.Width == fb->Width &&
-       ctx->Viewport.Height == fb->Height)
+       ctx->Viewport.Width == (float) fb->Width &&
+       ctx->Viewport.Height == (float) fb->Height)
    {
       clip->clip5.guard_band_enable = 1;
       clip->clip6.clipper_viewport_state_ptr =
index 6cec0ff21ac67ed0acb45d8f391a371260db777d..8dcca84c216c6a5d7e448349a0d0591c64ff6239 100644 (file)
@@ -98,8 +98,8 @@ upload_clip_state(struct brw_context *brw)
 
    if (ctx->Viewport.X == 0 &&
        ctx->Viewport.Y == 0 &&
-       ctx->Viewport.Width == fb->Width &&
-       ctx->Viewport.Height == fb->Height) {
+       ctx->Viewport.Width == (float) fb->Width &&
+       ctx->Viewport.Height == (float) fb->Height) {
       dw2 |= GEN6_CLIP_GB_TEST;
    }
 
index 033592035f9de7f5b8e7d88d603dfee82bf4a7b6..4c5135b84a3063aceb77505bebd265656bcd4f61 100644 (file)
@@ -55,8 +55,8 @@ gen6_upload_clip_vp(struct brw_context *brw)
     * drawable.
     */
    const float maximum_post_clamp_delta = 8192;
-   float gbx = maximum_post_clamp_delta / (float) ctx->Viewport.Width;
-   float gby = maximum_post_clamp_delta / (float) ctx->Viewport.Height;
+   float gbx = maximum_post_clamp_delta / ctx->Viewport.Width;
+   float gby = maximum_post_clamp_delta / ctx->Viewport.Height;
 
    vp->xmin = -gbx;
    vp->xmax = gbx;
index 8c5fcac2b22e3954b12f8f7c3458aa3ed4d76c89..66c183845a0ab57acfc2f73bb33f1b9da10219fa 100644 (file)
@@ -54,8 +54,8 @@ gen7_upload_sf_clip_viewport(struct brw_context *brw)
     * drawable.
     */
    const float maximum_guardband_extent = 8192;
-   float gbx = maximum_guardband_extent / (float) ctx->Viewport.Width;
-   float gby = maximum_guardband_extent / (float) ctx->Viewport.Height;
+   float gbx = maximum_guardband_extent / ctx->Viewport.Width;
+   float gby = maximum_guardband_extent / ctx->Viewport.Height;
 
    vp->guardband.xmin = -gbx;
    vp->guardband.xmax = gbx;
index ad6096baac89c5f048b28ea79180750d20f6c31e..fa48195cdf43fac52bfd66c54f91bb2caef00e74 100644 (file)
@@ -691,10 +691,10 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
       break;
 
    case GL_VIEWPORT:
-      v->value_int_4[0] = ctx->Viewport.X;
-      v->value_int_4[1] = ctx->Viewport.Y;
-      v->value_int_4[2] = ctx->Viewport.Width;
-      v->value_int_4[3] = ctx->Viewport.Height;
+      v->value_float_4[0] = ctx->Viewport.X;
+      v->value_float_4[1] = ctx->Viewport.Y;
+      v->value_float_4[2] = ctx->Viewport.Width;
+      v->value_float_4[3] = ctx->Viewport.Height;
       break;
 
    case GL_DEPTH_RANGE:
index 8e2fdaec956e0320f33676c68781ef0fb7f9214b..3aa05483c84538db45079dfc7345fb028366e971 100644 (file)
@@ -44,7 +44,7 @@ descriptor=[
   [ "SUBPIXEL_BITS", "CONTEXT_INT(Const.SubPixelBits), NO_EXTRA" ],
   [ "TEXTURE_BINDING_2D", "LOC_CUSTOM, TYPE_INT, TEXTURE_2D_INDEX, NO_EXTRA" ],
   [ "UNPACK_ALIGNMENT", "CONTEXT_INT(Unpack.Alignment), NO_EXTRA" ],
-  [ "VIEWPORT", "LOC_CUSTOM, TYPE_INT_4, 0, NO_EXTRA" ],
+  [ "VIEWPORT", "LOC_CUSTOM, TYPE_FLOAT_4, 0, NO_EXTRA" ],
 
 # GL_ARB_multitexture
   [ "ACTIVE_TEXTURE", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
index 1d5dd4816a76da73f30605b8f89b2e5f20f36931..1231a6f4415276be778b9626eb3e44d16782108f 100644 (file)
@@ -1432,8 +1432,8 @@ struct gl_transform_attrib
  */
 struct gl_viewport_attrib
 {
-   GLint X, Y;                 /**< position */
-   GLsizei Width, Height;      /**< size */
+   GLfloat X, Y;               /**< position */
+   GLfloat Width, Height;      /**< size */
    GLdouble Near, Far;         /**< Depth buffer range */
    GLmatrix _WindowMap;                /**< Mapping transformation as a matrix. */
 };
index 38fa51ec1b7f097cc5f1e484d12362cd0bfa0115..e512e456fbd054640f6daca3fd9e8438c5866086 100644 (file)
@@ -1110,12 +1110,13 @@ _math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
  * Transforms Normalized Device Coords to window/Z values.
  */
 void
-_math_matrix_viewport(GLmatrix *m, GLint x, GLint y, GLint width, GLint height,
+_math_matrix_viewport(GLmatrix *m, GLfloat x, GLfloat y,
+                      GLfloat width, GLfloat height,
                       GLdouble zNear, GLdouble zFar, GLdouble depthMax)
 {
-   m->m[MAT_SX] = (GLfloat) width / 2.0F;
+   m->m[MAT_SX] = width / 2.0F;
    m->m[MAT_TX] = m->m[MAT_SX] + x;
-   m->m[MAT_SY] = (GLfloat) height / 2.0F;
+   m->m[MAT_SY] = height / 2.0F;
    m->m[MAT_TY] = m->m[MAT_SY] + y;
    m->m[MAT_SZ] = (GLfloat) (depthMax * ((zFar - zNear) / 2.0));
    m->m[MAT_TZ] = (GLfloat) (depthMax * ((zFar - zNear) / 2.0 + zNear));
index fc65f84dcf40fa7535d7868fb65d168c09a5f275..dddce70190fa3e7b830dc4bd29d07e7afce8f540 100644 (file)
@@ -122,7 +122,7 @@ _math_matrix_frustum( GLmatrix *mat,
                      GLfloat nearval, GLfloat farval );
 
 extern void
-_math_matrix_viewport(GLmatrix *m, GLint x, GLint y, GLint width, GLint height,
+_math_matrix_viewport(GLmatrix *m, GLfloat x, GLfloat y, GLfloat width, GLfloat height,
                       GLdouble zNear, GLdouble zFar, GLdouble depthMax);
 
 extern void
index 7a1a689b7907a806a8e7c9a89f62487d5ab3cd0c..a88160fc87639d86ec0df861f5cb3ab91d0ae895 100644 (file)
@@ -62,11 +62,11 @@ update_viewport( struct st_context *st )
    /* _NEW_VIEWPORT 
     */
    {
-      GLfloat x = (GLfloat)ctx->Viewport.X;
-      GLfloat y = (GLfloat)ctx->Viewport.Y;
+      GLfloat x = ctx->Viewport.X;
+      GLfloat y = ctx->Viewport.Y;
       GLfloat z = ctx->Viewport.Near;
-      GLfloat half_width = (GLfloat)ctx->Viewport.Width * 0.5f;
-      GLfloat half_height = (GLfloat)ctx->Viewport.Height * 0.5f;
+      GLfloat half_width = ctx->Viewport.Width * 0.5f;
+      GLfloat half_height = ctx->Viewport.Height * 0.5f;
       GLfloat half_depth = (GLfloat)(ctx->Viewport.Far - ctx->Viewport.Near) * 0.5f;
       
       st->state.viewport.scale[0] = half_width;
index bb0b5b5b42d7399b56a6735224d0c70ac85ec126..8a5de4761c29be827e92fbfd74b303122cab67fa 100644 (file)
@@ -75,9 +75,9 @@ _swrast_update_rasterflags( struct gl_context *ctx )
    if (ctx->Color.ColorLogicOpEnabled) rasterMask |= LOGIC_OP_BIT;
    if (ctx->Texture._EnabledUnits)     rasterMask |= TEXTURE_BIT;
    if (   ctx->Viewport.X < 0
-       || ctx->Viewport.X + ctx->Viewport.Width > (GLint) ctx->DrawBuffer->Width
+       || ctx->Viewport.X + ctx->Viewport.Width > (GLfloat) ctx->DrawBuffer->Width
        || ctx->Viewport.Y < 0
-       || ctx->Viewport.Y + ctx->Viewport.Height > (GLint) ctx->DrawBuffer->Height) {
+       || ctx->Viewport.Y + ctx->Viewport.Height > (GLfloat) ctx->DrawBuffer->Height) {
       rasterMask |= CLIP_BIT;
    }