nir: Add a nir_tex_instr_has_implicit_derivatives helper
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
@@ -133,20 +133,10 @@ 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:
|
||||
instr->pass_flags = 0;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user