From 990a7200e091f1d0f79979f9c02fc50a07d6acad Mon Sep 17 00:00:00 2001 From: Antia Puentes Date: Tue, 17 Nov 2015 21:29:04 +0100 Subject: [PATCH] mesa/shaderimage: Added func to get the GL_IMAGE_CLASS from the format It will be used by the ARB_internalformat_query2 implementation to implement the IMAGE_COMPATIBILITY_CLASS query. Reviewed-by: Dave Airlie --- 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 a71686d0ec4..fa967a2408a 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 794c926d040..85193e104f6 100644 --- a/src/mesa/main/shaderimage.h +++ b/src/mesa/main/shaderimage.h @@ -42,6 +42,12 @@ struct gl_context; 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.30.2