[Mesa-dev] [PATCH] gallium/aux: add is_unorm() helper

Rob Clark robdclark at gmail.com
Tue Dec 11 22:48:08 UTC 2018


The z24s8 permutations are is_mixed, the x24s8 permutations are not
and will show up as is_unorm() (would have been an issue for
is_snorm() too except they are unsigned)

The 10_10_10_2 formats are not mixed.

In either case, I'm not sure is_norm() returning true is *incorrect*..

BR,
-R

On Tue, Dec 11, 2018 at 4:21 PM Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>
> So ... Z24 will end up with is_unorm() == true? [Just guessing --
> assume it doesn't hae is_mixed == true.] Also, does RGB10A2 have mixed
> set? If so, then it won't report unorm. Not 100% sure if is_mixed is
> only for norm + int mixing.
> On Tue, Dec 11, 2018 at 4:05 PM Rob Clark <robdclark at gmail.com> wrote:
> >
> > We already had one for is_snorm() but not unorm.
> >
> > Signed-off-by: Rob Clark <robdclark at gmail.com>
> > ---
> >  src/gallium/auxiliary/util/u_format.c | 21 +++++++++++++++++++++
> >  src/gallium/auxiliary/util/u_format.h |  3 +++
> >  2 files changed, 24 insertions(+)
> >
> > diff --git a/src/gallium/auxiliary/util/u_format.c b/src/gallium/auxiliary/util/u_format.c
> > index e43a619313e..231e89017b4 100644
> > --- a/src/gallium/auxiliary/util/u_format.c
> > +++ b/src/gallium/auxiliary/util/u_format.c
> > @@ -169,6 +169,27 @@ util_format_is_snorm(enum pipe_format format)
> >            desc->channel[i].normalized;
> >  }
> >
> > +/**
> > + * Returns true if all non-void channels are normalized unsigned.
> > + */
> > +boolean
> > +util_format_is_unorm(enum pipe_format format)
> > +{
> > +   const struct util_format_description *desc = util_format_description(format);
> > +   int i;
> > +
> > +   if (desc->is_mixed)
> > +      return FALSE;
> > +
> > +   i = util_format_get_first_non_void_channel(format);
> > +   if (i == -1)
> > +      return FALSE;
> > +
> > +   return desc->channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED &&
> > +          !desc->channel[i].pure_integer &&
> > +          desc->channel[i].normalized;
> > +}
> > +
> >  boolean
> >  util_format_is_snorm8(enum pipe_format format)
> >  {
> > diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h
> > index 5bcfc1f1154..8dcc438a4a1 100644
> > --- a/src/gallium/auxiliary/util/u_format.h
> > +++ b/src/gallium/auxiliary/util/u_format.h
> > @@ -726,6 +726,9 @@ util_format_is_pure_uint(enum pipe_format format);
> >  boolean
> >  util_format_is_snorm(enum pipe_format format);
> >
> > +boolean
> > +util_format_is_unorm(enum pipe_format format);
> > +
> >  boolean
> >  util_format_is_snorm8(enum pipe_format format);
> >
> > --
> > 2.19.2
> >
> > _______________________________________________
> > 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