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