Mesa (master): freedreno: Only upload UBO pointers for UBOs that haven't been lowered.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Jun 22 00:16:35 UTC 2019


Module: Mesa
Branch: master
Commit: 4449572c47c04e3974a30677259ff791b351a7ca
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4449572c47c04e3974a30677259ff791b351a7ca

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Jun  5 15:39:22 2019 -0700

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 <robdclark at gmail.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>

---

 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);




More information about the mesa-commit mailing list