vk/allocator: Make a few things more consistant
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 3 Aug 2015 07:35:19 +0000 (00:35 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 3 Aug 2015 07:35:19 +0000 (00:35 -0700)
src/vulkan/anv_allocator.c

index 96c06fbcc184ef57a8a239d7f7ee8a496fb336d8..04293f0d9be102416251351f3f5f5031ac14b3ac 100644 (file)
@@ -153,9 +153,9 @@ round_to_power_of_two(uint32_t value)
 static bool
 anv_free_list_pop(union anv_free_list *list, void **map, uint32_t *offset)
 {
-   union anv_free_list current, next, old;
+   union anv_free_list current, new, old;
 
-   current = *list;
+   current.u64 = list->u64;
    while (current.offset != EMPTY) {
       /* We have to add a memory barrier here so that the list head (and
        * offset) gets read before we read the map pointer.  This way we
@@ -165,9 +165,9 @@ anv_free_list_pop(union anv_free_list *list, void **map, uint32_t *offset)
       __sync_synchronize();
 
       uint32_t *next_ptr = *map + current.offset;
-      next.offset = VG_NOACCESS_READ(next_ptr);
-      next.count = current.count + 1;
-      old.u64 = __sync_val_compare_and_swap(&list->u64, current.u64, next.u64);
+      new.offset = VG_NOACCESS_READ(next_ptr);
+      new.count = current.count + 1;
+      old.u64 = __sync_val_compare_and_swap(&list->u64, current.u64, new.u64);
       if (old.u64 == current.u64) {
          *offset = current.offset;
          return true;