gallium/util: use ui[4] instead of ui in union util_color
authorRoland Scheidegger <sroland@vmware.com>
Wed, 23 Apr 2014 18:00:03 +0000 (20:00 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Fri, 25 Apr 2014 17:29:30 +0000 (19:29 +0200)
util_color often merely represents a collection of bytes, however it is
inconvenient if those bytes can only be accessed as floats/doubles for int
formats exceeding 32bits.
(Note that since rgba8 formats use one uint, not 4 bytes, hence the byte and
short member were left as is.)

12 files changed:
src/gallium/auxiliary/util/u_pack_color.h
src/gallium/auxiliary/util/u_surface.c
src/gallium/drivers/freedreno/a2xx/fd2_draw.c
src/gallium/drivers/i915/i915_clear.c
src/gallium/drivers/i915/i915_surface.c
src/gallium/drivers/ilo/ilo_blitter_blt.c
src/gallium/drivers/nouveau/nv30/nv30_clear.c
src/gallium/drivers/r300/r300_blit.c
src/gallium/drivers/r300/r300_state.c
src/gallium/drivers/r300/r300_state_derived.c
src/gallium/drivers/svga/svga_pipe_clear.c
src/mesa/state_tracker/st_atom_pixeltransfer.c

index 166c68b57580370bb925c4aa8364340583910395..e0c9018f8ef8122816b4808806e5d2a252243a17 100644 (file)
@@ -51,7 +51,7 @@
 union util_color {
    ubyte ub;
    ushort us;
-   uint ui;
+   uint ui[4];
    ushort h[4]; /* half float */
    float f[4];
    double d[4];
@@ -67,32 +67,32 @@ util_pack_color_ub(ubyte r, ubyte g, ubyte b, ubyte a,
    switch (format) {
    case PIPE_FORMAT_ABGR8888_UNORM:
       {
-         uc->ui = (r << 24) | (g << 16) | (b << 8) | a;
+         uc->ui[0] = (r << 24) | (g << 16) | (b << 8) | a;
       }
       return;
    case PIPE_FORMAT_XBGR8888_UNORM:
       {
-         uc->ui = (r << 24) | (g << 16) | (b << 8) | 0xff;
+         uc->ui[0] = (r << 24) | (g << 16) | (b << 8) | 0xff;
       }
       return;
    case PIPE_FORMAT_BGRA8888_UNORM:
       {
-         uc->ui = (a << 24) | (r << 16) | (g << 8) | b;
+         uc->ui[0] = (a << 24) | (r << 16) | (g << 8) | b;
       }
       return;
    case PIPE_FORMAT_BGRX8888_UNORM:
       {
-         uc->ui = (0xff << 24) | (r << 16) | (g << 8) | b;
+         uc->ui[0] = (0xff << 24) | (r << 16) | (g << 8) | b;
       }
       return;
    case PIPE_FORMAT_ARGB8888_UNORM:
       {
-         uc->ui = (b << 24) | (g << 16) | (r << 8) | a;
+         uc->ui[0] = (b << 24) | (g << 16) | (r << 8) | a;
       }
       return;
    case PIPE_FORMAT_XRGB8888_UNORM:
       {
-         uc->ui = (b << 24) | (g << 16) | (r << 8) | 0xff;
+         uc->ui[0] = (b << 24) | (g << 16) | (r << 8) | 0xff;
       }
       return;
    case PIPE_FORMAT_B5G6R5_UNORM:
@@ -168,7 +168,7 @@ util_unpack_color_ub(enum pipe_format format, union util_color *uc,
    switch (format) {
    case PIPE_FORMAT_ABGR8888_UNORM:
       {
-         uint p = uc->ui;
+         uint p = uc->ui[0];
          *r = (ubyte) ((p >> 24) & 0xff);
          *g = (ubyte) ((p >> 16) & 0xff);
          *b = (ubyte) ((p >>  8) & 0xff);
@@ -177,7 +177,7 @@ util_unpack_color_ub(enum pipe_format format, union util_color *uc,
       return;
    case PIPE_FORMAT_XBGR8888_UNORM:
       {
-         uint p = uc->ui;
+         uint p = uc->ui[0];
          *r = (ubyte) ((p >> 24) & 0xff);
          *g = (ubyte) ((p >> 16) & 0xff);
          *b = (ubyte) ((p >>  8) & 0xff);
@@ -186,7 +186,7 @@ util_unpack_color_ub(enum pipe_format format, union util_color *uc,
       return;
    case PIPE_FORMAT_BGRA8888_UNORM:
       {
-         uint p = uc->ui;
+         uint p = uc->ui[0];
          *r = (ubyte) ((p >> 16) & 0xff);
          *g = (ubyte) ((p >>  8) & 0xff);
          *b = (ubyte) ((p >>  0) & 0xff);
@@ -195,7 +195,7 @@ util_unpack_color_ub(enum pipe_format format, union util_color *uc,
       return;
    case PIPE_FORMAT_BGRX8888_UNORM:
       {
-         uint p = uc->ui;
+         uint p = uc->ui[0];
          *r = (ubyte) ((p >> 16) & 0xff);
          *g = (ubyte) ((p >>  8) & 0xff);
          *b = (ubyte) ((p >>  0) & 0xff);
@@ -204,7 +204,7 @@ util_unpack_color_ub(enum pipe_format format, union util_color *uc,
       return;
    case PIPE_FORMAT_ARGB8888_UNORM:
       {
-         uint p = uc->ui;
+         uint p = uc->ui[0];
          *r = (ubyte) ((p >>  8) & 0xff);
          *g = (ubyte) ((p >> 16) & 0xff);
          *b = (ubyte) ((p >> 24) & 0xff);
@@ -213,7 +213,7 @@ util_unpack_color_ub(enum pipe_format format, union util_color *uc,
       return;
    case PIPE_FORMAT_XRGB8888_UNORM:
       {
-         uint p = uc->ui;
+         uint p = uc->ui[0];
          *r = (ubyte) ((p >>  8) & 0xff);
          *g = (ubyte) ((p >> 16) & 0xff);
          *b = (ubyte) ((p >> 24) & 0xff);
@@ -352,32 +352,32 @@ util_pack_color(const float rgba[4], enum pipe_format format, union util_color *
    switch (format) {
    case PIPE_FORMAT_ABGR8888_UNORM:
       {
-         uc->ui = (r << 24) | (g << 16) | (b << 8) | a;
+         uc->ui[0] = (r << 24) | (g << 16) | (b << 8) | a;
       }
       return;
    case PIPE_FORMAT_XBGR8888_UNORM:
       {
-         uc->ui = (r << 24) | (g << 16) | (b << 8) | 0xff;
+         uc->ui[0] = (r << 24) | (g << 16) | (b << 8) | 0xff;
       }
       return;
    case PIPE_FORMAT_BGRA8888_UNORM:
       {
-         uc->ui = (a << 24) | (r << 16) | (g << 8) | b;
+         uc->ui[0] = (a << 24) | (r << 16) | (g << 8) | b;
       }
       return;
    case PIPE_FORMAT_BGRX8888_UNORM:
       {
-         uc->ui = (0xff << 24) | (r << 16) | (g << 8) | b;
+         uc->ui[0] = (0xff << 24) | (r << 16) | (g << 8) | b;
       }
       return;
    case PIPE_FORMAT_ARGB8888_UNORM:
       {
-         uc->ui = (b << 24) | (g << 16) | (r << 8) | a;
+         uc->ui[0] = (b << 24) | (g << 16) | (r << 8) | a;
       }
       return;
    case PIPE_FORMAT_XRGB8888_UNORM:
       {
-         uc->ui = (b << 24) | (g << 16) | (r << 8) | 0xff;
+         uc->ui[0] = (b << 24) | (g << 16) | (r << 8) | 0xff;
       }
       return;
    case PIPE_FORMAT_B5G6R5_UNORM:
index 07997d2adc7324ba67169a1ad64b5f3178b7fc15..654b5bbc5521ed2e2b206fcebf7c457b2bb00c67 100644 (file)
@@ -196,7 +196,7 @@ util_fill_rect(ubyte * dst,
       for (i = 0; i < height; i++) {
          uint32_t *row = (uint32_t *)dst;
          for (j = 0; j < width; j++)
-            *row++ = uc->ui;
+            *row++ = uc->ui[0];
          dst += dst_stride;
       }
       break;
index d6e42b668a8734eace0ae893bc30e685a55e7ab3..77fbf1af224fada1345ce16649d5879796bb2c27 100644 (file)
@@ -123,7 +123,7 @@ pack_rgba(enum pipe_format format, const float *rgba)
 {
        union util_color uc;
        util_pack_color(rgba, format, &uc);
-       return uc.ui;
+       return uc.ui[0];
 }
 
 static void
index b17707f3f64ab13a776e2db393f737fbb6048d9a..57244a65bb5801d69aac41b653075f98ef4f20e3 100644 (file)
@@ -66,10 +66,10 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers,
 
       util_pack_color(color->f, cbuf->format, &u_color);
       if (util_format_get_blocksize(cbuf_tex->b.b.format) == 4) {
-         clear_color = u_color.ui;
+         clear_color = u_color.ui[0];
          color_clear_bbp = 32;
       } else {
-         clear_color = (u_color.ui & 0xffff) | (u_color.ui << 16);
+         clear_color = (u_color.ui[0] & 0xffff) | (u_color.ui[0] << 16);
          color_clear_bbp = 16;
       }
 
@@ -78,7 +78,7 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers,
          util_pack_color(color->f, cbuf->format, &u_color);
       else
          util_pack_color(color->f, PIPE_FORMAT_B8G8R8A8_UNORM, &u_color);
-      clear_color8888 = u_color.ui;
+      clear_color8888 = u_color.ui[0];
    } else
       clear_color = clear_color8888 = 0;
 
index 7496250faa26962988d666d9ed05861c3a3fc379..df662873001942eed184f1ab9e1d2bc6abd90f84 100644 (file)
@@ -266,7 +266,7 @@ i915_clear_render_target_blitter(struct pipe_context *pipe,
                    tex->buffer, offset,
                    (short) dstx, (short) dsty,
                    (short) width, (short) height,
-                   uc.ui );
+                   uc.ui[0] );
 }
 
 static void
index 4571c097df2ae6455f6ab25637c1cf983d35bbdc..ac34383f5bd09637d70c414484ea8431a6888133 100644 (file)
@@ -739,7 +739,7 @@ ilo_blitter_blt_clear_rt(struct ilo_blitter *blitter,
          size = end - offset;
 
       success = buf_clear_region(blitter, ilo_buffer(rt->texture),
-            offset, size, packed.ui, mask, mask);
+            offset, size, packed.ui[0], mask, mask);
    }
    else {
       struct pipe_box box;
@@ -748,7 +748,7 @@ ilo_blitter_blt_clear_rt(struct ilo_blitter *blitter,
             rt->u.tex.last_layer - rt->u.tex.first_layer + 1, &box);
 
       success = tex_clear_region(blitter, ilo_texture(rt->texture),
-            rt->u.tex.level, &box, packed.ui, mask, mask);
+            rt->u.tex.level, &box, packed.ui[0], mask, mask);
    }
 
    return success;
index 5317e892b25ecfc86144f381f6c146cb23912002..1ab8929cc384d587f93b3728fd4f4a190be6b0bf 100644 (file)
@@ -37,7 +37,7 @@ pack_rgba(enum pipe_format format, const float *rgba)
 {
    union util_color uc;
    util_pack_color(rgba, format, &uc);
-   return uc.ui;
+   return uc.ui[0];
 }
 
 static INLINE uint32_t
index 05e55f3665e89c26c6d73042115a89df061c6a60..2b516d284d1851f74cf0b4f057a1681c81c09228 100644 (file)
@@ -118,7 +118,7 @@ static uint32_t r300_depth_clear_cb_value(enum pipe_format format,
     util_pack_color(rgba, format, &uc);
 
     if (util_format_get_blocksizebits(format) == 32)
-        return uc.ui;
+        return uc.ui[0];
     else
         return uc.us | (uc.us << 16);
 }
@@ -193,7 +193,7 @@ static void r300_set_clear_color(struct r300_context *r300,
         r300->color_clear_value_gb = uc.h[0] | ((uint32_t)uc.h[1] << 16);
         r300->color_clear_value_ar = uc.h[2] | ((uint32_t)uc.h[3] << 16);
     } else {
-        r300->color_clear_value = uc.ui;
+        r300->color_clear_value = uc.ui[0];
     }
 }
 
index b664c97f4dd26f1b246df8770ee40e6440cc631a..7d83576cf84aee1d2f4d2615e9695fdabfc96ac0 100644 (file)
@@ -646,7 +646,7 @@ static void r300_set_blend_color(struct pipe_context* pipe,
         util_pack_color(c.color, PIPE_FORMAT_B8G8R8A8_UNORM, &uc);
 
         BEGIN_CB(state->cb, 2);
-        OUT_CB_REG(R300_RB3D_BLEND_COLOR, uc.ui);
+        OUT_CB_REG(R300_RB3D_BLEND_COLOR, uc.ui[0]);
         END_CB;
     }
 
index 1013557bde9727c5295fe7a51d69fd4d397aa763..da472f4d7f4b592a4caf149333b597d0bf2e9dbb 100644 (file)
@@ -699,24 +699,24 @@ static uint32_t r300_get_border_color(enum pipe_format format,
             /* The Y component is used for the border color. */
             border_swizzled[1] = border_swizzled[0] + 1.0f/32;
             util_pack_color(border_swizzled, PIPE_FORMAT_B4G4R4A4_UNORM, &uc);
-            return uc.ui;
+            return uc.ui[0];
         case PIPE_FORMAT_RGTC2_SNORM:
         case PIPE_FORMAT_LATC2_SNORM:
             util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SNORM, &uc);
-            return uc.ui;
+            return uc.ui[0];
         case PIPE_FORMAT_RGTC2_UNORM:
         case PIPE_FORMAT_LATC2_UNORM:
             util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc);
-            return uc.ui;
+            return uc.ui[0];
         case PIPE_FORMAT_DXT1_SRGB:
         case PIPE_FORMAT_DXT1_SRGBA:
         case PIPE_FORMAT_DXT3_SRGBA:
         case PIPE_FORMAT_DXT5_SRGBA:
             util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_SRGB, &uc);
-            return uc.ui;
+            return uc.ui[0];
         default:
             util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc);
-            return uc.ui;
+            return uc.ui[0];
         }
     }
 
@@ -789,7 +789,7 @@ static uint32_t r300_get_border_color(enum pipe_format format,
             break;
     }
 
-    return uc.ui;
+    return uc.ui[0];
 }
 
 static void r300_merge_textures_and_samplers(struct r300_context* r300)
index 21869e9d6d0aee0b7c1cbfbcfa3ce190f050fc5c..c4edced9baed7249fc367f414f27edc6f82b94d8 100644 (file)
@@ -86,7 +86,7 @@ try_clear(struct svga_context *svga,
          return ret;
    }
 
-   ret = SVGA3D_ClearRect(svga->swc, flags, uc.ui, (float) depth, stencil,
+   ret = SVGA3D_ClearRect(svga->swc, flags, uc.ui[0], (float) depth, stencil,
                           rect.x, rect.y, rect.w, rect.h);
    if (ret != PIPE_OK)
       return ret;
index 306eeb153aaf0529aced55292229c6df12c78bcb..a04163cc137a8fec8e00d8442e6715f589a9db49 100644 (file)
@@ -121,7 +121,7 @@ load_color_map_texture(struct gl_context *ctx, struct pipe_resource *pt)
          rgba[2] = ctx->PixelMaps.BtoB.Map[j * bSize / texSize];
          rgba[3] = ctx->PixelMaps.AtoA.Map[i * aSize / texSize];
          util_pack_color(rgba, pt->format, &uc);
-         *(dest + k) = uc.ui;
+         *(dest + k) = uc.ui[0];
       }
    }