mesa/es: Fix GL_RGB565 support in FBO.

In GL_OES_framebuffer_object and OpenGL ES 2.0, GL_RGB565 is a valid
internal format.  Since it is not supported by the core, map it to
GL_RGB5 as a workaround.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
This commit is contained in:
Chia-I Wu 2009-11-24 12:11:26 +08:00 committed by Brian Paul
parent b80ec33f35
commit c4b9e1aa1a
2 changed files with 10 additions and 10 deletions

View file

@ -4041,7 +4041,7 @@
<function name="BindRenderbufferOES" template="BindRenderbuffer"/>
<function name="DeleteRenderbuffersOES" template="DeleteRenderbuffers"/>
<function name="GenRenderbuffersOES" template="GenRenderbuffers"/>
<function name="RenderbufferStorageOES" template="RenderbufferStorage"/>
<function name="RenderbufferStorageOES" external="true" template="RenderbufferStorage"/>
<function name="FramebufferRenderbufferOES" template="FramebufferRenderbuffer"/>
<function name="FramebufferTexture2DOES" template="FramebufferTexture2D"/>
<function name="CheckFramebufferStatusOES" template="CheckFramebufferStatus"/>

View file

@ -10,6 +10,11 @@
#include "GLES2/gl2ext.h"
#ifndef GL_RGB5
#define GL_RGB5 0x8050
#endif
extern void GL_APIENTRY _es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height);
extern void GL_APIENTRY _mesa_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height);
@ -20,18 +25,13 @@ _es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat,
GLsizei width, GLsizei height)
{
switch (internalFormat) {
case GL_RGBA4:
case GL_RGB5_A1:
case GL_RGB565:
internalFormat = GL_RGBA;
break;
case GL_STENCIL_INDEX1_OES:
case GL_STENCIL_INDEX4_OES:
case GL_STENCIL_INDEX8:
internalFormat = GL_STENCIL_INDEX;
/* XXX this confuses GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
/* choose a closest format */
internalFormat = GL_RGB5;
break;
default:
; /* no op */
break;
}
_mesa_RenderbufferStorageEXT(target, internalFormat, width, height);
}