default:
if (nir_intrinsic_writes_external_memory(instr))
shader->info.writes_memory = true;
+
+ if (instr->intrinsic == nir_intrinsic_image_size ||
+ instr->intrinsic == nir_intrinsic_image_samples ||
+ instr->intrinsic == nir_intrinsic_image_deref_size ||
+ instr->intrinsic == nir_intrinsic_image_deref_samples ||
+ instr->intrinsic == nir_intrinsic_bindless_image_size ||
+ instr->intrinsic == nir_intrinsic_bindless_image_samples)
+ shader->info.uses_resource_info_query = true;
break;
}
}
case nir_texop_tg4:
shader->info.uses_texture_gather = true;
break;
+ case nir_texop_txs:
+ case nir_texop_query_levels:
+ case nir_texop_texture_samples:
+ shader->info.uses_resource_info_query = true;
+ break;
default:
break;
}
shader->info.patch_inputs_read_indirectly = 0;
shader->info.patch_outputs_accessed_indirectly = 0;
+ shader->info.uses_resource_info_query = false;
+
if (shader->info.stage == MESA_SHADER_VERTEX) {
shader->info.vs.double_inputs = 0;
}
/* Whether or not this shader ever uses textureGather() */
bool uses_texture_gather:1;
+ /* Whether texture size, levels, or samples is queried. */
+ bool uses_resource_info_query:1;
+
/**
* True if this shader uses the fddx/fddy opcodes.
*