[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