Mesa (opengl-es-v2): mesa/es: Fix GL_RGB565 support in FBO.

Brian Paul brianp at kemper.freedesktop.org
Mon Jan 4 21:17:45 UTC 2010


Module: Mesa
Branch: opengl-es-v2
Commit: c4b9e1aa1a2f1fda9e5764e3f7dd1a268216df09
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c4b9e1aa1a2f1fda9e5764e3f7dd1a268216df09

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Tue Nov 24 12:11:26 2009 +0800

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 at gmail.com>

---

 src/mesa/es/main/APIspec.xml |    2 +-
 src/mesa/es/main/es_fbo.c    |   18 +++++++++---------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/mesa/es/main/APIspec.xml b/src/mesa/es/main/APIspec.xml
index a7dbdc4..f6f3313 100644
--- a/src/mesa/es/main/APIspec.xml
+++ b/src/mesa/es/main/APIspec.xml
@@ -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"/>
diff --git a/src/mesa/es/main/es_fbo.c b/src/mesa/es/main/es_fbo.c
index db53a14..1803637 100644
--- a/src/mesa/es/main/es_fbo.c
+++ b/src/mesa/es/main/es_fbo.c
@@ -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);
 }




More information about the mesa-commit mailing list