Am 04.02.2014 03:43, schrieb Zack Rusin: > The number of allowed temporaries increases almost with every > iteration of an api. We used to support 128, then we started > increasing and the newer api's support 4096+. So if we notice > that the number of temporaries is larger than our statically > allocated storage would allow we just treat them as indexable > temporaries and allocate them as an array from the start. > > Signed-off-by: Zack Rusin <za...@vmware.com> > --- > src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > index 9db41a9..7c5de21 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > @@ -2672,8 +2672,8 @@ lp_emit_declaration_soa( > assert(last <= bld->bld_base.info->file_max[decl->Declaration.File]); > switch (decl->Declaration.File) { > case TGSI_FILE_TEMPORARY: > - assert(idx < LP_MAX_TGSI_TEMPS); > if (!(bld->indirect_files & (1 << TGSI_FILE_TEMPORARY))) { > + assert(idx < LP_MAX_TGSI_TEMPS); > for (i = 0; i < TGSI_NUM_CHANNELS; i++) > bld->temps[idx][i] = lp_build_alloca(gallivm, vec_type, > "temp"); > } > @@ -3621,6 +3621,15 @@ lp_build_tgsi_soa(struct gallivm_state *gallivm, > bld.bld_base.info = info; > bld.indirect_files = info->indirect_files; > > + /* > + * If the number of temporaries is rather large then we just > + * allocate them as an array right from the start and treat > + * like indirect temporaries. > + */ > + if (info->file_max[TGSI_FILE_TEMPORARY] >= LP_MAX_TGSI_TEMPS) { > + bld.indirect_files |= (1 << TGSI_FILE_TEMPORARY); > + } > + > bld.bld_base.soa = TRUE; > bld.bld_base.emit_debug = emit_debug; > bld.bld_base.emit_fetch_funcs[TGSI_FILE_CONSTANT] = emit_fetch_constant; >
Looks good to me. Roland _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev