[Mesa-dev] [PATCH 12/16] st/nine: Fix computation of const_used_size
Axel Davy
axel.davy at ens.fr
Fri Apr 24 13:09:41 PDT 2015
From: Xavier Bouchoux <xavierb at gmail.com>
Was sometimes too large for PS.
Reviewed-by: Axel Davy <axel.davy at ens.fr>
Signed-off-by: Xavier Bouchoux <xavierb at gmail.com>
---
src/gallium/state_trackers/nine/nine_shader.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/gallium/state_trackers/nine/nine_shader.c b/src/gallium/state_trackers/nine/nine_shader.c
index 1f1f7c8..7beb1ab 100644
--- a/src/gallium/state_trackers/nine/nine_shader.c
+++ b/src/gallium/state_trackers/nine/nine_shader.c
@@ -3082,6 +3082,7 @@ nine_translate_shader(struct NineDevice9 *device, struct nine_shader_info *info)
HRESULT hr = D3D_OK;
const unsigned processor = tgsi_processor_from_type(info->type);
unsigned s, slot_max;
+ unsigned max_const_f;
user_assert(processor != ~0, D3DERR_INVALIDCALL);
@@ -3221,11 +3222,12 @@ nine_translate_shader(struct NineDevice9 *device, struct nine_shader_info *info)
if (tx->indirect_const_access) /* vs only */
info->const_float_slots = device->max_vs_const_f;
+ max_const_f = IS_VS ? device->max_vs_const_f : device->max_ps_const_f;
slot_max = info->const_bool_slots > 0 ?
- device->max_vs_const_f + NINE_MAX_CONST_I
- + info->const_bool_slots :
+ max_const_f + NINE_MAX_CONST_I
+ + (info->const_bool_slots+3)/4 :
info->const_int_slots > 0 ?
- device->max_vs_const_f + info->const_int_slots :
+ max_const_f + info->const_int_slots :
info->const_float_slots;
info->const_used_size = sizeof(float[4]) * slot_max; /* slots start from 1 */
--
2.1.0
More information about the mesa-dev
mailing list