From: Antia Puentes <apuen...@igalia.com> It will be used by the ARB_internalformat_query2 implementation to implement the IMAGE_COMPATIBILITY_CLASS <pname> query. --- src/mesa/main/shaderimage.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/mesa/main/shaderimage.h | 6 ++++++ 2 files changed, 51 insertions(+)
diff --git a/src/mesa/main/shaderimage.c b/src/mesa/main/shaderimage.c index a71686d..fa967a2 100644 --- a/src/mesa/main/shaderimage.c +++ b/src/mesa/main/shaderimage.c @@ -331,6 +331,51 @@ get_image_format_class(mesa_format format) } } +static GLenum +_image_format_class_to_glenum(enum image_format_class class) +{ + switch (class) { + case IMAGE_FORMAT_CLASS_NONE: + return GL_NONE; + case IMAGE_FORMAT_CLASS_1X8: + return GL_IMAGE_CLASS_1_X_8; + case IMAGE_FORMAT_CLASS_1X16: + return GL_IMAGE_CLASS_1_X_16; + case IMAGE_FORMAT_CLASS_1X32: + return GL_IMAGE_CLASS_1_X_32; + case IMAGE_FORMAT_CLASS_2X8: + return GL_IMAGE_CLASS_2_X_8; + case IMAGE_FORMAT_CLASS_2X16: + return GL_IMAGE_CLASS_2_X_16; + case IMAGE_FORMAT_CLASS_2X32: + return GL_IMAGE_CLASS_2_X_32; + case IMAGE_FORMAT_CLASS_10_11_11: + return GL_IMAGE_CLASS_11_11_10; + case IMAGE_FORMAT_CLASS_4X8: + return GL_IMAGE_CLASS_4_X_8; + case IMAGE_FORMAT_CLASS_4X16: + return GL_IMAGE_CLASS_4_X_16; + case IMAGE_FORMAT_CLASS_4X32: + return GL_IMAGE_CLASS_4_X_32; + case IMAGE_FORMAT_CLASS_2_10_10_10: + return GL_IMAGE_CLASS_10_10_10_2; + default: + assert("Invalid image_format_class"); + return GL_NONE; + } +} + +GLenum +_mesa_get_image_format_class(GLenum format) +{ + mesa_format tex_format = _mesa_get_shader_image_format(format); + if (tex_format == MESA_FORMAT_NONE) + return GL_NONE; + + enum image_format_class class = get_image_format_class(tex_format); + return _image_format_class_to_glenum(class); +} + bool _mesa_is_shader_image_format_supported(const struct gl_context *ctx, GLenum format) diff --git a/src/mesa/main/shaderimage.h b/src/mesa/main/shaderimage.h index 794c926..85193e1 100644 --- a/src/mesa/main/shaderimage.h +++ b/src/mesa/main/shaderimage.h @@ -43,6 +43,12 @@ mesa_format _mesa_get_shader_image_format(GLenum format); /** + * Get the GL image format class for a shader image format GL enum + */ +GLenum +_mesa_get_image_format_class(GLenum format); + +/** * Return whether an image format should be supported based on the current API * version of the context. */ -- 2.5.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev