-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Eric Anholt wrote:
> ---
>  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;
> +      }
> +   }

After hacking around with FBOs and MESA_FORMAT_* all day long (my patch
series is coming soon!), I think this should go in a utility function
somewhere... perhaps in fbobject.c.  For a given format, I *think* the
preferred read format / type will be the same everywhere.  Does that
sound right?

>  }
>  
>  
> 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 }
>  };

I'd cut this.  We don't list other extensions that are always enabled.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAksfU+sACgkQX1gOwKyEAw/HVQCfYls0DTN7eNkMEUTFb5scpdAN
LkAAn3K7kn+JNnNc0hZWnAsYJ/UrGXm1
=9Oup
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
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