mesa: add missing SNORM formats in _mesa_base_fbo_format()
We weren't handling the LUMINANCE_SNORM, LUMINANCE_ALPHA_SNORM and INTENSITY_SNORM cases. Note that adding these cases here does not require a driver to support rendering to these surface types. If the driver can't do it we'll report an incomplete framebuffer. NVIDIA doesn't support GL_EXT_texture_snorm but their driver accepts these formats in glRenderBufferStorage(). Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
@@ -1504,6 +1504,22 @@ _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 _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm
|
||||
? GL_LUMINANCE : 0;
|
||||
case GL_LUMINANCE_ALPHA_SNORM:
|
||||
case GL_LUMINANCE8_ALPHA8_SNORM:
|
||||
case GL_LUMINANCE16_ALPHA16_SNORM:
|
||||
return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm
|
||||
? GL_LUMINANCE_ALPHA : 0;
|
||||
case GL_INTENSITY_SNORM:
|
||||
case GL_INTENSITY8_SNORM:
|
||||
case GL_INTENSITY16_SNORM:
|
||||
return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm
|
||||
? GL_INTENSITY : 0;
|
||||
|
||||
case GL_R16F:
|
||||
case GL_R32F:
|
||||
return ((_mesa_is_desktop_gl(ctx) &&
|
||||
|
Reference in New Issue
Block a user