[Mesa-dev] [PATCH] glsl: use bitwise operators in varying_matches::compute_packing_class()

Timothy Arceri tarceri at itsqueeze.com
Thu Dec 21 01:12:38 UTC 2017


rb

-- 
  Timothy Arceri
  tarceri at itsqueeze.com

On Wed, Dec 20, 2017, at 5:08 PM, Brian Paul wrote:
> Ping, anyone?
> 
> -Brian
> 
> On 12/18/2017 09:30 PM, Brian Paul wrote:
> > The mix of bitwise operators with * and + to compute the packing_class
> > values was a little weird.  Just use bitwise ops instead.
> >
> > v2: add assertion to make sure interpolation bits fit without collision,
> > per Timothy.  Basically, rewrite function to be simpler.
> > ---
> >   src/compiler/glsl/link_varyings.cpp | 15 ++++++++++-----
> >   1 file changed, 10 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
> > index 7821b1e..5d39889 100644
> > --- a/src/compiler/glsl/link_varyings.cpp
> > +++ b/src/compiler/glsl/link_varyings.cpp
> > @@ -1982,12 +1982,17 @@ varying_matches::compute_packing_class(const ir_variable *var)
> >       *
> >       * Therefore, the packing class depends only on the interpolation type.
> >       */
> > -   unsigned packing_class = var->data.centroid | (var->data.sample << 1) |
> > -                            (var->data.patch << 2) |
> > -                            (var->data.must_be_shader_input << 3);
> > -   packing_class *= 8;
> > -   packing_class += var->is_interpolation_flat()
> > +   const unsigned interp = var->is_interpolation_flat()
> >         ? unsigned(INTERP_MODE_FLAT) : var->data.interpolation;
> > +
> > +   assert(interp < (1 << 3));
> > +
> > +   const unsigned packing_class = (interp << 0) |
> > +                                  (var->data.centroid << 3) |
> > +                                  (var->data.sample << 4) |
> > +                                  (var->data.patch << 5) |
> > +                                  (var->data.must_be_shader_input << 6);
> > +
> >      return packing_class;
> >   }
> >
> >
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list