[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