[PATCH 06/10] wined3d: Properly compare integers in wined3d_bo_slab_vk_compare().
Henri Verbeet
hverbeet at codeweavers.com
Mon Jan 24 06:59:03 CST 2022
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/wined3d/context_vk.c | 11 ++++++-----
dlls/wined3d/wined3d_private.h | 5 +++++
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index cf6247387ca..686c9fe090f 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -1883,12 +1883,13 @@ static int wined3d_bo_slab_vk_compare(const void *key, const struct wine_rb_entr
{
const struct wined3d_bo_slab_vk *slab = WINE_RB_ENTRY_VALUE(entry, const struct wined3d_bo_slab_vk, entry);
const struct wined3d_bo_slab_vk_key *k = key;
+ int ret;
- if (k->memory_type != slab->requested_memory_type)
- return k->memory_type - slab->requested_memory_type;
- if (k->usage != slab->bo.usage)
- return k->usage - slab->bo.usage;
- return k->size - slab->bo.size;
+ if ((ret = wined3d_uint32_compare(k->memory_type, slab->requested_memory_type)))
+ return ret;
+ if ((ret = wined3d_uint32_compare(k->usage, slab->bo.usage)))
+ return ret;
+ return wined3d_uint64_compare(k->size, slab->bo.size);
}
static void wined3d_context_vk_init_graphics_pipeline_key(struct wined3d_context_vk *context_vk)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index e297169b6e1..95a3b08f78a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -452,6 +452,11 @@ static inline int wined3d_uint32_compare(uint32_t x, uint32_t y)
return (x > y) - (x < y);
}
+static inline int wined3d_uint64_compare(uint64_t x, uint64_t y)
+{
+ return (x > y) - (x < y);
+}
+
#define ORM_BACKBUFFER 0
#define ORM_FBO 1
--
2.30.2
More information about the wine-devel
mailing list