From 4449572c47c04e3974a30677259ff791b351a7ca Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 5 Jun 2019 15:39:22 -0700 Subject: [PATCH] freedreno: Only upload UBO pointers for UBOs that haven't been lowered. total constlen in shared programs: 2485933 -> 2462236 (-0.95%) Reviewed-by: Rob Clark Reviewed-by: Kristian H. Kristensen --- src/freedreno/ir3/ir3_nir.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c index cb97a2202ed..1ef47aa3e06 100644 --- a/src/freedreno/ir3/ir3_nir.c +++ b/src/freedreno/ir3/ir3_nir.c @@ -328,6 +328,13 @@ ir3_nir_scan_driver_consts(nir_shader *shader, layout->image_dims.count; layout->image_dims.count += 3; /* three const per */ break; + case nir_intrinsic_load_ubo: + if (nir_src_is_const(intr->src[0])) { + layout->num_ubos = MAX2(layout->num_ubos, + nir_src_as_uint(intr->src[0]) + 1); + } else { + layout->num_ubos = shader->info.num_ubos; + } default: break; } @@ -347,7 +354,6 @@ ir3_setup_const_state(struct ir3_shader *shader, nir_shader *nir) ir3_nir_scan_driver_consts(nir, const_state); const_state->num_uniforms = nir->num_uniforms; - const_state->num_ubos = nir->info.num_ubos; debug_assert((shader->ubo_state.size % 16) == 0); unsigned constoff = align(shader->ubo_state.size / 16, 4); -- 2.11.0