st/mesa: Let NIR lower UBO and SSBO access when we have it
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
This commit is contained in:
committed by
Jason Ekstrand
parent
be2990d8fb
commit
efa4fc0ebd
@@ -329,7 +329,13 @@ void st_init_limits(struct pipe_screen *screen,
|
|||||||
if (!screen->get_param(screen, PIPE_CAP_NIR_COMPACT_ARRAYS))
|
if (!screen->get_param(screen, PIPE_CAP_NIR_COMPACT_ARRAYS))
|
||||||
options->LowerCombinedClipCullDistance = true;
|
options->LowerCombinedClipCullDistance = true;
|
||||||
|
|
||||||
options->LowerBufferInterfaceBlocks = true;
|
bool prefer_nir = PIPE_SHADER_IR_NIR ==
|
||||||
|
screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_PREFERRED_IR);
|
||||||
|
|
||||||
|
/* NIR can do the lowering on our behalf and we'll get better results
|
||||||
|
* because it can actually optimize SSBO access.
|
||||||
|
*/
|
||||||
|
options->LowerBufferInterfaceBlocks = !prefer_nir;
|
||||||
}
|
}
|
||||||
|
|
||||||
c->MaxUserAssignableUniformLocations =
|
c->MaxUserAssignableUniformLocations =
|
||||||
|
|||||||
@@ -415,6 +415,10 @@ st_glsl_to_nir(struct st_context *st, struct gl_program *prog,
|
|||||||
|
|
||||||
st_nir_opts(nir, is_scalar);
|
st_nir_opts(nir, is_scalar);
|
||||||
|
|
||||||
|
NIR_PASS_V(nir, gl_nir_lower_buffers, shader_program);
|
||||||
|
/* Do a round of constant folding to clean up address calculations */
|
||||||
|
NIR_PASS_V(nir, nir_opt_constant_folding);
|
||||||
|
|
||||||
if (lower_64bit) {
|
if (lower_64bit) {
|
||||||
bool lowered_64bit_ops = false;
|
bool lowered_64bit_ops = false;
|
||||||
bool progress = false;
|
bool progress = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user