Skip to content

compiler/types: Don't place members in the previous substruct's end padding

With the following structures :

  struct StructA
  {
     uint64_t value0;
     uint8_t  value1;
  };

  struct StructB
  {
     uint64_t  value2;
  };

  struct TopStruct
  {
     union
     {
        struct StructA a;
        struct StructB b;
     } union_a_b;
     uint8_t value3;
  };

Currently offsetof(struct TopStruct, value3) = 9. While the same code on the CPU gives offsetof(struct TopStruct, value3) = 16.

This is impacting OpenCL kernels we're trying to use to build acceleration structures.

Cc: mesa-stable Signed-off-by: Lionel Landwerlin lionel.g.landwerlin@intel.com

Merge request reports