[Mesa-dev] [PATCH 22/70] i965: Add dword aliases to bitfield structs

Chris Wilson chris at chris-wilson.co.uk
Fri Aug 7 13:13:26 PDT 2015


When processing the packed fields, it often much easier to pass around
the dword value (as would be seen by hardware) than it is manipulating
the bitfield. By aliasing the bitfield with a uint32_t member, we can
treat the value as either a collection of bits or a single value
depending upon the situation.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 src/mesa/drivers/dri/i965/brw_structs.h | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_structs.h b/src/mesa/drivers/dri/i965/brw_structs.h
index 55338c0..b09d4ba 100644
--- a/src/mesa/drivers/dri/i965/brw_structs.h
+++ b/src/mesa/drivers/dri/i965/brw_structs.h
@@ -391,13 +391,16 @@ struct brw_sf_unit_state
       unsigned pad3:1;
    } thread4;
 
-   struct
+   union
    {
-      unsigned front_winding:1;
-      unsigned viewport_transform:1;
-      unsigned pad0:3;
-      unsigned sf_viewport_state_offset:27; /* Offset from GENERAL_STATE_BASE */
-   } sf5;
+      struct {
+         unsigned front_winding:1;
+         unsigned viewport_transform:1;
+         unsigned pad0:3;
+         unsigned sf_viewport_state_offset:27; /* Offset from GENERAL_STATE_BASE */
+      } sf5;
+      uint32_t dw5;
+   };
 
    struct
    {
@@ -525,15 +528,17 @@ struct brw_wm_unit_state
    struct thread2 thread2;
    struct thread3 thread3;
 
-   struct {
-      unsigned stats_enable:1;
-      unsigned depth_buffer_clear:1;
-      unsigned sampler_count:3;
-      unsigned sampler_state_pointer:27;
-   } wm4;
+   union {
+      struct {
+         unsigned stats_enable:1;
+         unsigned depth_buffer_clear:1;
+         unsigned sampler_count:3;
+         unsigned sampler_state_pointer:27;
+      } wm4;
+      uint32_t dw4;
+   };
 
-   struct
-   {
+   struct {
       unsigned enable_8_pix:1;
       unsigned enable_16_pix:1;
       unsigned enable_32_pix:1;
-- 
2.5.0



More information about the mesa-dev mailing list