llvmpipe/draw: drop variant number from function names.
authorDave Airlie <airlied@redhat.com>
Thu, 14 May 2020 23:59:34 +0000 (09:59 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 10 Jun 2020 20:05:40 +0000 (06:05 +1000)
When we use an object cache for the MCJIT we can have identical
cache entries from the same shader variant in different shaders,
but the JIT objcache uses the function name to relink things,
so it has to be consistent. Just drop the variants from the
function names.

Note the modules still have the variant info.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5049>

src/gallium/auxiliary/draw/draw_llvm.c
src/gallium/drivers/llvmpipe/lp_state_cs.c
src/gallium/drivers/llvmpipe/lp_state_fs.c

index 06bb445..79322e4 100644 (file)
@@ -1891,8 +1891,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
 
    memset(&system_values, 0, sizeof(system_values));
    memset(&outputs, 0, sizeof(outputs));
-   snprintf(func_name, sizeof(func_name), "draw_llvm_vs_variant%u",
-            variant->shader->variants_cached);
+   snprintf(func_name, sizeof(func_name), "draw_llvm_vs_variant");
 
    i = 0;
    arg_types[i++] = get_context_ptr_type(variant);       /* context */
@@ -2693,8 +2692,7 @@ draw_gs_llvm_generate(struct draw_llvm *llvm,
    memset(&system_values, 0, sizeof(system_values));
    memset(&outputs, 0, sizeof(outputs));
 
-   snprintf(func_name, sizeof(func_name), "draw_llvm_gs_variant%u",
-            variant->shader->variants_cached);
+   snprintf(func_name, sizeof(func_name), "draw_llvm_gs_variant");
 
    assert(variant->vertex_header_ptr_type);
 
@@ -3230,11 +3228,9 @@ draw_tcs_llvm_generate(struct draw_llvm *llvm,
 
    memset(&system_values, 0, sizeof(system_values));
 
-   snprintf(func_name, sizeof(func_name), "draw_llvm_tcs_variant%u",
-            variant->shader->variants_cached);
+   snprintf(func_name, sizeof(func_name), "draw_llvm_tcs_variant");
 
-   snprintf(func_name_coro, sizeof(func_name_coro), "draw_llvm_tcs_coro_variant%u",
-            variant->shader->variants_cached);
+   snprintf(func_name_coro, sizeof(func_name_coro), "draw_llvm_tcs_coro_variant");
 
    arg_types[0] = get_tcs_context_ptr_type(variant);    /* context */
    arg_types[1] = variant->input_array_type;           /* input */
@@ -3762,8 +3758,7 @@ draw_tes_llvm_generate(struct draw_llvm *llvm,
    memset(&system_values, 0, sizeof(system_values));
    memset(&outputs, 0, sizeof(outputs));
 
-   snprintf(func_name, sizeof(func_name), "draw_llvm_tes_variant%u",
-            variant->shader->variants_cached);
+   snprintf(func_name, sizeof(func_name), "draw_llvm_tes_variant");
 
    arg_types[0] = get_tes_context_ptr_type(variant);    /* context */
    arg_types[1] = variant->input_array_type;           /* input */
index c9c03b6..9c46993 100644 (file)
@@ -96,11 +96,9 @@ generate_compute(struct llvmpipe_context *lp,
    cs_type.norm = FALSE;         /* values are not limited to [0,1] or [-1,1] */
    cs_type.width = 32;           /* 32-bit float */
    cs_type.length = MIN2(lp_native_vector_width / 32, 16); /* n*4 elements per vector */
-   snprintf(func_name, sizeof(func_name), "cs%u_variant%u",
-            shader->no, variant->no);
+   snprintf(func_name, sizeof(func_name), "cs_variant");
 
-   snprintf(func_name_coro, sizeof(func_name), "cs_co_%u_variant%u",
-            shader->no, variant->no);
+   snprintf(func_name_coro, sizeof(func_name), "cs_co_variant");
 
    arg_types[0] = variant->jit_cs_context_ptr_type;       /* context */
    arg_types[1] = int32_type;                          /* block_x_size */
index 207eefb..d7b77d5 100644 (file)
@@ -2816,8 +2816,8 @@ generate_fragment(struct llvmpipe_context *lp,
 
    blend_vec_type = lp_build_vec_type(gallivm, blend_type);
 
-   snprintf(func_name, sizeof(func_name), "fs%u_variant%u_%s",
-            shader->no, variant->no, partial_mask ? "partial" : "whole");
+   snprintf(func_name, sizeof(func_name), "fs_variant_%s",
+            partial_mask ? "partial" : "whole");
 
    arg_types[0] = variant->jit_context_ptr_type;       /* context */
    arg_types[1] = int32_type;                          /* x */