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