Re: [Mesa-dev] [PATCH 2/3] gallivm: make sure analysis works with large number of immediates

2014-02-05 Thread 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


Re: [Mesa-dev] [PATCH 2/3] gallivm: make sure analysis works with large number of immediates

2014-02-05 Thread 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


Re: [Mesa-dev] [PATCH 2/3] gallivm: make sure analysis works with large number of immediates

2014-02-05 Thread Roland Scheidegger
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


Re: [Mesa-dev] [PATCH 2/3] gallivm: make sure analysis works with large number of immediates

2014-02-04 Thread Brian Paul

On 02/04/2014 05:34 PM, Zack Rusin wrote:

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



Reviewed-by: Brian Paul bri...@vmware.com

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev