From: Jason Ekstrand Date: Fri, 7 Jun 2019 22:58:15 +0000 (-0500) Subject: nir: Add a nir_tex_instr_has_implicit_derivatives helper X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0e6cb481fa203573bd1e27cea1f314b842b72e9c;p=mesa.git nir: Add a nir_tex_instr_has_implicit_derivatives helper Reviewed-by: Alyssa Rosenzweig Reviewed-by: Kenneth Graunke --- diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index c6c9e2b5347..e224f03ea99 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -1783,6 +1783,19 @@ nir_tex_instr_is_query(const nir_tex_instr *instr) } } +static inline bool +nir_tex_instr_has_implicit_derivative(const nir_tex_instr *instr) +{ + switch (instr->op) { + case nir_texop_tex: + case nir_texop_txb: + case nir_texop_lod: + return true; + default: + return false; + } +} + static inline nir_alu_type nir_tex_instr_src_type(const nir_tex_instr *instr, unsigned src) { diff --git a/src/compiler/nir/nir_opt_gcm.c b/src/compiler/nir/nir_opt_gcm.c index aeae2ad6401..eb8b9ee6583 100644 --- a/src/compiler/nir/nir_opt_gcm.c +++ b/src/compiler/nir/nir_opt_gcm.c @@ -133,18 +133,8 @@ gcm_pin_instructions_block(nir_block *block, struct gcm_state *state) break; case nir_instr_type_tex: - switch (nir_instr_as_tex(instr)->op) { - case nir_texop_tex: - case nir_texop_txb: - case nir_texop_lod: - /* These two take implicit derivatives so they need to be pinned */ + if (nir_tex_instr_has_implicit_derivative(nir_instr_as_tex(instr))) instr->pass_flags = GCM_INSTR_PINNED; - break; - - default: - instr->pass_flags = 0; - break; - } break; case nir_instr_type_load_const: