[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