Looks good to me. Jose
----- Original Message ----- > From: Roland Scheidegger <[email protected]> > > 2ea923cf571235dfe573c35c3f0d90f632bd86d8 had the side effect of IR counting > now being done after IR optimization instead of before. Some quick analysis > shows that there's roughly 1.5 times more IR instructions before optimization > than after, hence the effective shader cache size got quite a bit smaller. > Could counter this with an increase of the instruction limit but it probably > makes more sense to count them after optimizations, so move that code. > --- > src/gallium/auxiliary/gallivm/lp_bld_type.c | 20 +++++++++++++++++++- > src/gallium/auxiliary/gallivm/lp_bld_type.h | 2 +- > src/gallium/drivers/llvmpipe/lp_state_fs.c | 4 ++-- > 3 files changed, 22 insertions(+), 4 deletions(-) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.c > b/src/gallium/auxiliary/gallivm/lp_bld_type.c > index 9b25e15..5a80199 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_type.c > +++ b/src/gallium/auxiliary/gallivm/lp_bld_type.c > @@ -394,7 +394,7 @@ lp_build_context_init(struct lp_build_context *bld, > /** > * Count the number of instructions in a function. > */ > -unsigned > +static unsigned > lp_build_count_instructions(LLVMValueRef function) > { > unsigned num_instrs = 0; > @@ -414,3 +414,21 @@ lp_build_count_instructions(LLVMValueRef function) > > return num_instrs; > } > + > + > +/** > + * Count the number of instructions in a module. > + */ > +unsigned > +lp_build_count_ir_module(LLVMModuleRef module) > +{ > + LLVMValueRef func; > + unsigned num_instrs = 0; > + > + func = LLVMGetFirstFunction(module); > + while (func) { > + num_instrs += lp_build_count_instructions(func); > + func = LLVMGetNextFunction(func); > + } > + return num_instrs; > +} > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.h > b/src/gallium/auxiliary/gallivm/lp_bld_type.h > index d0b490b..191cf92 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_type.h > +++ b/src/gallium/auxiliary/gallivm/lp_bld_type.h > @@ -447,7 +447,7 @@ lp_build_context_init(struct lp_build_context *bld, > > > unsigned > -lp_build_count_instructions(LLVMValueRef function); > +lp_build_count_ir_module(LLVMModuleRef module); > > > #endif /* !LP_BLD_TYPE_H */ > diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c > b/src/gallium/drivers/llvmpipe/lp_state_fs.c > index 4872e0d..0b74d15 100644 > --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c > +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c > @@ -2438,8 +2438,6 @@ generate_fragment(struct llvmpipe_context *lp, > LLVMBuildRetVoid(builder); > > gallivm_verify_function(gallivm, function); > - > - variant->nr_instrs += lp_build_count_instructions(function); > } > > > @@ -2629,6 +2627,8 @@ generate_variant(struct llvmpipe_context *lp, > > gallivm_compile_module(variant->gallivm); > > + variant->nr_instrs += lp_build_count_ir_module(variant->gallivm->module); > + > if (variant->function[RAST_EDGE_TEST]) { > variant->jit_function[RAST_EDGE_TEST] = (lp_jit_frag_func) > gallivm_jit_function(variant->gallivm, > -- > 1.9.1 > _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
