mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
mesa ReadPixels: handle signed/unsigned integer clamping
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
f7333b6345
commit
6671d0dad3
1 changed files with 10 additions and 3 deletions
|
|
@ -322,6 +322,8 @@ slow_read_rgba_pixels( struct gl_context *ctx,
|
|||
void *rgba;
|
||||
GLubyte *dst, *map;
|
||||
int dstStride, stride, j;
|
||||
GLboolean dst_is_integer = _mesa_is_enum_format_integer(format);
|
||||
GLboolean dst_is_uint = _mesa_is_format_unsigned(rbFormat);
|
||||
|
||||
dstStride = _mesa_image_row_stride(packing, width, format, type);
|
||||
dst = (GLubyte *) _mesa_image_address2d(packing, pixels, width, height,
|
||||
|
|
@ -339,12 +341,17 @@ slow_read_rgba_pixels( struct gl_context *ctx,
|
|||
goto done;
|
||||
|
||||
for (j = 0; j < height; j++) {
|
||||
if (_mesa_is_enum_format_integer(format)) {
|
||||
if (dst_is_integer) {
|
||||
_mesa_unpack_uint_rgba_row(rbFormat, width, map, (GLuint (*)[4]) rgba);
|
||||
_mesa_rebase_rgba_uint(width, (GLuint (*)[4]) rgba,
|
||||
rb->_BaseFormat);
|
||||
_mesa_pack_rgba_span_from_uints(ctx, width, (GLuint (*)[4]) rgba, format,
|
||||
type, dst);
|
||||
if (dst_is_uint) {
|
||||
_mesa_pack_rgba_span_from_uints(ctx, width, (GLuint (*)[4]) rgba, format,
|
||||
type, dst);
|
||||
} else {
|
||||
_mesa_pack_rgba_span_from_ints(ctx, width, (GLint (*)[4]) rgba, format,
|
||||
type, dst);
|
||||
}
|
||||
} else {
|
||||
_mesa_unpack_rgba_row(rbFormat, width, map, (GLfloat (*)[4]) rgba);
|
||||
_mesa_rebase_rgba_float(width, (GLfloat (*)[4]) rgba,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue