[PATCH 07/10] wined3d: Properly compare integers in wined3d_graphics_pipeline_vk_compare().

Henri Verbeet hverbeet at codeweavers.com
Mon Jan 24 06:59:04 CST 2022


Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 dlls/wined3d/context_vk.c | 59 ++++++++++++++++++++-------------------
 1 file changed, 31 insertions(+), 28 deletions(-)

diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index 686c9fe090f..97c60719489 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -1812,38 +1812,41 @@ static int wined3d_graphics_pipeline_vk_compare(const void *key, const struct wi
     unsigned int i;
     int ret;
 
-    if (a->pipeline_desc.stageCount != b->pipeline_desc.stageCount)
-        return a->pipeline_desc.stageCount - b->pipeline_desc.stageCount;
+    if ((ret = wined3d_uint32_compare(a->pipeline_desc.stageCount, b->pipeline_desc.stageCount)))
+        return ret;
     for (i = 0; i < a->pipeline_desc.stageCount; ++i)
     {
-        if (a->stages[i].module != b->stages[i].module)
-            return a->stages[i].module - b->stages[i].module;
+        if ((ret = wined3d_uint64_compare(a->stages[i].module, b->stages[i].module)))
+            return ret;
     }
 
-    if (a->divisor_desc.vertexBindingDivisorCount != b->divisor_desc.vertexBindingDivisorCount)
-        return a->divisor_desc.vertexBindingDivisorCount - b->divisor_desc.vertexBindingDivisorCount;
+    if ((ret = wined3d_uint32_compare(a->divisor_desc.vertexBindingDivisorCount,
+            b->divisor_desc.vertexBindingDivisorCount)))
+        return ret;
     if ((ret = memcmp(a->divisors, b->divisors,
             a->divisor_desc.vertexBindingDivisorCount * sizeof(*a->divisors))))
         return ret;
 
-    if (a->input_desc.vertexAttributeDescriptionCount != b->input_desc.vertexAttributeDescriptionCount)
-        return a->input_desc.vertexAttributeDescriptionCount - b->input_desc.vertexAttributeDescriptionCount;
+    if ((ret = wined3d_uint32_compare(a->input_desc.vertexAttributeDescriptionCount,
+            b->input_desc.vertexAttributeDescriptionCount)))
+        return ret;
     if ((ret = memcmp(a->attributes, b->attributes,
             a->input_desc.vertexAttributeDescriptionCount * sizeof(*a->attributes))))
         return ret;
-    if (a->input_desc.vertexBindingDescriptionCount != b->input_desc.vertexBindingDescriptionCount)
-        return a->input_desc.vertexBindingDescriptionCount - b->input_desc.vertexBindingDescriptionCount;
+    if ((ret = wined3d_uint32_compare(a->input_desc.vertexBindingDescriptionCount,
+            b->input_desc.vertexBindingDescriptionCount)))
+        return ret;
     if ((ret = memcmp(a->bindings, b->bindings,
             a->input_desc.vertexBindingDescriptionCount * sizeof(*a->bindings))))
         return ret;
 
-    if (a->ia_desc.topology != b->ia_desc.topology)
-        return a->ia_desc.topology - b->ia_desc.topology;
-    if (a->ia_desc.primitiveRestartEnable != b->ia_desc.primitiveRestartEnable)
-        return a->ia_desc.primitiveRestartEnable - b->ia_desc.primitiveRestartEnable;
+    if ((ret = wined3d_uint32_compare(a->ia_desc.topology, b->ia_desc.topology)))
+        return ret;
+    if ((ret = wined3d_uint32_compare(a->ia_desc.primitiveRestartEnable, b->ia_desc.primitiveRestartEnable)))
+        return ret;
 
-    if (a->ts_desc.patchControlPoints != b->ts_desc.patchControlPoints)
-        return a->ts_desc.patchControlPoints - b->ts_desc.patchControlPoints;
+    if ((ret = wined3d_uint32_compare(a->ts_desc.patchControlPoints, b->ts_desc.patchControlPoints)))
+        return ret;
 
     if ((ret = memcmp(&a->viewport, &b->viewport, sizeof(a->viewport))))
         return ret;
@@ -1854,27 +1857,27 @@ static int wined3d_graphics_pipeline_vk_compare(const void *key, const struct wi
     if ((ret = memcmp(&a->rs_desc, &b->rs_desc, sizeof(a->rs_desc))))
         return ret;
 
-    if (a->ms_desc.rasterizationSamples != b->ms_desc.rasterizationSamples)
-        return a->ms_desc.rasterizationSamples - b->ms_desc.rasterizationSamples;
-    if (a->ms_desc.alphaToCoverageEnable != b->ms_desc.alphaToCoverageEnable)
-        return a->ms_desc.alphaToCoverageEnable - b->ms_desc.alphaToCoverageEnable;
-    if (a->sample_mask != b->sample_mask)
-        return a->sample_mask - b->sample_mask;
+    if ((ret = wined3d_uint32_compare(a->ms_desc.rasterizationSamples, b->ms_desc.rasterizationSamples)))
+        return ret;
+    if ((ret = wined3d_uint32_compare(a->ms_desc.alphaToCoverageEnable, b->ms_desc.alphaToCoverageEnable)))
+        return ret;
+    if ((ret = wined3d_uint32_compare(a->sample_mask, b->sample_mask)))
+        return ret;
 
     if ((ret = memcmp(&a->ds_desc, &b->ds_desc, sizeof(a->ds_desc))))
         return ret;
 
-    if (a->blend_desc.attachmentCount != b->blend_desc.attachmentCount)
-        return a->blend_desc.attachmentCount - b->blend_desc.attachmentCount;
+    if ((ret = wined3d_uint32_compare(a->blend_desc.attachmentCount, b->blend_desc.attachmentCount)))
+        return ret;
     if ((ret = memcmp(a->blend_attachments, b->blend_attachments,
             a->blend_desc.attachmentCount * sizeof(*a->blend_attachments))))
         return ret;
 
-    if (a->pipeline_desc.layout != b->pipeline_desc.layout)
-        return a->pipeline_desc.layout - b->pipeline_desc.layout;
+    if ((ret = wined3d_uint64_compare(a->pipeline_desc.layout, b->pipeline_desc.layout)))
+        return ret;
 
-    if (a->pipeline_desc.renderPass != b->pipeline_desc.renderPass)
-        return a->pipeline_desc.renderPass - b->pipeline_desc.renderPass;
+    if ((ret = wined3d_uint64_compare(a->pipeline_desc.renderPass, b->pipeline_desc.renderPass)))
+        return ret;
 
     return 0;
 }
-- 
2.30.2




More information about the wine-devel mailing list