[Mesa-dev] [PATCH 1/2] mesa: Add color renderable/texture filterable format info for ES 3.x.
Jordan Justen
jordan.l.justen at intel.com
Fri Mar 18 00:04:28 UTC 2016
On 2016-03-16 20:32:18, Kenneth Graunke wrote:
> OpenGL ES 3.x contains a table of sized internal formats and their
> required properties. In particular, each format is marked as
> "Color Renderable" or "Texture Filterable".
>
> This patch introduces two functions that can be used to query the
> information from that table.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/main/glformats.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++
> src/mesa/main/glformats.h | 7 ++++
> 2 files changed, 90 insertions(+)
>
> diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
> index cf64958..96ab393 100644
> --- a/src/mesa/main/glformats.c
> +++ b/src/mesa/main/glformats.c
> @@ -3556,3 +3556,86 @@ _mesa_format_from_format_and_type(GLenum format, GLenum type)
> */
> unreachable("Unsupported format");
> }
> +
> +/**
> + * Returns true if \p internal_format is a sized internal format that
> + * is marked "Color Renderable" in Table 8.10 of the ES 3.2 specification.
> + */
> +bool
> +_mesa_is_es3_color_renderable(GLenum internal_format)
> +{
> + switch (internal_format) {
> + case GL_R8:
> + case GL_RG8:
> + case GL_RGB8:
> + case GL_RGB565:
> + case GL_RGBA4:
> + case GL_RGB5_A1:
> + case GL_RGBA8:
> + case GL_RGB10_A2:
> + case GL_RGB10_A2UI:
> + case GL_SRGB8_ALPHA8:
> + case GL_R16F:
> + case GL_RG16F:
> + case GL_RGBA16F:
> + case GL_R32F:
> + case GL_RG32F:
> + case GL_RGBA32F:
> + case GL_R11F_G11F_B10F:
I don't expect that it makes a difference, but I noticed that ES 3.0
doesn't require these 7.
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
> + case GL_R8I:
> + case GL_R8UI:
> + case GL_R16I:
> + case GL_R16UI:
> + case GL_R32I:
> + case GL_R32UI:
> + case GL_RG8I:
> + case GL_RG8UI:
> + case GL_RG16I:
> + case GL_RG16UI:
> + case GL_RG32I:
> + case GL_RG32UI:
> + case GL_RGBA8I:
> + case GL_RGBA8UI:
> + case GL_RGBA16I:
> + case GL_RGBA16UI:
> + case GL_RGBA32I:
> + case GL_RGBA32UI:
> + return true;
> + default:
> + return false;
> + }
> +}
> +
> +/**
> + * Returns true if \p internal_format is a sized internal format that
> + * is marked "Texture Filterable" in Table 8.10 of the ES 3.2 specification.
> + */
> +bool
> +_mesa_is_es3_texture_filterable(GLenum internal_format)
> +{
> + switch (internal_format) {
> + case GL_R8:
> + case GL_R8_SNORM:
> + case GL_RG8:
> + case GL_RG8_SNORM:
> + case GL_RGB8:
> + case GL_RGB8_SNORM:
> + case GL_RGB565:
> + case GL_RGBA4:
> + case GL_RGB5_A1:
> + case GL_RGBA8:
> + case GL_RGBA8_SNORM:
> + case GL_RGB10_A2:
> + case GL_SRGB8:
> + case GL_SRGB8_ALPHA8:
> + case GL_R16F:
> + case GL_RG16F:
> + case GL_RGB16F:
> + case GL_RGBA16F:
> + case GL_R11F_G11F_B10F:
> + case GL_RGB9_E5:
> + return true;
> + default:
> + return false;
> + }
> +}
> diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h
> index 00d2767..c73f464 100644
> --- a/src/mesa/main/glformats.h
> +++ b/src/mesa/main/glformats.h
> @@ -28,6 +28,7 @@
> #define GLFORMATS_H
>
>
> +#include <stdbool.h>
> #include <GL/gl.h>
>
>
> @@ -144,6 +145,12 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat );
> extern uint32_t
> _mesa_format_from_format_and_type(GLenum format, GLenum type);
>
> +extern bool
> +_mesa_is_es3_color_renderable(GLenum internal_format);
> +
> +extern bool
> +_mesa_is_es3_texture_filterable(GLenum internal_format);
> +
> #ifdef __cplusplus
> }
> #endif
> --
> 2.7.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list