diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index ff880973c02..ad311de94dd 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -531,6 +531,9 @@ ntq_emit_tmu_general(struct v3d_compile *c, nir_intrinsic_instr *instr, if (!is_load) c->tmu_dirty_rcl = true; + if (is_global) + c->has_global_address = true; + bool has_index = !is_shared_or_scratch && !is_global; int offset_src; diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h index ac15af06f78..8db0bba4a0d 100644 --- a/src/broadcom/compiler/v3d_compiler.h +++ b/src/broadcom/compiler/v3d_compiler.h @@ -904,6 +904,7 @@ struct v3d_compile { enum v3d_compilation_result compilation_result; bool tmu_dirty_rcl; + bool has_global_address; }; struct v3d_uniform_list { @@ -933,6 +934,8 @@ struct v3d_prog_data { bool tmu_dirty_rcl; bool has_control_barrier; + + bool has_global_address; }; struct v3d_vs_prog_data { diff --git a/src/broadcom/compiler/vir.c b/src/broadcom/compiler/vir.c index d95ac010a21..84489219ac4 100644 --- a/src/broadcom/compiler/vir.c +++ b/src/broadcom/compiler/vir.c @@ -859,6 +859,7 @@ v3d_set_prog_data(struct v3d_compile *c, prog_data->compile_strategy_idx = c->compile_strategy_idx; prog_data->tmu_dirty_rcl = c->tmu_dirty_rcl; prog_data->has_control_barrier = c->s->info.uses_control_barrier; + prog_data->has_global_address = c->has_global_address; v3d_set_prog_data_uniforms(c, prog_data);