---
 src/mesa/drivers/dri/intel/intel_buffers.c    |   21 +++++++++++++++++++++
 src/mesa/drivers/dri/intel/intel_extensions.c |    1 +
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_buffers.c 
b/src/mesa/drivers/dri/intel/intel_buffers.c
index 6b12d48..cee5cf6 100644
--- a/src/mesa/drivers/dri/intel/intel_buffers.c
+++ b/src/mesa/drivers/dri/intel/intel_buffers.c
@@ -362,6 +362,8 @@ intelDrawBuffer(GLcontext * ctx, GLenum mode)
 static void
 intelReadBuffer(GLcontext * ctx, GLenum mode)
 {
+   struct intel_renderbuffer *irb;
+
    if ((ctx->DrawBuffer != NULL) && (ctx->DrawBuffer->Name == 0)) {
       struct intel_context *const intel = intel_context(ctx);
       const GLboolean was_front_buffer_reading =
@@ -390,6 +392,25 @@ intelReadBuffer(GLcontext * ctx, GLenum mode)
    /* Generally, functions which read pixels (glReadPixels, glCopyPixels, etc)
     * reference ctx->ReadBuffer and do appropriate state checks.
     */
+
+   /* GL_OES_read_format */
+   irb = intel_renderbuffer(ctx->ReadBuffer->_ColorReadBuffer);
+   if (irb) {
+      switch (irb->texformat) {
+      case MESA_FORMAT_ARGB8888:
+        ctx->ReadBuffer->ColorReadFormat = GL_BGRA;
+        ctx->ReadBuffer->ColorReadType = GL_UNSIGNED_BYTE;
+        break;
+      case MESA_FORMAT_RGB565:
+        ctx->ReadBuffer->ColorReadFormat = GL_BGR;
+        ctx->ReadBuffer->ColorReadType = GL_UNSIGNED_SHORT_5_6_5_REV;
+        break;
+      default:
+        ctx->ReadBuffer->ColorReadFormat = GL_RGBA;
+        ctx->ReadBuffer->ColorReadType = GL_UNSIGNED_BYTE;
+        break;
+      }
+   }
 }
 
 
diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c 
b/src/mesa/drivers/dri/intel/intel_extensions.c
index 86dc42c..b403bb5 100644
--- a/src/mesa/drivers/dri/intel/intel_extensions.c
+++ b/src/mesa/drivers/dri/intel/intel_extensions.c
@@ -126,6 +126,7 @@ static const struct dri_extension card_extensions[] = {
    { "GL_NV_blend_square",                NULL },
    { "GL_NV_vertex_program",              GL_NV_vertex_program_functions },
    { "GL_NV_vertex_program1_1",           NULL },
+   { "GL_OES_read_format",                NULL },
    { "GL_SGIS_generate_mipmap",           NULL },
    { NULL, NULL }
 };
-- 
1.6.5.4


------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to