mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
intel/pixel_read: Properly flip the results for window system buffers
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88841 Reviewed-by: Chad Versace <chad.versace@intel.com>
This commit is contained in:
parent
837a4c42a6
commit
5c31184cf5
1 changed files with 15 additions and 0 deletions
|
|
@ -155,6 +155,21 @@ intel_readpixels_tiled_memcpy(struct gl_context * ctx,
|
|||
|
||||
dst_pitch = _mesa_image_row_stride(pack, width, format, type);
|
||||
|
||||
/* For a window-system renderbuffer, the buffer is actually flipped
|
||||
* vertically, so we need to handle that. Since the detiling function
|
||||
* can only really work in the forwards direction, we have to be a
|
||||
* little creative. First, we compute the Y-offset of the first row of
|
||||
* the renderbuffer (in renderbuffer coordinates). We then match that
|
||||
* with the last row of the client's data. Finally, we give
|
||||
* tiled_to_linear a negative pitch so that it walks through the
|
||||
* client's data backwards as it walks through the renderbufer forwards.
|
||||
*/
|
||||
if (rb->Name == 0) {
|
||||
yoffset = rb->Height - yoffset - height;
|
||||
pixels += (ptrdiff_t) (height - 1) * dst_pitch;
|
||||
dst_pitch = -dst_pitch;
|
||||
}
|
||||
|
||||
/* We postponed printing this message until having committed to executing
|
||||
* the function.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue