nir: move getting deref from var after we check deref type.
I posted a load of hacks before to do this, Jason suggested this, just check the deref mode, not the variable mode and delay getting the variable until we know the type. avoids crashes when derefing shared memory pointers. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -210,10 +210,9 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
|
||||
case nir_intrinsic_load_deref:
|
||||
case nir_intrinsic_store_deref:{
|
||||
nir_deref_instr *deref = nir_src_as_deref(instr->src[0]);
|
||||
nir_variable *var = nir_deref_instr_get_variable(deref);
|
||||
|
||||
if (var->data.mode == nir_var_shader_in ||
|
||||
var->data.mode == nir_var_shader_out) {
|
||||
if (deref->mode == nir_var_shader_in ||
|
||||
deref->mode == nir_var_shader_out) {
|
||||
nir_variable *var = nir_deref_instr_get_variable(deref);
|
||||
bool is_output_read = false;
|
||||
if (var->data.mode == nir_var_shader_out &&
|
||||
instr->intrinsic == nir_intrinsic_load_deref)
|
||||
|
Reference in New Issue
Block a user