diff --git a/.pick_status.json b/.pick_status.json index 775dfc2fbb5..b9347c0afb8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -967,7 +967,7 @@ "description": "llvmpipe: include gallivm perf flags in shader cache.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "6c0c61cb48e87d9b0fc545cf30016d3947a47b6a" }, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index 1eb4892a4a6..4cff598461f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -721,3 +721,8 @@ gallivm_jit_function(struct gallivm_state *gallivm, return jit_func; } + +unsigned gallivm_get_perf_flags(void) +{ + return gallivm_perf; +} diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.h b/src/gallium/auxiliary/gallivm/lp_bld_init.h index 4b00cebaef5..7c516b2b266 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.h @@ -85,6 +85,8 @@ func_pointer gallivm_jit_function(struct gallivm_state *gallivm, LLVMValueRef func); +unsigned gallivm_get_perf_flags(void); + #ifdef __cplusplus } #endif diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 1db662bf932..fd1037c72a4 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -793,6 +793,7 @@ llvmpipe_get_timestamp(struct pipe_screen *_screen) static void lp_disk_cache_create(struct llvmpipe_screen *screen) { struct mesa_sha1 ctx; + unsigned gallivm_perf = gallivm_get_perf_flags(); unsigned char sha1[20]; char cache_id[20 * 2 + 1]; _mesa_sha1_init(&ctx); @@ -801,6 +802,7 @@ static void lp_disk_cache_create(struct llvmpipe_screen *screen) !disk_cache_get_function_identifier(LLVMLinkInMCJIT, &ctx)) return; + _mesa_sha1_update(&ctx, &gallivm_perf, sizeof(gallivm_perf)); _mesa_sha1_final(&ctx, sha1); disk_cache_format_hex_id(cache_id, sha1, 20 * 2);