Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Wed, Nov 1, 2017 at 3:45 PM, Brian Paul <bri...@vmware.com> wrote: > MSVC treats enums as being signed. The 4-bit target field isn't large > enough to correctly store the value 8 (for PIPE_TEXTURE_CUBE_ARRAY). > The bitfield value 0x8 was being interpreted as -8 so matching the > target with PIPE_TEXTURE_CUBE_ARRAY in switch statements, etc. was > failing. > > To keep the structure size the same, we reduce the format field from > 16 bits to 15. There don't appear to be any other enum bitfields > which need to be adjusted. > > This fixes a number of Piglit cube map array tests. > --- > src/gallium/include/pipe/p_state.h | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/include/pipe/p_state.h > b/src/gallium/include/pipe/p_state.h > index 10bf678..90dc561 100644 > --- a/src/gallium/include/pipe/p_state.h > +++ b/src/gallium/include/pipe/p_state.h > @@ -34,6 +34,10 @@ > * Basic notes: > * 1. Want compact representations, so we use bitfields. > * 2. Put bitfields before other (GLfloat) fields. > + * 3. enum bitfields need to be at least one bit extra in size so the most > + * significant bit is zero. MSVC treats enums as signed so if the high > + * bit is set, the value will be interpreted as a negative number. > + * That causes trouble in various places. > */ > > > @@ -436,8 +440,8 @@ struct pipe_surface > struct pipe_sampler_view > { > struct pipe_reference reference; > - enum pipe_format format:16; /**< typed PIPE_FORMAT_x */ > - enum pipe_texture_target target:4; /**< PIPE_TEXTURE_x */ > + enum pipe_format format:15; /**< typed PIPE_FORMAT_x */ > + enum pipe_texture_target target:5; /**< PIPE_TEXTURE_x */ > unsigned swizzle_r:3; /**< PIPE_SWIZZLE_x for red component */ > unsigned swizzle_g:3; /**< PIPE_SWIZZLE_x for green component */ > unsigned swizzle_b:3; /**< PIPE_SWIZZLE_x for blue component */ > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev