diff options
Diffstat (limited to 'src/util/format/u_format.c')
-rw-r--r-- | src/util/format/u_format.c | 94 |
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; + } + } +} |