Mesa (main): gallium/draw: use list.h instead of simple_list.h

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 22 17:20:45 UTC 2022


Module: Mesa
Branch: main
Commit: 04082fbe2498f04d230ba08aee0d45df62b16c7d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=04082fbe2498f04d230ba08aee0d45df62b16c7d

Author: Dylan Baker <dylan.c.baker at intel.com>
Date:   Tue Feb 22 12:07:51 2022 -0800

gallium/draw: use list.h instead of simple_list.h

Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15418>

---

 src/gallium/auxiliary/draw/draw_gs.c               |  9 +--
 src/gallium/auxiliary/draw/draw_llvm.c             | 25 ++++----
 src/gallium/auxiliary/draw/draw_llvm.h             | 10 ++--
 .../draw/draw_pt_fetch_shade_pipeline_llvm.c       | 69 ++++++++++------------
 src/gallium/auxiliary/draw/draw_tess.c             | 18 ++----
 src/gallium/auxiliary/draw/draw_vs_llvm.c          |  9 +--
 6 files changed, 59 insertions(+), 81 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_gs.c b/src/gallium/auxiliary/draw/draw_gs.c
index e84554bef31..1c969046fe8 100644
--- a/src/gallium/auxiliary/draw/draw_gs.c
+++ b/src/gallium/auxiliary/draw/draw_gs.c
@@ -772,7 +772,7 @@ draw_create_geometry_shader(struct draw_context *draw,
 
       gs = &llvm_gs->base;
 
-      make_empty_list(&llvm_gs->variants);
+      list_inithead(&llvm_gs->variants.list);
    } else
 #endif
    {
@@ -931,13 +931,10 @@ void draw_delete_geometry_shader(struct draw_context *draw,
 #ifdef DRAW_LLVM_AVAILABLE
    if (draw->llvm) {
       struct llvm_geometry_shader *shader = llvm_geometry_shader(dgs);
-      struct draw_gs_llvm_variant_list_item *li;
+      struct draw_gs_llvm_variant_list_item *li, *next;
 
-      li = first_elem(&shader->variants);
-      while(!at_end(&shader->variants, li)) {
-         struct draw_gs_llvm_variant_list_item *next = next_elem(li);
+      LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) {
          draw_gs_llvm_destroy_variant(li->base);
-         li = next;
       }
 
       assert(shader->variants_cached == 0);
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 10f11d66af3..5e5ce53a3ab 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -58,7 +58,6 @@
 #include "util/u_math.h"
 #include "util/u_pointer.h"
 #include "util/u_string.h"
-#include "util/simple_list.h"
 #include "nir_serialize.h"
 #include "util/mesa-sha1.h"
 #define DEBUG_STORE 0
@@ -803,16 +802,16 @@ draw_llvm_create(struct draw_context *draw, LLVMContextRef context)
       goto fail;
 
    llvm->nr_variants = 0;
-   make_empty_list(&llvm->vs_variants_list);
+   list_inithead(&llvm->vs_variants_list.list);
 
    llvm->nr_gs_variants = 0;
-   make_empty_list(&llvm->gs_variants_list);
+   list_inithead(&llvm->gs_variants_list.list);
 
    llvm->nr_tcs_variants = 0;
-   make_empty_list(&llvm->tcs_variants_list);
+   list_inithead(&llvm->tcs_variants_list.list);
 
    llvm->nr_tes_variants = 0;
-   make_empty_list(&llvm->tes_variants_list);
+   list_inithead(&llvm->tes_variants_list.list);
 
    return llvm;
 
@@ -2689,9 +2688,9 @@ draw_llvm_destroy_variant(struct draw_llvm_variant *variant)
 
    gallivm_destroy(variant->gallivm);
 
-   remove_from_list(&variant->list_item_local);
+   list_del(&variant->list_item_local.list);
    variant->shader->variants_cached--;
-   remove_from_list(&variant->list_item_global);
+   list_del(&variant->list_item_global.list);
    llvm->nr_variants--;
    FREE(variant);
 }
@@ -3007,9 +3006,9 @@ draw_gs_llvm_destroy_variant(struct draw_gs_llvm_variant *variant)
 
    gallivm_destroy(variant->gallivm);
 
-   remove_from_list(&variant->list_item_local);
+   list_del(&variant->list_item_local.list);
    variant->shader->variants_cached--;
-   remove_from_list(&variant->list_item_global);
+   list_del(&variant->list_item_global.list);
    llvm->nr_gs_variants--;
    FREE(variant);
 }
@@ -3673,9 +3672,9 @@ draw_tcs_llvm_destroy_variant(struct draw_tcs_llvm_variant *variant)
 
    gallivm_destroy(variant->gallivm);
 
-   remove_from_list(&variant->list_item_local);
+   list_del(&variant->list_item_local.list);
    variant->shader->variants_cached--;
-   remove_from_list(&variant->list_item_global);
+   list_del(&variant->list_item_global.list);
    llvm->nr_tcs_variants--;
    FREE(variant);
 }
@@ -4200,9 +4199,9 @@ draw_tes_llvm_destroy_variant(struct draw_tes_llvm_variant *variant)
 
    gallivm_destroy(variant->gallivm);
 
-   remove_from_list(&variant->list_item_local);
+   list_del(&variant->list_item_local.list);
    variant->shader->variants_cached--;
-   remove_from_list(&variant->list_item_global);
+   list_del(&variant->list_item_global.list);
    llvm->nr_tes_variants--;
    FREE(variant);
 }
diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h
index f0f2c404a85..7506a87161e 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.h
+++ b/src/gallium/auxiliary/draw/draw_llvm.h
@@ -38,7 +38,7 @@
 #include "gallivm/lp_bld_limits.h"
 
 #include "pipe/p_context.h"
-#include "util/simple_list.h"
+#include "util/list.h"
 
 
 struct draw_llvm;
@@ -649,26 +649,26 @@ draw_tes_llvm_variant_key_images(struct draw_tes_llvm_variant_key *key)
 
 struct draw_llvm_variant_list_item
 {
+   struct list_head list;
    struct draw_llvm_variant *base;
-   struct draw_llvm_variant_list_item *next, *prev;
 };
 
 struct draw_gs_llvm_variant_list_item
 {
+   struct list_head list;
    struct draw_gs_llvm_variant *base;
-   struct draw_gs_llvm_variant_list_item *next, *prev;
 };
 
 struct draw_tcs_llvm_variant_list_item
 {
+   struct list_head list;
    struct draw_tcs_llvm_variant *base;
-   struct draw_tcs_llvm_variant_list_item *next, *prev;
 };
 
 struct draw_tes_llvm_variant_list_item
 {
+   struct list_head list;
    struct draw_tes_llvm_variant *base;
-   struct draw_tes_llvm_variant_list_item *next, *prev;
 };
 
 struct draw_llvm_variant
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
index 8abed870340..93010646b03 100644
--- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
@@ -80,23 +80,20 @@ llvm_middle_end_prepare_gs(struct llvm_middle_end *fpme)
    struct draw_gs_llvm_variant_list_item *li;
    struct llvm_geometry_shader *shader = llvm_geometry_shader(gs);
    char store[DRAW_GS_LLVM_MAX_VARIANT_KEY_SIZE];
-   unsigned i;
 
    key = draw_gs_llvm_make_variant_key(llvm, store);
 
    /* Search shader's list of variants for the key */
-   li = first_elem(&shader->variants);
-   while (!at_end(&shader->variants, li)) {
+   LIST_FOR_EACH_ENTRY(li, &shader->variants.list, list) {
       if (memcmp(&li->base->key, key, shader->variant_key_size) == 0) {
          variant = li->base;
          break;
       }
-      li = next_elem(li);
    }
 
    if (variant) {
       /* found the variant, move to head of global list (for LRU) */
-      move_to_head(&llvm->gs_variants_list, &variant->list_item_global);
+      list_move_to(&variant->list_item_global.list, &llvm->gs_variants_list.list);
    }
    else {
       /* Need to create new variant */
@@ -113,12 +110,13 @@ llvm_middle_end_prepare_gs(struct llvm_middle_end *fpme)
          /*
           * XXX: should we flush here ?
           */
-         for (i = 0; i < DRAW_MAX_SHADER_VARIANTS / 32; i++) {
-            struct draw_gs_llvm_variant_list_item *item;
-            if (is_empty_list(&llvm->gs_variants_list)) {
+         struct draw_gs_llvm_variant_list_item *item;
+         for (unsigned i = 0; i < DRAW_MAX_SHADER_VARIANTS / 32; i++) {
+            if (list_is_empty(&llvm->gs_variants_list.list)) {
                break;
             }
-            item = last_elem(&llvm->gs_variants_list);
+            item = list_last_entry(&llvm->gs_variants_list.list,
+                                   struct draw_gs_llvm_variant_list_item, list);
             assert(item);
             assert(item->base);
             draw_gs_llvm_destroy_variant(item->base);
@@ -128,9 +126,8 @@ llvm_middle_end_prepare_gs(struct llvm_middle_end *fpme)
       variant = draw_gs_llvm_create_variant(llvm, gs->info.num_outputs, key);
 
       if (variant) {
-         insert_at_head(&shader->variants, &variant->list_item_local);
-         insert_at_head(&llvm->gs_variants_list,
-                        &variant->list_item_global);
+         list_add(&variant->list_item_local.list, &shader->variants.list);
+         list_add(&variant->list_item_global.list, &llvm->gs_variants_list.list);
          llvm->nr_gs_variants++;
          shader->variants_cached++;
       }
@@ -155,18 +152,16 @@ llvm_middle_end_prepare_tcs(struct llvm_middle_end *fpme)
    key = draw_tcs_llvm_make_variant_key(llvm, store);
 
    /* Search shader's list of variants for the key */
-   li = first_elem(&shader->variants);
-   while (!at_end(&shader->variants, li)) {
+   LIST_FOR_EACH_ENTRY(li, &shader->variants.list, list) {
       if (memcmp(&li->base->key, key, shader->variant_key_size) == 0) {
          variant = li->base;
          break;
       }
-      li = next_elem(li);
    }
 
    if (variant) {
       /* found the variant, move to head of global list (for LRU) */
-      move_to_head(&llvm->tcs_variants_list, &variant->list_item_global);
+      list_move_to(&variant->list_item_global.list, &llvm->tcs_variants_list.list);
    }
    else {
       /* Need to create new variant */
@@ -185,10 +180,11 @@ llvm_middle_end_prepare_tcs(struct llvm_middle_end *fpme)
           */
          for (i = 0; i < DRAW_MAX_SHADER_VARIANTS / 32; i++) {
             struct draw_tcs_llvm_variant_list_item *item;
-            if (is_empty_list(&llvm->tcs_variants_list)) {
+            if (list_is_empty(&llvm->tcs_variants_list.list)) {
                break;
             }
-            item = last_elem(&llvm->tcs_variants_list);
+            item = list_last_entry(&llvm->tcs_variants_list.list,
+                                   struct draw_tcs_llvm_variant_list_item, list);
             assert(item);
             assert(item->base);
             draw_tcs_llvm_destroy_variant(item->base);
@@ -198,9 +194,8 @@ llvm_middle_end_prepare_tcs(struct llvm_middle_end *fpme)
       variant = draw_tcs_llvm_create_variant(llvm, 0, key);
 
       if (variant) {
-         insert_at_head(&shader->variants, &variant->list_item_local);
-         insert_at_head(&llvm->tcs_variants_list,
-                        &variant->list_item_global);
+         list_add(&variant->list_item_local.list, &shader->variants.list);
+         list_add(&variant->list_item_global.list, &llvm->tcs_variants_list.list);
          llvm->nr_tcs_variants++;
          shader->variants_cached++;
       }
@@ -225,18 +220,16 @@ llvm_middle_end_prepare_tes(struct llvm_middle_end *fpme)
    key = draw_tes_llvm_make_variant_key(llvm, store);
 
    /* Search shader's list of variants for the key */
-   li = first_elem(&shader->variants);
-   while (!at_end(&shader->variants, li)) {
+   LIST_FOR_EACH_ENTRY(li, &shader->variants.list, list) {
       if (memcmp(&li->base->key, key, shader->variant_key_size) == 0) {
          variant = li->base;
          break;
       }
-      li = next_elem(li);
    }
 
    if (variant) {
       /* found the variant, move to head of global list (for LRU) */
-      move_to_head(&llvm->tes_variants_list, &variant->list_item_global);
+      list_move_to(&variant->list_item_global.list, &llvm->tes_variants_list.list);
    }
    else {
       /* Need to create new variant */
@@ -255,10 +248,11 @@ llvm_middle_end_prepare_tes(struct llvm_middle_end *fpme)
           */
          for (i = 0; i < DRAW_MAX_SHADER_VARIANTS / 32; i++) {
             struct draw_tes_llvm_variant_list_item *item;
-            if (is_empty_list(&llvm->tes_variants_list)) {
+            if (list_is_empty(&llvm->tes_variants_list.list)) {
                break;
             }
-            item = last_elem(&llvm->tes_variants_list);
+            item = list_last_entry(&llvm->tes_variants_list.list,
+                                   struct draw_tes_llvm_variant_list_item, list);
             assert(item);
             assert(item->base);
             draw_tes_llvm_destroy_variant(item->base);
@@ -268,9 +262,8 @@ llvm_middle_end_prepare_tes(struct llvm_middle_end *fpme)
       variant = draw_tes_llvm_create_variant(llvm, draw_total_tes_outputs(draw), key);
 
       if (variant) {
-         insert_at_head(&shader->variants, &variant->list_item_local);
-         insert_at_head(&llvm->tes_variants_list,
-                        &variant->list_item_global);
+         list_add(&variant->list_item_local.list, &shader->variants.list);
+         list_add(&variant->list_item_global.list, &llvm->tes_variants_list.list);
          llvm->nr_tes_variants++;
          shader->variants_cached++;
       }
@@ -356,18 +349,16 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle,
       key = draw_llvm_make_variant_key(llvm, store);
 
       /* Search shader's list of variants for the key */
-      li = first_elem(&shader->variants);
-      while (!at_end(&shader->variants, li)) {
+      LIST_FOR_EACH_ENTRY(li, &shader->variants.list, list) {
          if (memcmp(&li->base->key, key, shader->variant_key_size) == 0) {
             variant = li->base;
             break;
          }
-         li = next_elem(li);
       }
 
       if (variant) {
          /* found the variant, move to head of global list (for LRU) */
-         move_to_head(&llvm->vs_variants_list, &variant->list_item_global);
+         list_move_to(&variant->list_item_global.list, &llvm->vs_variants_list.list);
       }
       else {
          /* Need to create new variant */
@@ -386,10 +377,11 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle,
              */
             for (i = 0; i < DRAW_MAX_SHADER_VARIANTS / 32; i++) {
                struct draw_llvm_variant_list_item *item;
-               if (is_empty_list(&llvm->vs_variants_list)) {
+               if (list_is_empty(&llvm->vs_variants_list.list)) {
                   break;
                }
-               item = last_elem(&llvm->vs_variants_list);
+               item = list_last_entry(&llvm->vs_variants_list.list,
+                                    struct draw_llvm_variant_list_item, list);
                assert(item);
                assert(item->base);
                draw_llvm_destroy_variant(item->base);
@@ -399,9 +391,8 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle,
          variant = draw_llvm_create_variant(llvm, nr, key);
 
          if (variant) {
-            insert_at_head(&shader->variants, &variant->list_item_local);
-            insert_at_head(&llvm->vs_variants_list,
-                           &variant->list_item_global);
+            list_add(&variant->list_item_local.list, &shader->variants.list);
+            list_add(&variant->list_item_global.list, &llvm->vs_variants_list.list);
             llvm->nr_variants++;
             shader->variants_cached++;
          }
diff --git a/src/gallium/auxiliary/draw/draw_tess.c b/src/gallium/auxiliary/draw/draw_tess.c
index c1742eb0300..9658e6f76ef 100644
--- a/src/gallium/auxiliary/draw/draw_tess.c
+++ b/src/gallium/auxiliary/draw/draw_tess.c
@@ -431,7 +431,7 @@ draw_create_tess_ctrl_shader(struct draw_context *draw,
 
       tcs = &llvm_tcs->base;
 
-      make_empty_list(&llvm_tcs->variants);
+      list_inithead(&llvm_tcs->variants.list);
    } else
 #endif
    {
@@ -489,13 +489,10 @@ void draw_delete_tess_ctrl_shader(struct draw_context *draw,
    if (draw->llvm) {
       struct llvm_tess_ctrl_shader *shader = llvm_tess_ctrl_shader(dtcs);
 
-      struct draw_tcs_llvm_variant_list_item *li;
+      struct draw_tcs_llvm_variant_list_item *li, *next;
 
-      li = first_elem(&shader->variants);
-      while(!at_end(&shader->variants, li)) {
-         struct draw_tcs_llvm_variant_list_item *next = next_elem(li);
+      LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) {
          draw_tcs_llvm_destroy_variant(li->base);
-         li = next;
       }
 
       assert(shader->variants_cached == 0);
@@ -535,7 +532,7 @@ draw_create_tess_eval_shader(struct draw_context *draw,
          return NULL;
 
       tes = &llvm_tes->base;
-      make_empty_list(&llvm_tes->variants);
+      list_inithead(&llvm_tes->variants.list);
    } else
 #endif
    {
@@ -619,13 +616,10 @@ void draw_delete_tess_eval_shader(struct draw_context *draw,
 #ifdef DRAW_LLVM_AVAILABLE
    if (draw->llvm) {
       struct llvm_tess_eval_shader *shader = llvm_tess_eval_shader(dtes);
-      struct draw_tes_llvm_variant_list_item *li;
+      struct draw_tes_llvm_variant_list_item *li, *next;
 
-      li = first_elem(&shader->variants);
-      while(!at_end(&shader->variants, li)) {
-         struct draw_tes_llvm_variant_list_item *next = next_elem(li);
+      LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) {
          draw_tes_llvm_destroy_variant(li->base);
-         li = next;
       }
 
       assert(shader->variants_cached == 0);
diff --git a/src/gallium/auxiliary/draw/draw_vs_llvm.c b/src/gallium/auxiliary/draw/draw_vs_llvm.c
index feb60768252..d71dd177411 100644
--- a/src/gallium/auxiliary/draw/draw_vs_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_vs_llvm.c
@@ -68,13 +68,10 @@ static void
 vs_llvm_delete( struct draw_vertex_shader *dvs )
 {
    struct llvm_vertex_shader *shader = llvm_vertex_shader(dvs);
-   struct draw_llvm_variant_list_item *li;
+   struct draw_llvm_variant_list_item *li, *next;
 
-   li = first_elem(&shader->variants);
-   while(!at_end(&shader->variants, li)) {
-      struct draw_llvm_variant_list_item *next = next_elem(li);
+   LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) {
       draw_llvm_destroy_variant(li->base);
-      li = next;
    }
 
    assert(shader->variants_cached == 0);
@@ -126,7 +123,7 @@ draw_create_vs_llvm(struct draw_context *draw,
    vs->base.delete = vs_llvm_delete;
    vs->base.create_variant = draw_vs_create_variant_generic;
 
-   make_empty_list(&vs->variants);
+   list_inithead(&vs->variants.list);
 
    return &vs->base;
 }



More information about the mesa-commit mailing list