Sorry just saw your other answers so you can forget this. Roland
Am 05.02.2014 19:19, schrieb Roland Scheidegger: > I don't think that will actually work as then the new code will never > get used and we will always have a huge static array. > There doesn't seem to be an explicit limit for immediates we could use - > there's one in patch 3/3 but that's only a ureg limit. Maybe need a new > limit somewhere. > > Roland > > > Am 05.02.2014 19:00, schrieb Jose Fonseca: >> Let's update LP_MAX_TGSI_IMMEDIATES and use it instead of 4096. >> >> Otherwise looks good. >> >> >> Jose >> >> ----- Original Message ----- >>> We need to handle a lot more immediates and in order to do that >>> we also switch from allocating this structure on the stack to >>> allocating it on the heap. >>> >>> Signed-off-by: Zack Rusin <za...@vmware.com> >>> --- >>> src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c | 17 +++++++++-------- >>> 1 file changed, 9 insertions(+), 8 deletions(-) >>> >>> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c >>> b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c >>> index 184790b..ce0598d 100644 >>> --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c >>> +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c >>> @@ -47,7 +47,7 @@ struct analysis_context >>> struct lp_tgsi_info *info; >>> >>> unsigned num_imms; >>> - float imm[128][4]; >>> + float imm[4096][4]; >>> >>> struct lp_tgsi_channel_info temp[32][4]; >>> }; >>> @@ -487,7 +487,7 @@ lp_build_tgsi_info(const struct tgsi_token *tokens, >>> struct lp_tgsi_info *info) >>> { >>> struct tgsi_parse_context parse; >>> - struct analysis_context ctx; >>> + struct analysis_context *ctx; >>> unsigned index; >>> unsigned chan; >>> >>> @@ -495,8 +495,8 @@ lp_build_tgsi_info(const struct tgsi_token *tokens, >>> >>> tgsi_scan_shader(tokens, &info->base); >>> >>> - memset(&ctx, 0, sizeof ctx); >>> - ctx.info = info; >>> + ctx = CALLOC(1, sizeof(struct analysis_context)); >>> + ctx->info = info; >>> >>> tgsi_parse_init(&parse, tokens); >>> >>> @@ -518,7 +518,7 @@ lp_build_tgsi_info(const struct tgsi_token *tokens, >>> goto finished; >>> } >>> >>> - analyse_instruction(&ctx, inst); >>> + analyse_instruction(ctx, inst); >>> } >>> break; >>> >>> @@ -527,16 +527,16 @@ lp_build_tgsi_info(const struct tgsi_token *tokens, >>> const unsigned size = >>> parse.FullToken.FullImmediate.Immediate.NrTokens - 1; >>> assert(size <= 4); >>> - if (ctx.num_imms < Elements(ctx.imm)) { >>> + if (ctx->num_imms < Elements(ctx->imm)) { >>> for (chan = 0; chan < size; ++chan) { >>> float value = >>> parse.FullToken.FullImmediate.u[chan].Float; >>> - ctx.imm[ctx.num_imms][chan] = value; >>> + ctx->imm[ctx->num_imms][chan] = value; >>> >>> if (value < 0.0f || value > 1.0f) { >>> info->unclamped_immediates = TRUE; >>> } >>> } >>> - ++ctx.num_imms; >>> + ++ctx->num_imms; >>> } >>> } >>> break; >>> @@ -551,6 +551,7 @@ lp_build_tgsi_info(const struct tgsi_token *tokens, >>> finished: >>> >>> tgsi_parse_free(&parse); >>> + FREE(ctx); >>> >>> >>> /* >>> -- >>> 1.8.3.2 >>> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev