--- src/compiler/glsl/ast.h | 2 +- src/compiler/glsl/ast_to_hir.cpp | 4 +- src/compiler/glsl/builtin_variables.cpp | 2 +- src/compiler/glsl/glsl_parser.yy | 80 ++++++++++++++++----------------- src/compiler/glsl/ir.h | 2 +- src/compiler/glsl_types.h | 8 ++-- 6 files changed, 50 insertions(+), 48 deletions(-)
diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h index 3bf4b08..b4d444c 100644 --- a/src/compiler/glsl/ast.h +++ b/src/compiler/glsl/ast.h @@ -740,7 +740,7 @@ struct ast_type_qualifier { * \note * This field is only valid if \c explicit_image_format is set. */ - GLenum image_format; + gl_image_format image_format; /** * Base type of the data read from or written to this image. Only diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index b1e490e..68a432c 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -3456,7 +3456,7 @@ apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual, "`writeonly' must have a format layout qualifier"); } } - var->data.image_format = GL_NONE; + var->data.image_format = IMAGE_FORMAT_NONE; } /* From page 70 of the GLSL ES 3.1 specification: @@ -7456,7 +7456,7 @@ ast_process_struct_or_iface_block_members(exec_list *instructions, "qualifier"); } - fields[i].image_format = GL_NONE; + fields[i].image_format = IMAGE_FORMAT_NONE; } } } diff --git a/src/compiler/glsl/builtin_variables.cpp b/src/compiler/glsl/builtin_variables.cpp index 19d427e..e0339f6 100644 --- a/src/compiler/glsl/builtin_variables.cpp +++ b/src/compiler/glsl/builtin_variables.cpp @@ -341,7 +341,7 @@ per_vertex_accumulator::add_field(int slot, const glsl_type *type, this->fields[this->num_fields].memory_coherent = 0; this->fields[this->num_fields].memory_volatile = 0; this->fields[this->num_fields].memory_restrict = 0; - this->fields[this->num_fields].image_format = 0; + this->fields[this->num_fields].image_format = IMAGE_FORMAT_NONE; this->fields[this->num_fields].explicit_xfb_buffer = 0; this->fields[this->num_fields].xfb_buffer = -1; this->fields[this->num_fields].xfb_stride = -1; diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy index 7b93d34..e69aec8 100644 --- a/src/compiler/glsl/glsl_parser.yy +++ b/src/compiler/glsl/glsl_parser.yy @@ -1326,7 +1326,7 @@ layout_qualifier_id: if (!$$.flags.i) { static const struct { const char *name; - GLenum format; + enum gl_image_format format; glsl_base_type base_type; /** Minimum desktop GLSL version required for the image * format. Use 130 if already present in the original @@ -1338,45 +1338,45 @@ layout_qualifier_id: /* NV_image_formats */ bool nv_image_formats; } map[] = { - { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT, 130, 310, false }, - { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT, 130, 310, false }, - { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT, 130, 0, true }, - { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT, 130, 0, true }, - { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT, 130, 0, true }, - { "r32f", GL_R32F, GLSL_TYPE_FLOAT, 130, 310, false }, - { "r16f", GL_R16F, GLSL_TYPE_FLOAT, 130, 0, true }, - { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT, 130, 310, false }, - { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT, 130, 310, false }, - { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT, 130, 0, true }, - { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT, 130, 310, false }, - { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT, 130, 0, true }, - { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT, 130, 0, true }, - { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT, 130, 0, true }, - { "r32ui", GL_R32UI, GLSL_TYPE_UINT, 130, 310, false }, - { "r16ui", GL_R16UI, GLSL_TYPE_UINT, 130, 0, true }, - { "r8ui", GL_R8UI, GLSL_TYPE_UINT, 130, 0, true }, - { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT, 130, 310, false }, - { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT, 130, 310, false }, - { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT, 130, 310, false }, - { "rg32i", GL_RG32I, GLSL_TYPE_INT, 130, 0, true }, - { "rg16i", GL_RG16I, GLSL_TYPE_INT, 130, 0, true }, - { "rg8i", GL_RG8I, GLSL_TYPE_INT, 130, 0, true }, - { "r32i", GL_R32I, GLSL_TYPE_INT, 130, 310, false }, - { "r16i", GL_R16I, GLSL_TYPE_INT, 130, 0, true }, - { "r8i", GL_R8I, GLSL_TYPE_INT, 130, 0, true }, - { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT, 130, 0, false }, - { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT, 130, 0, true }, - { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT, 130, 310, false }, - { "rg16", GL_RG16, GLSL_TYPE_FLOAT, 130, 0, false }, - { "rg8", GL_RG8, GLSL_TYPE_FLOAT, 130, 0, true }, - { "r16", GL_R16, GLSL_TYPE_FLOAT, 130, 0, false }, - { "r8", GL_R8, GLSL_TYPE_FLOAT, 130, 0, true }, - { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT, 130, 0, false }, - { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT, 130, 310, false }, - { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT, 130, 0, false }, - { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT, 130, 0, true }, - { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT, 130, 0, false }, - { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT, 130, 0, true } + { "rgba32f", IMAGE_FORMAT_RGBA32F, GLSL_TYPE_FLOAT, 130, 310, false }, + { "rgba16f", IMAGE_FORMAT_RGBA16F, GLSL_TYPE_FLOAT, 130, 310, false }, + { "rg32f", IMAGE_FORMAT_RG32F, GLSL_TYPE_FLOAT, 130, 0, true }, + { "rg16f", IMAGE_FORMAT_RG16F, GLSL_TYPE_FLOAT, 130, 0, true }, + { "r11f_g11f_b10f", IMAGE_FORMAT_R11F_G11F_B10F, GLSL_TYPE_FLOAT, 130, 0, true }, + { "r32f", IMAGE_FORMAT_R32F, GLSL_TYPE_FLOAT, 130, 310, false }, + { "r16f", IMAGE_FORMAT_R16F, GLSL_TYPE_FLOAT, 130, 0, true }, + { "rgba32ui", IMAGE_FORMAT_RGBA32UI, GLSL_TYPE_UINT, 130, 310, false }, + { "rgba16ui", IMAGE_FORMAT_RGBA16UI, GLSL_TYPE_UINT, 130, 310, false }, + { "rgb10_a2ui", IMAGE_FORMAT_RGB10_A2UI, GLSL_TYPE_UINT, 130, 0, true }, + { "rgba8ui", IMAGE_FORMAT_RGBA8UI, GLSL_TYPE_UINT, 130, 310, false }, + { "rg32ui", IMAGE_FORMAT_RG32UI, GLSL_TYPE_UINT, 130, 0, true }, + { "rg16ui", IMAGE_FORMAT_RG16UI, GLSL_TYPE_UINT, 130, 0, true }, + { "rg8ui", IMAGE_FORMAT_RG8UI, GLSL_TYPE_UINT, 130, 0, true }, + { "r32ui", IMAGE_FORMAT_R32UI, GLSL_TYPE_UINT, 130, 310, false }, + { "r16ui", IMAGE_FORMAT_R16UI, GLSL_TYPE_UINT, 130, 0, true }, + { "r8ui", IMAGE_FORMAT_R8UI, GLSL_TYPE_UINT, 130, 0, true }, + { "rgba32i", IMAGE_FORMAT_RGBA32I, GLSL_TYPE_INT, 130, 310, false }, + { "rgba16i", IMAGE_FORMAT_RGBA16I, GLSL_TYPE_INT, 130, 310, false }, + { "rgba8i", IMAGE_FORMAT_RGBA8I, GLSL_TYPE_INT, 130, 310, false }, + { "rg32i", IMAGE_FORMAT_RG32I, GLSL_TYPE_INT, 130, 0, true }, + { "rg16i", IMAGE_FORMAT_RG16I, GLSL_TYPE_INT, 130, 0, true }, + { "rg8i", IMAGE_FORMAT_RG8I, GLSL_TYPE_INT, 130, 0, true }, + { "r32i", IMAGE_FORMAT_R32I, GLSL_TYPE_INT, 130, 310, false }, + { "r16i", IMAGE_FORMAT_R16I, GLSL_TYPE_INT, 130, 0, true }, + { "r8i", IMAGE_FORMAT_R8I, GLSL_TYPE_INT, 130, 0, true }, + { "rgba16", IMAGE_FORMAT_RGBA16, GLSL_TYPE_FLOAT, 130, 0, false }, + { "rgb10_a2", IMAGE_FORMAT_RGB10_A2, GLSL_TYPE_FLOAT, 130, 0, true }, + { "rgba8", IMAGE_FORMAT_RGBA8, GLSL_TYPE_FLOAT, 130, 310, false }, + { "rg16", IMAGE_FORMAT_RG16, GLSL_TYPE_FLOAT, 130, 0, false }, + { "rg8", IMAGE_FORMAT_RG8, GLSL_TYPE_FLOAT, 130, 0, true }, + { "r16", IMAGE_FORMAT_R16, GLSL_TYPE_FLOAT, 130, 0, false }, + { "r8", IMAGE_FORMAT_R8, GLSL_TYPE_FLOAT, 130, 0, true }, + { "rgba16_snorm", IMAGE_FORMAT_RGBA16_SNORM, GLSL_TYPE_FLOAT, 130, 0, false }, + { "rgba8_snorm", IMAGE_FORMAT_RGBA8_SNORM, GLSL_TYPE_FLOAT, 130, 310, false }, + { "rg16_snorm", IMAGE_FORMAT_RG16_SNORM, GLSL_TYPE_FLOAT, 130, 0, false }, + { "rg8_snorm", IMAGE_FORMAT_RG8_SNORM, GLSL_TYPE_FLOAT, 130, 0, true }, + { "r16_snorm", IMAGE_FORMAT_R16_SNORM, GLSL_TYPE_FLOAT, 130, 0, false }, + { "r8_snorm", IMAGE_FORMAT_R8_SNORM, GLSL_TYPE_FLOAT, 130, 0, true } }; for (unsigned i = 0; i < ARRAY_SIZE(map); i++) { diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h index 840c06e..45f1a25 100644 --- a/src/compiler/glsl/ir.h +++ b/src/compiler/glsl/ir.h @@ -880,7 +880,7 @@ public: public: /** Image internal format if specified explicitly, otherwise GL_NONE. */ - uint16_t image_format; + gl_image_format image_format; private: /** diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h index 55faac2..047afee 100644 --- a/src/compiler/glsl_types.h +++ b/src/compiler/glsl_types.h @@ -28,6 +28,8 @@ #include <string.h> #include <assert.h> +#include "shader_enums.h" + #ifdef __cplusplus extern "C" { #endif @@ -987,7 +989,7 @@ struct glsl_struct_field { /** * Layout format, applicable to image variables only. */ - unsigned image_format:16; + enum gl_image_format image_format; /** * Any of the xfb_* qualifiers trigger the shader to be in transform @@ -1004,8 +1006,8 @@ struct glsl_struct_field { sample(0), matrix_layout(GLSL_MATRIX_LAYOUT_INHERITED), patch(0), precision(GLSL_PRECISION_NONE), memory_read_only(0), memory_write_only(0), memory_coherent(0), memory_volatile(0), - memory_restrict(0), image_format(0), explicit_xfb_buffer(0), - implicit_sized_array(0) + memory_restrict(0), image_format(IMAGE_FORMAT_NONE), + explicit_xfb_buffer(0), implicit_sized_array(0) { /* empty */ } -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev