We have to pass these around various places that are API agnostic. It's nice to have an API agnostic enum and also be able to print it. --- src/compiler/shader_enums.c | 56 +++++++++++++++++++++++++++++++++++++++++++++ src/compiler/shader_enums.h | 54 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+)
diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c index b2ca80b..3939e30 100644 --- a/src/compiler/shader_enums.c +++ b/src/compiler/shader_enums.c @@ -273,3 +273,59 @@ gl_frag_result_name(gl_frag_result result) STATIC_ASSERT(ARRAY_SIZE(names) == FRAG_RESULT_MAX); return NAME(result); } + +const char * +gl_image_format_name(enum gl_image_format format) +{ + switch (format) { +#define CASE(fmt) case fmt: return #fmt; + CASE(IMAGE_FORMAT_NONE) + + CASE(IMAGE_FORMAT_RGBA32F) + CASE(IMAGE_FORMAT_RGBA16F) + CASE(IMAGE_FORMAT_RG32F) + CASE(IMAGE_FORMAT_RG16F) + CASE(IMAGE_FORMAT_R11F_G11F_B10F) + CASE(IMAGE_FORMAT_R32F) + CASE(IMAGE_FORMAT_R16F) + + CASE(IMAGE_FORMAT_RGBA32UI) + CASE(IMAGE_FORMAT_RGBA16UI) + CASE(IMAGE_FORMAT_RGB10_A2UI) + CASE(IMAGE_FORMAT_RGBA8UI) + CASE(IMAGE_FORMAT_RG32UI) + CASE(IMAGE_FORMAT_RG16UI) + CASE(IMAGE_FORMAT_RG8UI) + CASE(IMAGE_FORMAT_R32UI) + CASE(IMAGE_FORMAT_R16UI) + CASE(IMAGE_FORMAT_R8UI) + + CASE(IMAGE_FORMAT_RGBA32I) + CASE(IMAGE_FORMAT_RGBA16I) + CASE(IMAGE_FORMAT_RGBA8I) + CASE(IMAGE_FORMAT_RG32I) + CASE(IMAGE_FORMAT_RG16I) + CASE(IMAGE_FORMAT_RG8I) + CASE(IMAGE_FORMAT_R32I) + CASE(IMAGE_FORMAT_R16I) + CASE(IMAGE_FORMAT_R8I) + + CASE(IMAGE_FORMAT_RGBA16) + CASE(IMAGE_FORMAT_RGB10_A2) + CASE(IMAGE_FORMAT_RGBA8) + CASE(IMAGE_FORMAT_RG16) + CASE(IMAGE_FORMAT_RG8) + CASE(IMAGE_FORMAT_R16) + CASE(IMAGE_FORMAT_R8) + + CASE(IMAGE_FORMAT_RGBA16_SNORM) + CASE(IMAGE_FORMAT_RGBA8_SNORM) + CASE(IMAGE_FORMAT_RG16_SNORM) + CASE(IMAGE_FORMAT_RG8_SNORM) + CASE(IMAGE_FORMAT_R16_SNORM) + CASE(IMAGE_FORMAT_R8_SNORM) +#undef CASE + }; + + unreachable("Unknown image format."); +} diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index 352f270..4a227ce 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -26,6 +26,8 @@ #ifndef SHADER_ENUMS_H #define SHADER_ENUMS_H +#include "util/macros.h" + #ifdef __cplusplus extern "C" { #endif @@ -663,6 +665,58 @@ enum gl_tess_spacing TESS_SPACING_FRACTIONAL_EVEN, }; +/* These match the GL enums */ +enum PACKED gl_image_format +{ + IMAGE_FORMAT_NONE = 0, + + IMAGE_FORMAT_RGBA32F = 0x8814, + IMAGE_FORMAT_RGBA16F = 0x881A, + IMAGE_FORMAT_RG32F = 0x8230, + IMAGE_FORMAT_RG16F = 0x822F, + IMAGE_FORMAT_R11F_G11F_B10F = 0x8C3A, + IMAGE_FORMAT_R32F = 0x822E, + IMAGE_FORMAT_R16F = 0x822D, + + IMAGE_FORMAT_RGBA32UI = 0x8D70, + IMAGE_FORMAT_RGBA16UI = 0x8D76, + IMAGE_FORMAT_RGB10_A2UI = 0x906F, + IMAGE_FORMAT_RGBA8UI = 0x8D7C, + IMAGE_FORMAT_RG32UI = 0x823C, + IMAGE_FORMAT_RG16UI = 0x823A, + IMAGE_FORMAT_RG8UI = 0x8238, + IMAGE_FORMAT_R32UI = 0x8236, + IMAGE_FORMAT_R16UI = 0x8234, + IMAGE_FORMAT_R8UI = 0x8232, + + IMAGE_FORMAT_RGBA32I = 0x8D82, + IMAGE_FORMAT_RGBA16I = 0x8D88, + IMAGE_FORMAT_RGBA8I = 0x8D8E, + IMAGE_FORMAT_RG32I = 0x823B, + IMAGE_FORMAT_RG16I = 0x8239, + IMAGE_FORMAT_RG8I = 0x8237, + IMAGE_FORMAT_R32I = 0x8235, + IMAGE_FORMAT_R16I = 0x8233, + IMAGE_FORMAT_R8I = 0x8231, + + IMAGE_FORMAT_RGBA16 = 0x805B, + IMAGE_FORMAT_RGB10_A2 = 0x8059, + IMAGE_FORMAT_RGBA8 = 0x8058, + IMAGE_FORMAT_RG16 = 0x822C, + IMAGE_FORMAT_RG8 = 0x822B, + IMAGE_FORMAT_R16 = 0x822A, + IMAGE_FORMAT_R8 = 0x8229, + + IMAGE_FORMAT_RGBA16_SNORM = 0x8F9B, + IMAGE_FORMAT_RGBA8_SNORM = 0x8F97, + IMAGE_FORMAT_RG16_SNORM = 0x8F99, + IMAGE_FORMAT_RG8_SNORM = 0x8F95, + IMAGE_FORMAT_R16_SNORM = 0x8F98, + IMAGE_FORMAT_R8_SNORM = 0x8F94, +}; + +const char *gl_image_format_name(enum gl_image_format format); + #ifdef __cplusplus } /* extern "C" */ #endif -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev