summaryrefslogtreecommitdiff
path: root/src/util/format/u_format.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/format/u_format.c')
-rw-r--r--src/util/format/u_format.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c
index bd989c33f4e..aba5d51ed97 100644
--- a/src/util/format/u_format.c
+++ b/src/util/format/u_format.c
@@ -1262,3 +1262,97 @@ util_format_snorm_to_unorm(enum pipe_format format)
#undef CASE
}
+
+enum pipe_format
+util_format_rgbx_to_rgba(enum pipe_format format)
+{
+ switch (format) {
+ case PIPE_FORMAT_B8G8R8X8_UNORM:
+ return PIPE_FORMAT_B8G8R8A8_UNORM;
+ case PIPE_FORMAT_X8B8G8R8_UNORM:
+ return PIPE_FORMAT_A8B8G8R8_UNORM;
+ case PIPE_FORMAT_X8R8G8B8_UNORM:
+ return PIPE_FORMAT_A8R8G8B8_UNORM;
+ case PIPE_FORMAT_X8B8G8R8_SRGB:
+ return PIPE_FORMAT_A8B8G8R8_SRGB;
+ case PIPE_FORMAT_B8G8R8X8_SRGB:
+ return PIPE_FORMAT_B8G8R8A8_SRGB;
+ case PIPE_FORMAT_X8R8G8B8_SRGB:
+ return PIPE_FORMAT_A8R8G8B8_SRGB;
+ case PIPE_FORMAT_B5G5R5X1_UNORM:
+ return PIPE_FORMAT_B5G5R5A1_UNORM;
+ case PIPE_FORMAT_R10G10B10X2_USCALED:
+ return PIPE_FORMAT_R10G10B10A2_USCALED;
+ case PIPE_FORMAT_R10G10B10X2_SNORM:
+ return PIPE_FORMAT_R10G10B10A2_SNORM;
+ case PIPE_FORMAT_R8G8B8X8_UNORM:
+ return PIPE_FORMAT_R8G8B8A8_UNORM;
+ case PIPE_FORMAT_B4G4R4X4_UNORM:
+ return PIPE_FORMAT_B4G4R4A4_UNORM;
+ case PIPE_FORMAT_R8G8B8X8_SNORM:
+ return PIPE_FORMAT_R8G8B8A8_SNORM;
+ case PIPE_FORMAT_R8G8B8X8_SRGB:
+ return PIPE_FORMAT_R8G8B8A8_SRGB;
+ case PIPE_FORMAT_R8G8B8X8_UINT:
+ return PIPE_FORMAT_R8G8B8A8_UINT;
+ case PIPE_FORMAT_R8G8B8X8_SINT:
+ return PIPE_FORMAT_R8G8B8A8_SINT;
+ case PIPE_FORMAT_B10G10R10X2_UNORM:
+ return PIPE_FORMAT_B10G10R10A2_UNORM;
+ case PIPE_FORMAT_R16G16B16X16_UNORM:
+ return PIPE_FORMAT_R16G16B16A16_UNORM;
+ case PIPE_FORMAT_R16G16B16X16_SNORM:
+ return PIPE_FORMAT_R16G16B16A16_SNORM;
+ case PIPE_FORMAT_R16G16B16X16_FLOAT:
+ return PIPE_FORMAT_R16G16B16A16_FLOAT;
+ case PIPE_FORMAT_R16G16B16X16_UINT:
+ return PIPE_FORMAT_R16G16B16A16_UINT;
+ case PIPE_FORMAT_R16G16B16X16_SINT:
+ return PIPE_FORMAT_R16G16B16A16_SINT;
+ case PIPE_FORMAT_R32G32B32X32_FLOAT:
+ return PIPE_FORMAT_R32G32B32A32_FLOAT;
+ case PIPE_FORMAT_R32G32B32X32_UINT:
+ return PIPE_FORMAT_R32G32B32A32_UINT;
+ case PIPE_FORMAT_R32G32B32X32_SINT:
+ return PIPE_FORMAT_R32G32B32A32_SINT;
+ case PIPE_FORMAT_X8B8G8R8_SNORM:
+ return PIPE_FORMAT_A8B8G8R8_SNORM;
+ case PIPE_FORMAT_R10G10B10X2_UNORM:
+ return PIPE_FORMAT_R10G10B10A2_UNORM;
+ case PIPE_FORMAT_X1B5G5R5_UNORM:
+ return PIPE_FORMAT_A1B5G5R5_UNORM;
+ case PIPE_FORMAT_X8B8G8R8_SINT:
+ return PIPE_FORMAT_A8B8G8R8_SINT;
+ case PIPE_FORMAT_B8G8R8X8_SNORM:
+ return PIPE_FORMAT_B8G8R8A8_SNORM;
+ case PIPE_FORMAT_B8G8R8X8_UINT:
+ return PIPE_FORMAT_B8G8R8A8_UINT;
+ case PIPE_FORMAT_B8G8R8X8_SINT:
+ return PIPE_FORMAT_B8G8R8A8_SINT;
+ case PIPE_FORMAT_X8R8G8B8_SNORM:
+ return PIPE_FORMAT_A8R8G8B8_SNORM;
+ case PIPE_FORMAT_X8R8G8B8_SINT:
+ return PIPE_FORMAT_A8R8G8B8_SINT;
+ case PIPE_FORMAT_R5G5B5X1_UNORM:
+ return PIPE_FORMAT_R5G5B5A1_UNORM;
+ case PIPE_FORMAT_X1R5G5B5_UNORM:
+ return PIPE_FORMAT_A1R5G5B5_UNORM;
+ case PIPE_FORMAT_R4G4B4X4_UNORM:
+ return PIPE_FORMAT_R4G4B4A4_UNORM;
+ case PIPE_FORMAT_B10G10R10X2_SNORM:
+ return PIPE_FORMAT_B10G10R10A2_SNORM;
+ case PIPE_FORMAT_R10G10B10X2_SINT:
+ return PIPE_FORMAT_R10G10B10A2_SINT;
+ case PIPE_FORMAT_B10G10R10X2_SINT:
+ return PIPE_FORMAT_B10G10R10A2_SINT;
+ default: {
+ const struct util_format_description *desc = util_format_description(format);
+
+ /* Assert that the format doesn't contain X instead of A. */
+ assert(desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS ||
+ (desc->channel[0].type != UTIL_FORMAT_TYPE_VOID &&
+ desc->channel[desc->nr_channels - 1].type != UTIL_FORMAT_TYPE_VOID));
+ return format;
+ }
+ }
+}