intel/compiler: Fix missing tie-breaker in brw_nir_analyze_ubo_ranges() ordering...
authorCaio Oliveira <caio.oliveira@intel.com>
Mon, 14 Nov 2022 00:19:48 +0000 (16:19 -0800)
committerMarge Bot <emma+marge@anholt.net>
Mon, 14 Nov 2022 19:41:35 +0000 (19:41 +0000)
Per Ken suggestion, use ascending order for the start offset.

Fixes: 6d28c6e52cf ("i965: Select ranges of UBO data to be uploaded as push constants.")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19731>

src/intel/compiler/brw_nir_analyze_ubo_ranges.c

index 3ab618e..aec74c7 100644 (file)
@@ -67,16 +67,16 @@ cmp_ubo_range_entry(const void *va, const void *vb)
    const struct ubo_range_entry *a = va;
    const struct ubo_range_entry *b = vb;
 
-   /* Rank based on scores */
+   /* Rank based on scores, descending order */
    int delta = score(b) - score(a);
 
-   /* Then use the UBO block index as a tie-breaker */
+   /* Then use the UBO block index as a tie-breaker, descending order */
    if (delta == 0)
       delta = b->range.block - a->range.block;
 
-   /* Finally use the UBO offset as a second tie-breaker */
+   /* Finally use the start offset as a second tie-breaker, ascending order */
    if (delta == 0)
-      delta = b->range.block - a->range.block;
+      delta = a->range.start - b->range.start;
 
    return delta;
 }