util: Allow to make the depth/stencil format queries without repeatedly looking up the format description.

All functions here should take struct util_format_description * IMO, to
incentive efficient code.
This commit is contained in:
José Fonseca 2011-09-21 11:15:10 -06:00 committed by Brian Paul
parent c40c1599bb
commit ffb1996f61

View file

@ -410,7 +410,21 @@ util_format_is_s3tc(enum pipe_format format)
return desc->layout == UTIL_FORMAT_LAYOUT_S3TC ? TRUE : FALSE;
}
static INLINE boolean
static INLINE boolean
util_format_has_depth(const struct util_format_description *desc)
{
return desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS &&
desc->swizzle[0] != UTIL_FORMAT_SWIZZLE_NONE;
}
static INLINE boolean
util_format_has_stencil(const struct util_format_description *desc)
{
return desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS &&
desc->swizzle[1] != UTIL_FORMAT_SWIZZLE_NONE;
}
static INLINE boolean
util_format_is_depth_or_stencil(enum pipe_format format)
{
const struct util_format_description *desc = util_format_description(format);
@ -420,10 +434,11 @@ util_format_is_depth_or_stencil(enum pipe_format format)
return FALSE;
}
return desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS ? TRUE : FALSE;
return util_format_has_depth(desc) ||
util_format_has_stencil(desc);
}
static INLINE boolean
static INLINE boolean
util_format_is_depth_and_stencil(enum pipe_format format)
{
const struct util_format_description *desc = util_format_description(format);
@ -433,12 +448,8 @@ util_format_is_depth_and_stencil(enum pipe_format format)
return FALSE;
}
if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) {
return FALSE;
}
return (desc->swizzle[0] != UTIL_FORMAT_SWIZZLE_NONE &&
desc->swizzle[1] != UTIL_FORMAT_SWIZZLE_NONE) ? TRUE : FALSE;
return util_format_has_depth(desc) &&
util_format_has_stencil(desc);
}