mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-26 17:12:07 +00:00
gallivm: add coro malloc hooks earlier and always.
This fixes GALLIVM_DEBUG=asm for compute shaders, changing
the hooks after dumping causes a segfault because the
memory has already been finalised. Just add the hooks always,
and before dumping anything.
Fixes: f511d2a553
("gallivm: rework coroutine malloc/free callouts.")
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19714>
(cherry picked from commit fb7de303ba7cbdb4237d2ae93011bc2845114d35)
This commit is contained in:
parent
2828fae0cf
commit
c0c5eed580
@ -742,7 +742,7 @@
|
||||
"description": "gallivm: add coro malloc hooks earlier and always.",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "f511d2a553377a58b5eea6c6d1170fcc4972237a"
|
||||
},
|
||||
|
@ -3624,12 +3624,10 @@ draw_tcs_llvm_create_variant(struct draw_llvm *llvm,
|
||||
draw_tcs_llvm_dump_variant_key(&variant->key);
|
||||
}
|
||||
|
||||
lp_build_coro_declare_malloc_hooks(variant->gallivm);
|
||||
draw_tcs_llvm_generate(llvm, variant);
|
||||
|
||||
gallivm_compile_module(variant->gallivm);
|
||||
|
||||
lp_build_coro_add_malloc_hooks(variant->gallivm);
|
||||
variant->jit_func = (draw_tcs_jit_func)
|
||||
gallivm_jit_function(variant->gallivm, variant->function);
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "lp_bld_debug.h"
|
||||
#include "lp_bld_misc.h"
|
||||
#include "lp_bld_init.h"
|
||||
#include "lp_bld_coro.h"
|
||||
#include "lp_bld_printf.h"
|
||||
|
||||
#include <llvm/Config/llvm-config.h>
|
||||
@ -408,6 +409,7 @@ init_gallivm_state(struct gallivm_state *gallivm, const char *name,
|
||||
if (!create_pass_manager(gallivm))
|
||||
goto fail;
|
||||
|
||||
lp_build_coro_declare_malloc_hooks(gallivm);
|
||||
return TRUE;
|
||||
|
||||
fail:
|
||||
@ -694,6 +696,8 @@ gallivm_compile_module(struct gallivm_state *gallivm)
|
||||
LLVMAddGlobalMapping(gallivm->engine, gallivm->debug_printf_hook, debug_printf);
|
||||
|
||||
|
||||
lp_build_coro_add_malloc_hooks(gallivm);
|
||||
|
||||
if (gallivm_debug & GALLIVM_DEBUG_ASM) {
|
||||
LLVMValueRef llvm_func = LLVMGetFirstFunction(gallivm->module);
|
||||
|
||||
|
@ -145,8 +145,6 @@ generate_compute(struct llvmpipe_context *lp,
|
||||
}
|
||||
}
|
||||
|
||||
lp_build_coro_declare_malloc_hooks(gallivm);
|
||||
|
||||
if (variant->gallivm->cache->data_size)
|
||||
return;
|
||||
|
||||
@ -812,7 +810,6 @@ generate_variant(struct llvmpipe_context *lp,
|
||||
|
||||
gallivm_compile_module(variant->gallivm);
|
||||
|
||||
lp_build_coro_add_malloc_hooks(variant->gallivm);
|
||||
variant->nr_instrs += lp_build_count_ir_module(variant->gallivm->module);
|
||||
|
||||
variant->jit_function = (lp_jit_cs_func)gallivm_jit_function(variant->gallivm, variant->function);
|
||||
|
Loading…
Reference in New Issue
Block a user