I'm okay with this patch. Reviewed-by: Marek Olšák <mar...@gmail.com>
Marek On Tue, Dec 4, 2012 at 6:31 AM, Ian Romanick <i...@freedesktop.org> wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > The OpenGL 3.2 core profile spec says: > > "The following base internal formats from table 3.11 are > color-renderable: RED, RG, RGB, and RGBA. The sized internal formats > from table 3.12 that have a color-renderable base internal format > are also color-renderable. No other formats, including compressed > internal formats, are color-renderable." > > The OpenGL 3.2 compatibility profile spec says (only ALPHA is added): > > "The following base internal formats from table 3.16 are > color-renderable: ALPHA, RED, RG, RGB, and RGBA. The sized internal > formats > from table 3.17 that have a color-renderable base internal format > are also color-renderable. No other formats, including compressed > internal formats, are color-renderable." > > Table 3.12 in the core profile spec and table 3.17 in the compatibility > profile spec list SNORM formats as having a base internal format of RED, > RG, RGB, or RGBA. From this we infer that they should also be color > renderable. > > The OpenGL ES 3.0 spec says: > > "An internal format is color-renderable if it is one of the formats > from table 3.12 noted as color-renderable or if it is unsized format > RGBA or RGB. No other formats, including compressed internal > formats, are color-renderable." > > In the OpenGL ES 3.0 spec, none of the SNORM formats have "color- > renderable" marked in table 3.12. The RGB I and UI formats also are not > color-renderable in ES3, but we'll save that change for another patch. > > As a data point, NVIDIA's closed-source driver (version 304.64) rejects > *all* SNORM formats for renderbuffers in an OpenGL 4.x compatibility > profile. > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > Cc: Matt Turner <matts...@gmail.com> > Cc: Marek Olšák <mar...@gmail.com> > --- > src/mesa/main/fbobject.c | 38 ++++---------------------------------- > 1 file changed, 4 insertions(+), 34 deletions(-) > > diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c > index ce77b9f..ab53bac 100644 > --- a/src/mesa/main/fbobject.c > +++ b/src/mesa/main/fbobject.c > @@ -1169,35 +1169,23 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum > internalFormat) > return ctx->API != API_OPENGLES && ctx->Extensions.ARB_texture_rg > ? GL_RG : 0; > /* signed normalized texture formats */ > - case GL_R8_SNORM: > - return ctx->Version >= 30 > - || (ctx->API == API_OPENGL_COMPAT && > ctx->Extensions.EXT_texture_snorm) > - ? GL_RED : 0; > case GL_RED_SNORM: > + case GL_R8_SNORM: > case GL_R16_SNORM: > return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm > ? GL_RED : 0; > - case GL_RG8_SNORM: > - return ctx->Version >= 30 > - || (ctx->API == API_OPENGL_COMPAT && > ctx->Extensions.EXT_texture_snorm) > - ? GL_RG : 0; > case GL_RG_SNORM: > + case GL_RG8_SNORM: > case GL_RG16_SNORM: > return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm > ? GL_RG : 0; > - case GL_RGB8_SNORM: > - return ctx->Version >= 30 > - || (ctx->API == API_OPENGL_COMPAT && > ctx->Extensions.EXT_texture_snorm) > - ? GL_RGB : 0; > case GL_RGB_SNORM: > + case GL_RGB8_SNORM: > case GL_RGB16_SNORM: > return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm > ? GL_RGB : 0; > - case GL_RGBA8_SNORM: > - return ctx->Version >= 30 > - || (ctx->API == API_OPENGL_COMPAT && > ctx->Extensions.EXT_texture_snorm) > - ? GL_RGBA : 0; > case GL_RGBA_SNORM: > + case GL_RGBA8_SNORM: > case GL_RGBA16_SNORM: > return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm > ? GL_RGBA : 0; > @@ -1207,24 +1195,6 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum > internalFormat) > return ctx->API == API_OPENGL_COMPAT && > ctx->Extensions.EXT_texture_snorm && > ctx->Extensions.ARB_framebuffer_object ? GL_ALPHA : 0; > - case GL_LUMINANCE_SNORM: > - case GL_LUMINANCE8_SNORM: > - case GL_LUMINANCE16_SNORM: > - return ctx->API == API_OPENGL_COMPAT && > - ctx->Extensions.EXT_texture_snorm && > - ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0; > - case GL_LUMINANCE_ALPHA_SNORM: > - case GL_LUMINANCE8_ALPHA8_SNORM: > - case GL_LUMINANCE16_ALPHA16_SNORM: > - return ctx->API == API_OPENGL_COMPAT && > - ctx->Extensions.EXT_texture_snorm && > - ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0; > - case GL_INTENSITY_SNORM: > - case GL_INTENSITY8_SNORM: > - case GL_INTENSITY16_SNORM: > - return ctx->API == API_OPENGL_COMPAT && > - ctx->Extensions.EXT_texture_snorm && > - ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0; > case GL_R16F: > case GL_R32F: > return ctx->Version >= 30 > -- > 1.7.11.7 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev