summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/mesa/files/mesa-10.3.7-format_utils.c.patch')
-rw-r--r--media-libs/mesa/files/mesa-10.3.7-format_utils.c.patch1089
1 files changed, 0 insertions, 1089 deletions
diff --git a/media-libs/mesa/files/mesa-10.3.7-format_utils.c.patch b/media-libs/mesa/files/mesa-10.3.7-format_utils.c.patch
deleted file mode 100644
index e1fba03..0000000
--- a/media-libs/mesa/files/mesa-10.3.7-format_utils.c.patch
+++ /dev/null
@@ -1,1089 +0,0 @@
-From cfeb394224f2daeb2139cf4ec489a4dd8297a44d Mon Sep 17 00:00:00 2001
-From: Brian Paul <brianp@vmware.com>
-Date: Fri, 12 Sep 2014 08:31:15 -0600
-Subject: [PATCH] mesa: break up _mesa_swizzle_and_convert() to reduce compile
- time
-
-This reduces gcc -O3 compile time to 1/4 of what it was on my system.
-Reduces MSVC release build time too.
-
-Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
----
- src/mesa/main/format_utils.c | 1030 ++++++++++++++++++++++--------------------
- 1 file changed, 550 insertions(+), 480 deletions(-)
-
-diff --git a/src/mesa/main/format_utils.c b/src/mesa/main/format_utils.c
-index 240e3bc..29d779a 100644
---- a/src/mesa/main/format_utils.c
-+++ b/src/mesa/main/format_utils.c
-@@ -352,9 +352,14 @@ swizzle_convert_try_memcpy(void *dst, GLenum dst_type, int num_dst_channels,
- */
- #define SWIZZLE_CONVERT(DST_TYPE, SRC_TYPE, CONV) \
- do { \
-+ const uint8_t swizzle_x = swizzle[0]; \
-+ const uint8_t swizzle_y = swizzle[1]; \
-+ const uint8_t swizzle_z = swizzle[2]; \
-+ const uint8_t swizzle_w = swizzle[3]; \
- const SRC_TYPE *typed_src = void_src; \
- DST_TYPE *typed_dst = void_dst; \
- DST_TYPE tmp[7]; \
-+ int s, j; \
- tmp[4] = 0; \
- tmp[5] = one; \
- switch (num_dst_channels) { \
-@@ -423,7 +428,527 @@ swizzle_convert_try_memcpy(void *dst, GLenum dst_type, int num_dst_channels,
- } \
- break; \
- } \
-- } while (0);
-+ } while (0)
-+
-+
-+static void
-+convert_float(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const float one = 1.0f;
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ SWIZZLE_CONVERT(float, float, src);
-+ break;
-+ case GL_HALF_FLOAT:
-+ SWIZZLE_CONVERT(float, uint16_t, _mesa_half_to_float(src));
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(float, uint8_t, unorm_to_float(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(float, uint8_t, src);
-+ }
-+ break;
-+ case GL_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(float, int8_t, snorm_to_float(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(float, int8_t, src);
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(float, uint16_t, unorm_to_float(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(float, uint16_t, src);
-+ }
-+ break;
-+ case GL_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(float, int16_t, snorm_to_float(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(float, int16_t, src);
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(float, uint32_t, unorm_to_float(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(float, uint32_t, src);
-+ }
-+ break;
-+ case GL_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(float, int32_t, snorm_to_float(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(float, int32_t, src);
-+ }
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-+
-+static void
-+convert_half_float(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const uint16_t one = _mesa_float_to_half(1.0f);
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ SWIZZLE_CONVERT(uint16_t, float, _mesa_float_to_half(src));
-+ break;
-+ case GL_HALF_FLOAT:
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, src);
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, uint8_t, unorm_to_half(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, uint8_t, _mesa_float_to_half(src));
-+ }
-+ break;
-+ case GL_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, int8_t, snorm_to_half(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, int8_t, _mesa_float_to_half(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, unorm_to_half(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, _mesa_float_to_half(src));
-+ }
-+ break;
-+ case GL_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, int16_t, snorm_to_half(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, int16_t, _mesa_float_to_half(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, uint32_t, unorm_to_half(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, uint32_t, _mesa_float_to_half(src));
-+ }
-+ break;
-+ case GL_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, int32_t, snorm_to_half(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, int32_t, _mesa_float_to_half(src));
-+ }
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-+
-+static void
-+convert_ubyte(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const uint8_t one = normalized ? UINT8_MAX : 1;
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, float, float_to_unorm(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, float, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_HALF_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, uint16_t, half_to_unorm(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, uint16_t, half_to_uint(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ SWIZZLE_CONVERT(uint8_t, uint8_t, src);
-+ break;
-+ case GL_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, int8_t, snorm_to_unorm(src, 8, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, int8_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, uint16_t, unorm_to_unorm(src, 16, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, uint16_t, src);
-+ }
-+ break;
-+ case GL_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, int16_t, snorm_to_unorm(src, 16, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, int16_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, uint32_t, unorm_to_unorm(src, 32, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, uint32_t, src);
-+ }
-+ break;
-+ case GL_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, int32_t, snorm_to_unorm(src, 32, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, int32_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-+
-+static void
-+convert_byte(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const int8_t one = normalized ? INT8_MAX : 1;
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, float, float_to_snorm(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, float, src);
-+ }
-+ break;
-+ case GL_HALF_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint8_t, uint16_t, half_to_snorm(src, 8));
-+ } else {
-+ SWIZZLE_CONVERT(uint8_t, uint16_t, _mesa_half_to_float(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int8_t, uint8_t, unorm_to_snorm(src, 8, 8));
-+ } else {
-+ SWIZZLE_CONVERT(int8_t, uint8_t, src);
-+ }
-+ break;
-+ case GL_BYTE:
-+ SWIZZLE_CONVERT(int8_t, int8_t, src);
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int8_t, uint16_t, unorm_to_snorm(src, 16, 8));
-+ } else {
-+ SWIZZLE_CONVERT(int8_t, uint16_t, src);
-+ }
-+ break;
-+ case GL_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int8_t, int16_t, snorm_to_snorm(src, 16, 8));
-+ } else {
-+ SWIZZLE_CONVERT(int8_t, int16_t, src);
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int8_t, uint32_t, unorm_to_snorm(src, 32, 8));
-+ } else {
-+ SWIZZLE_CONVERT(int8_t, uint32_t, src);
-+ }
-+ break;
-+ case GL_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int8_t, int32_t, snorm_to_snorm(src, 32, 8));
-+ } else {
-+ SWIZZLE_CONVERT(int8_t, int32_t, src);
-+ }
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-+
-+static void
-+convert_ushort(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const uint16_t one = normalized ? UINT16_MAX : 1;
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, float, float_to_unorm(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, float, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_HALF_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, half_to_unorm(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, half_to_uint(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, uint8_t, unorm_to_unorm(src, 8, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, uint8_t, src);
-+ }
-+ break;
-+ case GL_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, int8_t, snorm_to_unorm(src, 8, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, int8_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, src);
-+ break;
-+ case GL_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, int16_t, snorm_to_unorm(src, 16, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, int16_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, uint32_t, unorm_to_unorm(src, 32, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, uint32_t, src);
-+ }
-+ break;
-+ case GL_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, int32_t, snorm_to_unorm(src, 32, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, int32_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-+
-+static void
-+convert_short(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const int16_t one = normalized ? INT16_MAX : 1;
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, float, float_to_snorm(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, float, src);
-+ }
-+ break;
-+ case GL_HALF_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, half_to_snorm(src, 16));
-+ } else {
-+ SWIZZLE_CONVERT(uint16_t, uint16_t, _mesa_half_to_float(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int16_t, uint8_t, unorm_to_snorm(src, 8, 16));
-+ } else {
-+ SWIZZLE_CONVERT(int16_t, uint8_t, src);
-+ }
-+ break;
-+ case GL_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int16_t, int8_t, snorm_to_snorm(src, 8, 16));
-+ } else {
-+ SWIZZLE_CONVERT(int16_t, int8_t, src);
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int16_t, uint16_t, unorm_to_snorm(src, 16, 16));
-+ } else {
-+ SWIZZLE_CONVERT(int16_t, uint16_t, src);
-+ }
-+ break;
-+ case GL_SHORT:
-+ SWIZZLE_CONVERT(int16_t, int16_t, src);
-+ break;
-+ case GL_UNSIGNED_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int16_t, uint32_t, unorm_to_snorm(src, 32, 16));
-+ } else {
-+ SWIZZLE_CONVERT(int16_t, uint32_t, src);
-+ }
-+ break;
-+ case GL_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int16_t, int32_t, snorm_to_snorm(src, 32, 16));
-+ } else {
-+ SWIZZLE_CONVERT(int16_t, int32_t, src);
-+ }
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-+static void
-+convert_uint(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const uint32_t one = normalized ? UINT32_MAX : 1;
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, float, float_to_unorm(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, float, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_HALF_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, uint16_t, half_to_unorm(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, uint16_t, half_to_uint(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, uint8_t, unorm_to_unorm(src, 8, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, uint8_t, src);
-+ }
-+ break;
-+ case GL_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, int8_t, snorm_to_unorm(src, 8, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, int8_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, uint16_t, unorm_to_unorm(src, 16, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, uint16_t, src);
-+ }
-+ break;
-+ case GL_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, int16_t, snorm_to_unorm(src, 16, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, int16_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ SWIZZLE_CONVERT(uint32_t, uint32_t, src);
-+ break;
-+ case GL_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, int32_t, snorm_to_unorm(src, 32, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, int32_t, (src < 0) ? 0 : src);
-+ }
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-+
-+static void
-+convert_int(void *void_dst, int num_dst_channels,
-+ const void *void_src, GLenum src_type, int num_src_channels,
-+ const uint8_t swizzle[4], bool normalized, int count)
-+{
-+ const int32_t one = normalized ? INT32_MAX : 12;
-+
-+ switch (src_type) {
-+ case GL_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, float, float_to_snorm(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, float, src);
-+ }
-+ break;
-+ case GL_HALF_FLOAT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(uint32_t, uint16_t, half_to_snorm(src, 32));
-+ } else {
-+ SWIZZLE_CONVERT(uint32_t, uint16_t, _mesa_half_to_float(src));
-+ }
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int32_t, uint8_t, unorm_to_snorm(src, 8, 32));
-+ } else {
-+ SWIZZLE_CONVERT(int32_t, uint8_t, src);
-+ }
-+ break;
-+ case GL_BYTE:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int32_t, int8_t, snorm_to_snorm(src, 8, 32));
-+ } else {
-+ SWIZZLE_CONVERT(int32_t, int8_t, src);
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int32_t, uint16_t, unorm_to_snorm(src, 16, 32));
-+ } else {
-+ SWIZZLE_CONVERT(int32_t, uint16_t, src);
-+ }
-+ break;
-+ case GL_SHORT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int32_t, int16_t, snorm_to_snorm(src, 16, 32));
-+ } else {
-+ SWIZZLE_CONVERT(int32_t, int16_t, src);
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ if (normalized) {
-+ SWIZZLE_CONVERT(int32_t, uint32_t, unorm_to_snorm(src, 32, 32));
-+ } else {
-+ SWIZZLE_CONVERT(int32_t, uint32_t, src);
-+ }
-+ break;
-+ case GL_INT:
-+ SWIZZLE_CONVERT(int32_t, int32_t, src);
-+ break;
-+ default:
-+ assert(!"Invalid channel type combination");
-+ }
-+}
-+
-
- /**
- * Convert between array-based color formats.
-@@ -478,499 +1003,44 @@ _mesa_swizzle_and_convert(void *void_dst, GLenum dst_type, int num_dst_channels,
- const void *void_src, GLenum src_type, int num_src_channels,
- const uint8_t swizzle[4], bool normalized, int count)
- {
-- int s, j;
-- register uint8_t swizzle_x, swizzle_y, swizzle_z, swizzle_w;
--
- if (swizzle_convert_try_memcpy(void_dst, dst_type, num_dst_channels,
- void_src, src_type, num_src_channels,
- swizzle, normalized, count))
- return;
-
-- swizzle_x = swizzle[0];
-- swizzle_y = swizzle[1];
-- swizzle_z = swizzle[2];
-- swizzle_w = swizzle[3];
--
- switch (dst_type) {
- case GL_FLOAT:
-- {
-- const float one = 1.0f;
-- switch (src_type) {
-- case GL_FLOAT:
-- SWIZZLE_CONVERT(float, float, src)
-- break;
-- case GL_HALF_FLOAT:
-- SWIZZLE_CONVERT(float, uint16_t, _mesa_half_to_float(src))
-- break;
-- case GL_UNSIGNED_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(float, uint8_t, unorm_to_float(src, 8))
-- } else {
-- SWIZZLE_CONVERT(float, uint8_t, src)
-- }
-- break;
-- case GL_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(float, int8_t, snorm_to_float(src, 8))
-- } else {
-- SWIZZLE_CONVERT(float, int8_t, src)
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(float, uint16_t, unorm_to_float(src, 16))
-- } else {
-- SWIZZLE_CONVERT(float, uint16_t, src)
-- }
-- break;
-- case GL_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(float, int16_t, snorm_to_float(src, 16))
-- } else {
-- SWIZZLE_CONVERT(float, int16_t, src)
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(float, uint32_t, unorm_to_float(src, 32))
-- } else {
-- SWIZZLE_CONVERT(float, uint32_t, src)
-- }
-- break;
-- case GL_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(float, int32_t, snorm_to_float(src, 32))
-- } else {
-- SWIZZLE_CONVERT(float, int32_t, src)
-- }
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_float(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- case GL_HALF_FLOAT:
-- {
-- const uint16_t one = _mesa_float_to_half(1.0f);
-- switch (src_type) {
-- case GL_FLOAT:
-- SWIZZLE_CONVERT(uint16_t, float, _mesa_float_to_half(src))
-- break;
-- case GL_HALF_FLOAT:
-- SWIZZLE_CONVERT(uint16_t, uint16_t, src)
-- break;
-- case GL_UNSIGNED_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, uint8_t, unorm_to_half(src, 8))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, uint8_t, _mesa_float_to_half(src))
-- }
-- break;
-- case GL_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, int8_t, snorm_to_half(src, 8))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, int8_t, _mesa_float_to_half(src))
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, uint16_t, unorm_to_half(src, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, uint16_t, _mesa_float_to_half(src))
-- }
-- break;
-- case GL_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, int16_t, snorm_to_half(src, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, int16_t, _mesa_float_to_half(src))
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, uint32_t, unorm_to_half(src, 32))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, uint32_t, _mesa_float_to_half(src))
-- }
-- break;
-- case GL_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, int32_t, snorm_to_half(src, 32))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, int32_t, _mesa_float_to_half(src))
-- }
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_half_float(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- case GL_UNSIGNED_BYTE:
-- {
-- const uint8_t one = normalized ? UINT8_MAX : 1;
-- switch (src_type) {
-- case GL_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, float, float_to_unorm(src, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, float, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_HALF_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, uint16_t, half_to_unorm(src, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, uint16_t, half_to_uint(src))
-- }
-- break;
-- case GL_UNSIGNED_BYTE:
-- SWIZZLE_CONVERT(uint8_t, uint8_t, src)
-- break;
-- case GL_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, int8_t, snorm_to_unorm(src, 8, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, int8_t, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, uint16_t, unorm_to_unorm(src, 16, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, uint16_t, src)
-- }
-- break;
-- case GL_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, int16_t, snorm_to_unorm(src, 16, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, int16_t, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, uint32_t, unorm_to_unorm(src, 32, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, uint32_t, src)
-- }
-- break;
-- case GL_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, int32_t, snorm_to_unorm(src, 32, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, int32_t, (src < 0) ? 0 : src)
-- }
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_ubyte(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- case GL_BYTE:
-- {
-- const int8_t one = normalized ? INT8_MAX : 1;
-- switch (src_type) {
-- case GL_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, float, float_to_snorm(src, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, float, src)
-- }
-- break;
-- case GL_HALF_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint8_t, uint16_t, half_to_snorm(src, 8))
-- } else {
-- SWIZZLE_CONVERT(uint8_t, uint16_t, _mesa_half_to_float(src))
-- }
-- break;
-- case GL_UNSIGNED_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(int8_t, uint8_t, unorm_to_snorm(src, 8, 8))
-- } else {
-- SWIZZLE_CONVERT(int8_t, uint8_t, src)
-- }
-- break;
-- case GL_BYTE:
-- SWIZZLE_CONVERT(int8_t, int8_t, src)
-- break;
-- case GL_UNSIGNED_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int8_t, uint16_t, unorm_to_snorm(src, 16, 8))
-- } else {
-- SWIZZLE_CONVERT(int8_t, uint16_t, src)
-- }
-- break;
-- case GL_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int8_t, int16_t, snorm_to_snorm(src, 16, 8))
-- } else {
-- SWIZZLE_CONVERT(int8_t, int16_t, src)
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int8_t, uint32_t, unorm_to_snorm(src, 32, 8))
-- } else {
-- SWIZZLE_CONVERT(int8_t, uint32_t, src)
-- }
-- break;
-- case GL_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int8_t, int32_t, snorm_to_snorm(src, 32, 8))
-- } else {
-- SWIZZLE_CONVERT(int8_t, int32_t, src)
-- }
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_byte(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- case GL_UNSIGNED_SHORT:
-- {
-- const uint16_t one = normalized ? UINT16_MAX : 1;
-- switch (src_type) {
-- case GL_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, float, float_to_unorm(src, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, float, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_HALF_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, uint16_t, half_to_unorm(src, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, uint16_t, half_to_uint(src))
-- }
-- break;
-- case GL_UNSIGNED_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, uint8_t, unorm_to_unorm(src, 8, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, uint8_t, src)
-- }
-- break;
-- case GL_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, int8_t, snorm_to_unorm(src, 8, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, int8_t, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- SWIZZLE_CONVERT(uint16_t, uint16_t, src)
-- break;
-- case GL_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, int16_t, snorm_to_unorm(src, 16, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, int16_t, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, uint32_t, unorm_to_unorm(src, 32, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, uint32_t, src)
-- }
-- break;
-- case GL_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, int32_t, snorm_to_unorm(src, 32, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, int32_t, (src < 0) ? 0 : src)
-- }
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_ushort(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- case GL_SHORT:
-- {
-- const int16_t one = normalized ? INT16_MAX : 1;
-- switch (src_type) {
-- case GL_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, float, float_to_snorm(src, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, float, src)
-- }
-- break;
-- case GL_HALF_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint16_t, uint16_t, half_to_snorm(src, 16))
-- } else {
-- SWIZZLE_CONVERT(uint16_t, uint16_t, _mesa_half_to_float(src))
-- }
-- break;
-- case GL_UNSIGNED_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(int16_t, uint8_t, unorm_to_snorm(src, 8, 16))
-- } else {
-- SWIZZLE_CONVERT(int16_t, uint8_t, src)
-- }
-- break;
-- case GL_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(int16_t, int8_t, snorm_to_snorm(src, 8, 16))
-- } else {
-- SWIZZLE_CONVERT(int16_t, int8_t, src)
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int16_t, uint16_t, unorm_to_snorm(src, 16, 16))
-- } else {
-- SWIZZLE_CONVERT(int16_t, uint16_t, src)
-- }
-- break;
-- case GL_SHORT:
-- SWIZZLE_CONVERT(int16_t, int16_t, src)
-- break;
-- case GL_UNSIGNED_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int16_t, uint32_t, unorm_to_snorm(src, 32, 16))
-- } else {
-- SWIZZLE_CONVERT(int16_t, uint32_t, src)
-- }
-- break;
-- case GL_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int16_t, int32_t, snorm_to_snorm(src, 32, 16))
-- } else {
-- SWIZZLE_CONVERT(int16_t, int32_t, src)
-- }
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_short(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- case GL_UNSIGNED_INT:
-- {
-- const uint32_t one = normalized ? UINT32_MAX : 1;
-- switch (src_type) { case GL_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, float, float_to_unorm(src, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, float, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_HALF_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, uint16_t, half_to_unorm(src, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, uint16_t, half_to_uint(src))
-- }
-- break;
-- case GL_UNSIGNED_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, uint8_t, unorm_to_unorm(src, 8, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, uint8_t, src)
-- }
-- break;
-- case GL_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, int8_t, snorm_to_unorm(src, 8, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, int8_t, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, uint16_t, unorm_to_unorm(src, 16, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, uint16_t, src)
-- }
-- break;
-- case GL_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, int16_t, snorm_to_unorm(src, 16, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, int16_t, (src < 0) ? 0 : src)
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- SWIZZLE_CONVERT(uint32_t, uint32_t, src)
-- break;
-- case GL_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, int32_t, snorm_to_unorm(src, 32, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, int32_t, (src < 0) ? 0 : src)
-- }
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_uint(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- case GL_INT:
-- {
-- const int32_t one = normalized ? INT32_MAX : 1;
-- switch (src_type) {
-- case GL_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, float, float_to_snorm(src, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, float, src)
-- }
-- break;
-- case GL_HALF_FLOAT:
-- if (normalized) {
-- SWIZZLE_CONVERT(uint32_t, uint16_t, half_to_snorm(src, 32))
-- } else {
-- SWIZZLE_CONVERT(uint32_t, uint16_t, _mesa_half_to_float(src))
-- }
-- break;
-- case GL_UNSIGNED_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(int32_t, uint8_t, unorm_to_snorm(src, 8, 32))
-- } else {
-- SWIZZLE_CONVERT(int32_t, uint8_t, src)
-- }
-- break;
-- case GL_BYTE:
-- if (normalized) {
-- SWIZZLE_CONVERT(int32_t, int8_t, snorm_to_snorm(src, 8, 32))
-- } else {
-- SWIZZLE_CONVERT(int32_t, int8_t, src)
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int32_t, uint16_t, unorm_to_snorm(src, 16, 32))
-- } else {
-- SWIZZLE_CONVERT(int32_t, uint16_t, src)
-- }
-- break;
-- case GL_SHORT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int32_t, int16_t, snorm_to_snorm(src, 16, 32))
-- } else {
-- SWIZZLE_CONVERT(int32_t, int16_t, src)
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- if (normalized) {
-- SWIZZLE_CONVERT(int32_t, uint32_t, unorm_to_snorm(src, 32, 32))
-- } else {
-- SWIZZLE_CONVERT(int32_t, uint32_t, src)
-- }
-- break;
-- case GL_INT:
-- SWIZZLE_CONVERT(int32_t, int32_t, src)
-- break;
-- default:
-- assert(!"Invalid channel type combination");
-- }
-- }
-- break;
-+ convert_int(void_dst, num_dst_channels, void_src, src_type,
-+ num_src_channels, swizzle, normalized, count);
-+ break;
- default:
- assert(!"Invalid channel type");
- }
---
-2.0.5
-