[Mesa-dev] [PATCH v2 08/14] mesa: handle OES_texture_half_float formats in _mesa_base_tex_format()

Christian Gmeiner christian.gmeiner at gmail.com
Fri May 4 07:15:18 UTC 2018


Hi


> On 05/01/2018 05:48 PM, Christian Gmeiner wrote:
> > Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
> > Reviewed-by: Wladimir J. van der Laan <laanwj at gmail.com>
> > ---
> >   src/mesa/main/glformats.c | 19 +++++++++++++++++++
> >   1 file changed, 19 insertions(+)
> >
> > diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
> > index cba5e670db..1d3d524875 100644
> > --- a/src/mesa/main/glformats.c
> > +++ b/src/mesa/main/glformats.c
> > @@ -2424,6 +2424,25 @@ _mesa_base_tex_format(const struct gl_context
*ctx, GLint internalFormat)
> >            return GL_YCBCR_MESA;
> >      }
> >
> > +   if (ctx->Extensions.OES_texture_half_float) {

> this could be

> if ((ctx->Extensions.ARB_texture_float) ||
>     ctx->Extensions.OES_texture_half_float))


I tried to separate half float and float handling so I think this your
suggestion will
not work here.

> > +       switch (internalFormat) {
> > +       case GL_ALPHA16F_ARB:
> > +          return GL_ALPHA;
> > +       case GL_RGBA16F_ARB:
> > +          return GL_RGBA;
> > +       case GL_RGB16F_ARB:
> > +          return GL_RGB;
> > +       case GL_INTENSITY16F_ARB:
> > +          return GL_INTENSITY;
> > +       case GL_LUMINANCE16F_ARB:
> > +          return GL_LUMINANCE;
> > +       case GL_LUMINANCE_ALPHA16F_ARB:
> > +          return GL_LUMINANCE_ALPHA;
> > +       default:
> > +          ; /* fallthrough */
> > +       }
> > +   }
> > +

> It seems like we miss OES_texture_float as well .. with the above change
> (separation of half float formats from full float ones) we could have a
> OES_texture_float || ARB_texture_float check for the rest?


Yeah.. makes sense.


> >      if (ctx->Extensions.ARB_texture_float) {
> >         switch (internalFormat) {
> >         case GL_ALPHA16F_ARB:
> >


What about something like this:

-----8<-------

iff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index cba5e670db..f6c252cdf0 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -2424,7 +2424,27 @@ _mesa_base_tex_format(const struct gl_context *ctx,
GLint internalFormat)
           return GL_YCBCR_MESA;
     }

-   if (ctx->Extensions.ARB_texture_float) {
+   if (ctx->Extensions.OES_texture_half_float) {
+       switch (internalFormat) {
+       case GL_ALPHA16F_ARB:
+          return GL_ALPHA;
+       case GL_RGBA16F_ARB:
+          return GL_RGBA;
+       case GL_RGB16F_ARB:
+          return GL_RGB;
+       case GL_INTENSITY16F_ARB:
+          return GL_INTENSITY;
+       case GL_LUMINANCE16F_ARB:
+          return GL_LUMINANCE;
+       case GL_LUMINANCE_ALPHA16F_ARB:
+          return GL_LUMINANCE_ALPHA;
+       default:
+          ; /* fallthrough */
+       }
+   }
+
+   if (ctx->Extensions.ARB_texture_float ||
+       ctx->Extensions.OES_texture_float) {
        switch (internalFormat) {
        case GL_ALPHA16F_ARB:
        case GL_ALPHA32F_ARB:

-----8<-------

-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info


More information about the mesa-dev mailing list