nir: Add nir_var_mem_image

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4743>
This commit is contained in:
Caio Marcelo de Oliveira Filho
2020-01-08 13:54:47 -08:00
committed by Marge Bot
parent 872750bb96
commit de3705edb0
9 changed files with 27 additions and 16 deletions

View File

@@ -115,9 +115,11 @@ gather_intrinsic(struct access_state *state, nir_intrinsic_instr *instr)
state->images_written |= write;
}
if (var->data.mode == nir_var_uniform && read)
if ((var->data.mode == nir_var_uniform ||
var->data.mode == nir_var_mem_image) && read)
_mesa_set_add(state->vars_read, var);
if (var->data.mode == nir_var_uniform && write)
if ((var->data.mode == nir_var_uniform ||
var->data.mode == nir_var_mem_image) && write)
_mesa_set_add(state->vars_written, var);
break;
@@ -187,7 +189,8 @@ process_variable(struct access_state *state, nir_variable *var)
{
const struct glsl_type *type = glsl_without_array(var->type);
if (var->data.mode != nir_var_mem_ssbo &&
!(var->data.mode == nir_var_uniform && glsl_type_is_image(type)))
!(var->data.mode == nir_var_uniform && glsl_type_is_image(type)) &&
var->data.mode != nir_var_mem_image)
return false;
/* Ignore variables we've already marked */
@@ -343,7 +346,8 @@ nir_opt_access(nir_shader *shader, const nir_opt_access_options *options)
nir_foreach_variable_with_modes(var, shader, nir_var_uniform |
nir_var_mem_ubo |
nir_var_mem_ssbo)
nir_var_mem_ssbo |
nir_var_mem_image)
var_progress |= process_variable(&state, var);
nir_foreach_function(func, shader) {