On Tue, Jun 26, 2012 at 2:34 PM, Brian Paul <bri...@vmware.com> wrote: > On 06/25/2012 06:34 PM, Jordan Justen wrote: >> >> Previously if a format of GL_RGBA was used, then float data would >> be returned, even if the type was an integer type. >> >> Signed-off-by: Jordan Justen<jordan.l.jus...@intel.com> >> --- >> src/mesa/main/readpix.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c >> index 4058019..e3c4611 100644 >> --- a/src/mesa/main/readpix.c >> +++ b/src/mesa/main/readpix.c >> @@ -337,7 +337,7 @@ slow_read_rgba_pixels( struct gl_context *ctx, >> goto done; >> >> for (j = 0; j< height; j++) { >> - if (_mesa_is_enum_format_integer(format)) { >> + if (_mesa_is_integer_format_or_type(format, type)) { >> _mesa_unpack_uint_rgba_row(rbFormat, width, map, (GLuint (*)[4]) >> rgba); >> _mesa_rebase_rgba_uint(width, (GLuint (*)[4]) rgba, >> rb->_BaseFormat); > > > I'm not quite sure I follow this. > > If we call glReadPixels(format=GL_RGBA, type=GL_UNSIGNED_BYTE) it looks like > _mesa_is_integer_format_or_type(format, type) will evaluate to true and > we'll errantly take the integer path, rather than the float path. > > If one wants to read integer-valued colors, you need to pass > format=GL_RGBA_INTEGER.
This fixed an issue with CopyTexImage and integer clamping. In meta, we use ReadPixels, and get the base format for the texture, which for rgb10_a2ui is GL_RGBA. Should rgb10_a2ui use GL_RGBA_INTEGER for it's base format? It doesn't look like any gl_format uses an integer base format. Does this mean that CopyTexImage will always do a int to float conversion and then a float to int conversion if the src/dest is int based? Hmm, maybe the issue is that the float path is not clamping integers properly when re-packing. I'll investigate further, but any advise would be appreciated. Thanks for your time, -Jordan _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev