File U_egl-x11-sw-fix-partial-image-uploads.patch of Package Mesa

From 5903c215ab5b4c5d3bb1c952c0c784b78a0412fc Mon Sep 17 00:00:00 2001
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Date: Tue, 13 Feb 2024 13:10:30 -0500
Subject: [PATCH] egl/x11/sw: fix partial image uploads

* swrast allocates images aligned to 64x64 tiles, which results in images
  that are larger than the window. PutImage requests must be clamped on
  the y-axis to avoid uploading/damaging out-of-bounds regions
* winsys coords are y-inverted

cc: mesa-stable

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29910>
(cherry picked from commit 6088a0bf51dd6bdfe39d9160a748bdde016f2c96)
---
 .pick_status.json                   | 2 +-
 src/egl/drivers/dri2/platform_x11.c | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/.pick_status.json b/.pick_status.json
index cc044e5e788..802f9799d23 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -164,7 +164,7 @@
         "description": "egl/x11/sw: fix partial image uploads",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null,
         "notes": null
diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c
index 97436a0254b..e0d9ddb343e 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -174,6 +174,11 @@ swrastPutImage(__DRIdrawable *draw, int op, int x, int y, int w, int h,
       return;
    }
 
+   /* clamp to drawable size */
+   if (y + h > dri2_surf->base.Height)
+      h = dri2_surf->base.Height - y;
+   /* y-invert */
+   y = dri2_surf->base.Height - y - h;
    if (size < max_req_len) {
       cookie = xcb_put_image(
          dri2_dpy->conn, XCB_IMAGE_FORMAT_Z_PIXMAP, dri2_surf->drawable, gc, w,
-- 
2.43.0

openSUSE Build Service is sponsored by