Module: Mesa Branch: main Commit: 928f02195e7818a6db5bd688b31ea51dab4dff91 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=928f02195e7818a6db5bd688b31ea51dab4dff91
Author: Dylan Baker <[email protected]> Date: Wed Mar 16 13:10:46 2022 -0700 llvmpipe: replace uses of simple_list.h with list.h Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15418> --- src/gallium/auxiliary/gallivm/lp_bld_init.c | 1 - src/gallium/drivers/llvmpipe/lp_context.c | 8 +++--- src/gallium/drivers/llvmpipe/lp_scene.c | 1 - src/gallium/drivers/llvmpipe/lp_state_cs.c | 29 +++++++++----------- src/gallium/drivers/llvmpipe/lp_state_cs.h | 2 +- src/gallium/drivers/llvmpipe/lp_state_fs.c | 31 +++++++++------------- src/gallium/drivers/llvmpipe/lp_state_fs.h | 3 ++- .../drivers/llvmpipe/lp_state_fs_linear_llvm.c | 1 - src/gallium/drivers/llvmpipe/lp_state_setup.c | 23 +++++++--------- src/gallium/drivers/llvmpipe/lp_state_setup.h | 2 +- src/gallium/drivers/llvmpipe/lp_texture.c | 15 +++++------ src/gallium/drivers/llvmpipe/lp_texture.h | 16 ++++++----- 12 files changed, 59 insertions(+), 73 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index 19b079b1275..10aa312d472 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -31,7 +31,6 @@ #include "util/u_cpu_detect.h" #include "util/u_debug.h" #include "util/u_memory.h" -#include "util/simple_list.h" #include "util/os_time.h" #include "lp_bld.h" #include "lp_bld_debug.h" diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c index 8f494e8332e..82e5c742055 100644 --- a/src/gallium/drivers/llvmpipe/lp_context.c +++ b/src/gallium/drivers/llvmpipe/lp_context.c @@ -36,7 +36,7 @@ #include "util/u_inlines.h" #include "util/u_math.h" #include "util/u_memory.h" -#include "util/simple_list.h" +#include "util/list.h" #include "util/u_upload_mgr.h" #include "lp_clear.h" #include "lp_context.h" @@ -199,11 +199,11 @@ llvmpipe_create_context(struct pipe_screen *screen, void *priv, memset(llvmpipe, 0, sizeof *llvmpipe); - make_empty_list(&llvmpipe->fs_variants_list); + list_inithead(&llvmpipe->fs_variants_list.list); - make_empty_list(&llvmpipe->setup_variants_list); + list_inithead(&llvmpipe->setup_variants_list.list); - make_empty_list(&llvmpipe->cs_variants_list); + list_inithead(&llvmpipe->cs_variants_list.list); llvmpipe->pipe.screen = screen; llvmpipe->pipe.priv = priv; diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c index dd89b8546da..b102a2a4518 100644 --- a/src/gallium/drivers/llvmpipe/lp_scene.c +++ b/src/gallium/drivers/llvmpipe/lp_scene.c @@ -29,7 +29,6 @@ #include "util/u_math.h" #include "util/u_memory.h" #include "util/u_inlines.h" -#include "util/simple_list.h" #include "util/format/u_format.h" #include "lp_scene.h" #include "lp_fence.h" diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c b/src/gallium/drivers/llvmpipe/lp_state_cs.c index 21fecc39b34..230004d799f 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_cs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c @@ -23,7 +23,6 @@ * **************************************************************************/ #include "util/u_memory.h" -#include "util/simple_list.h" #include "util/os_time.h" #include "util/u_dump.h" #include "util/u_string.h" @@ -515,7 +514,7 @@ llvmpipe_create_compute_state(struct pipe_context *pipe, nir_tgsi_scan_shader(shader->base.ir.nir, &shader->info.base, false); } - make_empty_list(&shader->variants); + list_inithead(&shader->variants.list); nr_samplers = shader->info.base.file_max[TGSI_FILE_SAMPLER] + 1; nr_sampler_views = shader->info.base.file_max[TGSI_FILE_SAMPLER_VIEW] + 1; @@ -558,11 +557,11 @@ llvmpipe_remove_cs_shader_variant(struct llvmpipe_context *lp, gallivm_destroy(variant->gallivm); /* remove from shader's list */ - remove_from_list(&variant->list_item_local); + list_del(&variant->list_item_local.list); variant->shader->variants_cached--; /* remove from context's list */ - remove_from_list(&variant->list_item_global); + list_del(&variant->list_item_global.list); lp->nr_cs_variants--; lp->nr_cs_instrs -= variant->nr_instrs; @@ -575,7 +574,7 @@ llvmpipe_delete_compute_state(struct pipe_context *pipe, { struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe); struct lp_compute_shader *shader = cs; - struct lp_cs_variant_list_item *li; + struct lp_cs_variant_list_item *li, *next; if (llvmpipe->cs == cs) llvmpipe->cs = NULL; @@ -584,11 +583,8 @@ llvmpipe_delete_compute_state(struct pipe_context *pipe, FREE(shader->global_buffers); /* Delete all the variants */ - li = first_elem(&shader->variants); - while(!at_end(&shader->variants, li)) { - struct lp_cs_variant_list_item *next = next_elem(li); + LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) { llvmpipe_remove_cs_shader_variant(llvmpipe, li->base); - li = next; } if (shader->base.ir.nir) ralloc_free(shader->base.ir.nir); @@ -843,20 +839,18 @@ llvmpipe_update_cs(struct llvmpipe_context *lp) key = make_variant_key(lp, shader, store); /* Search the variants for one which matches 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) { /* Move this variant to the head of the list to implement LRU * deletion of shader's when we have too many. */ - move_to_head(&lp->cs_variants_list, &variant->list_item_global); + list_move_to(&variant->list_item_global.list, &lp->cs_variants_list.list); } else { /* variant not found, create it now */ @@ -894,10 +888,11 @@ llvmpipe_update_cs(struct llvmpipe_context *lp) for (i = 0; i < variants_to_cull || lp->nr_cs_instrs >= LP_MAX_SHADER_INSTRUCTIONS; i++) { struct lp_cs_variant_list_item *item; - if (is_empty_list(&lp->cs_variants_list)) { + if (list_is_empty(&lp->cs_variants_list.list)) { break; } - item = last_elem(&lp->cs_variants_list); + item = list_last_entry(&lp->cs_variants_list.list, + struct lp_cs_variant_list_item, list); assert(item); assert(item->base); llvmpipe_remove_cs_shader_variant(lp, item->base); @@ -915,8 +910,8 @@ llvmpipe_update_cs(struct llvmpipe_context *lp) /* Put the new variant into the list */ if (variant) { - insert_at_head(&shader->variants, &variant->list_item_local); - insert_at_head(&lp->cs_variants_list, &variant->list_item_global); + list_add(&variant->list_item_local.list, &shader->variants.list); + list_add(&variant->list_item_global.list, &lp->cs_variants_list.list); lp->nr_cs_variants++; lp->nr_cs_instrs += variant->nr_instrs; shader->variants_cached++; diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.h b/src/gallium/drivers/llvmpipe/lp_state_cs.h index 7fb99326532..6a218c915af 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_cs.h +++ b/src/gallium/drivers/llvmpipe/lp_state_cs.h @@ -72,8 +72,8 @@ lp_cs_variant_key_images(const struct lp_compute_shader_variant_key *key) struct lp_cs_variant_list_item { + struct list_head list; struct lp_compute_shader_variant *base; - struct lp_cs_variant_list_item *next, *prev; }; struct lp_compute_shader_variant diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index c7aa24bcdb6..bc4778e2764 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -65,7 +65,6 @@ #include "util/format/u_format.h" #include "util/u_dump.h" #include "util/u_string.h" -#include "util/simple_list.h" #include "util/u_dual_blend.h" #include "util/u_upload_mgr.h" #include "util/os_time.h" @@ -3815,7 +3814,7 @@ llvmpipe_create_fs_state(struct pipe_context *pipe, pipe_reference_init(&shader->reference, 1); shader->no = fs_no++; - make_empty_list(&shader->variants); + list_inithead(&shader->variants.list); shader->base.type = templ->type; if (templ->type == PIPE_SHADER_IR_TGSI) { @@ -3945,11 +3944,11 @@ void llvmpipe_remove_shader_variant(struct llvmpipe_context *lp, } /* remove from shader's list */ - remove_from_list(&variant->list_item_local); + list_del(&variant->list_item_local.list); variant->shader->variants_cached--; /* remove from context's list */ - remove_from_list(&variant->list_item_global); + list_del(&variant->list_item_global.list); lp->nr_fs_variants--; lp->nr_fs_instrs -= variant->nr_instrs; } @@ -3984,17 +3983,14 @@ llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs) { struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe); struct lp_fragment_shader *shader = fs; - struct lp_fs_variant_list_item *li; + struct lp_fs_variant_list_item *li, *next; /* Delete all the variants */ - li = first_elem(&shader->variants); - while(!at_end(&shader->variants, li)) { - struct lp_fs_variant_list_item *next = next_elem(li); + LIST_FOR_EACH_ENTRY_SAFE(li, next, &shader->variants.list, list) { struct lp_fragment_shader_variant *variant; variant = li->base; llvmpipe_remove_shader_variant(llvmpipe, li->base); lp_fs_variant_reference(llvmpipe, &variant, NULL); - li = next; } lp_fs_reference(llvmpipe, &shader, NULL); @@ -4386,7 +4382,7 @@ make_variant_key(struct llvmpipe_context *lp, * Update fragment shader state. This is called just prior to drawing * something when some fragment-related state has changed. */ -void +void llvmpipe_update_fs(struct llvmpipe_context *lp) { struct lp_fragment_shader *shader = lp->fs; @@ -4398,20 +4394,18 @@ llvmpipe_update_fs(struct llvmpipe_context *lp) key = make_variant_key(lp, shader, store); /* Search the variants for one which matches 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) { /* Move this variant to the head of the list to implement LRU * deletion of shader's when we have too many. */ - move_to_head(&lp->fs_variants_list, &variant->list_item_global); + list_move_to(&variant->list_item_global.list, &lp->fs_variants_list.list); } else { /* variant not found, create it now */ @@ -4449,10 +4443,11 @@ llvmpipe_update_fs(struct llvmpipe_context *lp) for (i = 0; i < variants_to_cull || lp->nr_fs_instrs >= LP_MAX_SHADER_INSTRUCTIONS; i++) { struct lp_fs_variant_list_item *item; - if (is_empty_list(&lp->fs_variants_list)) { + if (list_is_empty(&lp->fs_variants_list.list)) { break; } - item = last_elem(&lp->fs_variants_list); + item = list_last_entry(&lp->fs_variants_list.list, + struct lp_fs_variant_list_item, list); assert(item); assert(item->base); llvmpipe_remove_shader_variant(lp, item->base); @@ -4473,8 +4468,8 @@ llvmpipe_update_fs(struct llvmpipe_context *lp) /* Put the new variant into the list */ if (variant) { - insert_at_head(&shader->variants, &variant->list_item_local); - insert_at_head(&lp->fs_variants_list, &variant->list_item_global); + list_add(&variant->list_item_local.list, &shader->variants.list); + list_add(&variant->list_item_global.list, &lp->fs_variants_list.list); lp->nr_fs_variants++; lp->nr_fs_instrs += variant->nr_instrs; shader->variants_cached++; diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.h b/src/gallium/drivers/llvmpipe/lp_state_fs.h index 03a1f067a4b..7a6b9beeec7 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.h +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.h @@ -30,6 +30,7 @@ #define LP_STATE_FS_H_ +#include "util/list.h" #include "pipe/p_compiler.h" #include "pipe/p_state.h" #include "tgsi/tgsi_scan.h" /* for tgsi_shader_info */ @@ -151,8 +152,8 @@ lp_fs_variant_key_images(struct lp_fragment_shader_variant_key *key) /** doubly-linked list item */ struct lp_fs_variant_list_item { + struct list_head list; struct lp_fragment_shader_variant *base; - struct lp_fs_variant_list_item *next, *prev; }; diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs_linear_llvm.c b/src/gallium/drivers/llvmpipe/lp_state_fs_linear_llvm.c index f3b447da74c..61d183cb861 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs_linear_llvm.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs_linear_llvm.c @@ -26,7 +26,6 @@ **************************************************************************/ #include <limits.h> -#include "util/simple_list.h" #include "pipe/p_defines.h" #include "util/u_inlines.h" diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.c b/src/gallium/drivers/llvmpipe/lp_state_setup.c index 57a4b43bdc3..0b1d1e02c75 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.c @@ -28,7 +28,6 @@ #include "util/u_math.h" #include "util/u_memory.h" -#include "util/simple_list.h" #include "util/os_time.h" #include "gallivm/lp_bld_arit.h" #include "gallivm/lp_bld_bitarit.h" @@ -833,7 +832,7 @@ remove_setup_variant(struct llvmpipe_context *lp, gallivm_destroy(variant->gallivm); } - remove_from_list(&variant->list_item_global); + list_del(&variant->list_item_global.list); lp->nr_setup_variants--; FREE(variant); } @@ -858,10 +857,11 @@ cull_setup_variants(struct llvmpipe_context *lp) for (i = 0; i < LP_MAX_SETUP_VARIANTS / 4; i++) { struct lp_setup_variant_list_item *item; - if (is_empty_list(&lp->setup_variants_list)) { + if (list_is_empty(&lp->setup_variants_list.list)) { break; } - item = last_elem(&lp->setup_variants_list); + item = list_last_entry(&lp->setup_variants_list.list, + struct lp_setup_variant_list_item, list); assert(item); assert(item->base); remove_setup_variant(lp, item->base); @@ -874,7 +874,7 @@ cull_setup_variants(struct llvmpipe_context *lp) * prior to drawing something when some fragment-related state has * changed. */ -void +void llvmpipe_update_setup(struct llvmpipe_context *lp) { struct lp_setup_variant_key *key = &lp->setup_variant.key; @@ -883,7 +883,7 @@ llvmpipe_update_setup(struct llvmpipe_context *lp) lp_make_setup_variant_key(lp, key); - foreach(li, &lp->setup_variants_list) { + LIST_FOR_EACH_ENTRY(li, &lp->setup_variants_list.list, list) { if(li->base->key.size == key->size && memcmp(&li->base->key, key, key->size) == 0) { variant = li->base; @@ -892,7 +892,7 @@ llvmpipe_update_setup(struct llvmpipe_context *lp) } if (variant) { - move_to_head(&lp->setup_variants_list, &variant->list_item_global); + list_move_to(&variant->list_item_global.list, &lp->setup_variants_list.list); } else { if (lp->nr_setup_variants >= LP_MAX_SETUP_VARIANTS) { @@ -901,7 +901,7 @@ llvmpipe_update_setup(struct llvmpipe_context *lp) variant = generate_setup_variant(key, lp); if (variant) { - insert_at_head(&lp->setup_variants_list, &variant->list_item_global); + list_add(&variant->list_item_global.list, &lp->setup_variants_list.list); lp->nr_setup_variants++; } } @@ -912,12 +912,9 @@ llvmpipe_update_setup(struct llvmpipe_context *lp) void lp_delete_setup_variants(struct llvmpipe_context *lp) { - struct lp_setup_variant_list_item *li; - li = first_elem(&lp->setup_variants_list); - while(!at_end(&lp->setup_variants_list, li)) { - struct lp_setup_variant_list_item *next = next_elem(li); + struct lp_setup_variant_list_item *li, *next; + LIST_FOR_EACH_ENTRY_SAFE(li, next, &lp->setup_variants_list.list, list) { remove_setup_variant(lp, li->base); - li = next; } } diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.h b/src/gallium/drivers/llvmpipe/lp_state_setup.h index ee11c3c061a..740eb92ba7f 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_setup.h +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.h @@ -9,8 +9,8 @@ struct lp_setup_variant; struct lp_setup_variant_list_item { + struct list_head list; struct lp_setup_variant *base; - struct lp_setup_variant_list_item *next, *prev; }; diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c b/src/gallium/drivers/llvmpipe/lp_texture.c index 023eef29c56..e206f5091c9 100644 --- a/src/gallium/drivers/llvmpipe/lp_texture.c +++ b/src/gallium/drivers/llvmpipe/lp_texture.c @@ -40,7 +40,6 @@ #include "util/format/u_format.h" #include "util/u_math.h" #include "util/u_memory.h" -#include "util/simple_list.h" #include "util/u_transfer.h" #include "lp_context.h" @@ -293,7 +292,7 @@ llvmpipe_resource_create_all(struct pipe_screen *_screen, #ifdef DEBUG mtx_lock(&resource_list_mutex); - insert_at_tail(&resource_list, lpr); + list_addtail(&lpr->list, &resource_list.list); mtx_unlock(&resource_list_mutex); #endif @@ -422,7 +421,7 @@ llvmpipe_resource_from_memobj(struct pipe_screen *pscreen, #ifdef DEBUG mtx_lock(&resource_list_mutex); - insert_at_tail(&resource_list, lpr); + list_addtail(&lpr->list, &resource_list.list); mtx_unlock(&resource_list_mutex); #endif @@ -461,8 +460,8 @@ llvmpipe_resource_destroy(struct pipe_screen *pscreen, } #ifdef DEBUG mtx_lock(&resource_list_mutex); - if (lpr->next) - remove_from_list(lpr); + if (!list_is_empty(&lpr->list)) + list_del(&lpr->list); mtx_unlock(&resource_list_mutex); #endif @@ -601,7 +600,7 @@ llvmpipe_resource_from_handle(struct pipe_screen *_screen, #ifdef DEBUG mtx_lock(&resource_list_mutex); - insert_at_tail(&resource_list, lpr); + list_addtail(&lpr->list, &resource_list.list); mtx_unlock(&resource_list_mutex); #endif @@ -1029,7 +1028,7 @@ llvmpipe_print_resources(void) debug_printf("LLVMPIPE: current resources:\n"); mtx_lock(&resource_list_mutex); - foreach(lpr, &resource_list) { + LIST_FOR_EACH_ENTRY(lpr, &resource_list.list, list) { unsigned size = llvmpipe_resource_size(&lpr->base); debug_printf("resource %u at %p, size %ux%ux%u: %u bytes, refcount %u\n", lpr->id, (void *) lpr, @@ -1122,7 +1121,7 @@ llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen) static boolean first_call = TRUE; if (first_call) { memset(&resource_list, 0, sizeof(resource_list)); - make_empty_list(&resource_list); + list_inithead(&resource_list.list); first_call = FALSE; } } diff --git a/src/gallium/drivers/llvmpipe/lp_texture.h b/src/gallium/drivers/llvmpipe/lp_texture.h index c683cdd1e03..e14c9f0ee26 100644 --- a/src/gallium/drivers/llvmpipe/lp_texture.h +++ b/src/gallium/drivers/llvmpipe/lp_texture.h @@ -1,8 +1,8 @@ /************************************************************************** - * + * * Copyright 2007 VMware, Inc. * All Rights Reserved. - * + * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including @@ -10,11 +10,11 @@ * distribute, sub license, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: - * + * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial portions * of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. @@ -22,7 +22,7 @@ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * + * **************************************************************************/ #ifndef LP_TEXTURE_H @@ -32,6 +32,9 @@ #include "pipe/p_state.h" #include "util/u_debug.h" #include "lp_limits.h" +#ifdef DEBUG +#include "util/list.h" +#endif enum lp_texture_usage @@ -101,8 +104,7 @@ struct llvmpipe_resource bool backable; bool imported_memory; #ifdef DEBUG - /** for linked list */ - struct llvmpipe_resource *prev, *next; + struct list_head list; #endif };
