diff options
author | Zack Rusin <[email protected]> | 2014-02-04 19:28:58 -0500 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2014-02-05 19:40:53 -0500 |
commit | 69ee3f431f9f1bb782485ede992b95e01ad790a5 (patch) | |
tree | 97ae67573ae2f6c6532c176c31df9cdd33bf2459 /src/gallium/auxiliary/gallivm/lp_bld_tgsi.h | |
parent | 8507afc97fa3323c89ee4cd1359d2fa61015bcd0 (diff) |
gallivm: handle huge number of immediates
We only supported up to 256 immediates, which isn't enough. We had
code which was allocating immediates as an allocated array, but it
was always used along a statically backed array for performance
reasons. This commit adds code to skip that performance optimization
and always use just the dynamically allocated immediates if the
number of them is too great.
Signed-off-by: Zack Rusin <[email protected]>
Reviewed-by: Jose Fonseca <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_tgsi.h')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_tgsi.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h index e0a7c5dc1ab..ffd6e874a89 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h @@ -444,7 +444,7 @@ struct lp_build_tgsi_soa_context struct tgsi_declaration_sampler_view sv[PIPE_MAX_SHADER_SAMPLER_VIEWS]; - LLVMValueRef immediates[LP_MAX_TGSI_IMMEDIATES][TGSI_NUM_CHANNELS]; + LLVMValueRef immediates[LP_MAX_INLINED_IMMEDIATES][TGSI_NUM_CHANNELS]; LLVMValueRef temps[LP_MAX_INLINED_TEMPS][TGSI_NUM_CHANNELS]; LLVMValueRef addr[LP_MAX_TGSI_ADDRS][TGSI_NUM_CHANNELS]; LLVMValueRef preds[LP_MAX_TGSI_PREDS][TGSI_NUM_CHANNELS]; @@ -482,7 +482,7 @@ struct lp_build_tgsi_soa_context struct lp_exec_mask exec_mask; uint num_immediates; - + boolean use_immediates_array; }; void @@ -536,7 +536,7 @@ struct lp_build_tgsi_aos_context struct lp_build_sampler_aos *sampler; - LLVMValueRef immediates[LP_MAX_TGSI_IMMEDIATES]; + LLVMValueRef immediates[LP_MAX_INLINED_IMMEDIATES]; LLVMValueRef temps[LP_MAX_INLINED_TEMPS]; LLVMValueRef addr[LP_MAX_TGSI_ADDRS]; LLVMValueRef preds[LP_MAX_TGSI_PREDS]; |