[Mesa-dev] [PATCH v2 08/13] mesa/format_utils: Add a general format conversion function
Brian Paul
brianp at vmware.com
Mon Aug 4 07:55:44 PDT 2014
On 08/02/2014 02:11 PM, Jason Ekstrand wrote:
> Most format conversion operations required by GL can be performed by
> converting one channel at a time, shuffling the channels around, and
> optionally filling missing channels with zeros and ones. This adds a
> function to do just that in a general, yet efficient, way.
>
> v2:
> * Add better comments including full docs for functions
> * Don't use __typeof__
> * Use inline helpers instead of writing out conversions by hand,
> * Force full loop unrolling for better performance
>
> Signed-off-by: Jason Ekstrand <jason.ekstrand at intel.com>
> ---
> src/mesa/main/format_utils.c | 844 +++++++++++++++++++++++++++++++++++++++++++
> src/mesa/main/format_utils.h | 5 +
> 2 files changed, 849 insertions(+)
>
> diff --git a/src/mesa/main/format_utils.c b/src/mesa/main/format_utils.c
> index 241c158..d60aeb3 100644
> --- a/src/mesa/main/format_utils.c
> +++ b/src/mesa/main/format_utils.c
> @@ -54,3 +54,847 @@ _mesa_srgb_ubyte_to_linear_float(uint8_t cl)
>
> return lut[cl];
> }
> +
> +/* A bunch of format conversion macros and helper functions used below */
> +
> +/* Only guaranteed to work for BITS <= 32 */
> +#define MAX_UINT(BITS) ((BITS) == 32 ? UINT32_MAX : ((1u << (BITS)) - 1))
> +#define MAX_INT(BITS) (int)MAX_UINT((BITS) - 1)
I'd probably put one more set of parens around the whole macro body,
just to be safe.
-Brian
More information about the mesa-dev
mailing list