Mesa (main): freedreno/cffdec: Fix gpuaddr comparision

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Aug 20 22:22:07 UTC 2021


Module: Mesa
Branch: main
Commit: ed8d3095abd9ee8e43977073d6103f1f7a8cdb8b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ed8d3095abd9ee8e43977073d6103f1f7a8cdb8b

Author: Rob Clark <robdclark at chromium.org>
Date:   Fri Aug 20 10:48:57 2021 -0700

freedreno/cffdec: Fix gpuaddr comparision

gpuaddrs are 64b, and they can be more than 2^^32 apart.

Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12489>

---

 src/freedreno/decode/buffers.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/freedreno/decode/buffers.c b/src/freedreno/decode/buffers.c
index 3b955849144..068a4f1f4f2 100644
--- a/src/freedreno/decode/buffers.c
+++ b/src/freedreno/decode/buffers.c
@@ -55,7 +55,12 @@ buffer_insert_cmp(const struct rb_node *n1, const struct rb_node *n2)
 {
    const struct buffer *buf1 = (const struct buffer *)n1;
    const struct buffer *buf2 = (const struct buffer *)n2;
-   return buf1->gpuaddr - buf2->gpuaddr;
+   /* Note that gpuaddr comparisions can overflow an int: */
+   if (buf1->gpuaddr > buf2->gpuaddr)
+      return 1;
+   else if (buf1->gpuaddr < buf2->gpuaddr)
+      return -1;
+   return 0;
 }
 
 static int



More information about the mesa-commit mailing list