intel/fs: Don't handle texop_tex for shaders without implicit LOD
These will be lowered by nir_lower_tex() with the lower_tex_when_implicit_lod_not_supported, so don't need the extra handling here. Reviewed-by: Rob Clark <robdclark@gmail.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
@@ -5353,15 +5353,10 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
|
|||||||
srcs[TEX_LOGICAL_SRC_COORD_COMPONENTS] = brw_imm_d(instr->coord_components);
|
srcs[TEX_LOGICAL_SRC_COORD_COMPONENTS] = brw_imm_d(instr->coord_components);
|
||||||
srcs[TEX_LOGICAL_SRC_GRAD_COMPONENTS] = brw_imm_d(lod_components);
|
srcs[TEX_LOGICAL_SRC_GRAD_COMPONENTS] = brw_imm_d(lod_components);
|
||||||
|
|
||||||
bool shader_supports_implicit_lod = stage == MESA_SHADER_FRAGMENT ||
|
|
||||||
(stage == MESA_SHADER_COMPUTE &&
|
|
||||||
nir->info.cs.derivative_group != DERIVATIVE_GROUP_NONE);
|
|
||||||
|
|
||||||
enum opcode opcode;
|
enum opcode opcode;
|
||||||
switch (instr->op) {
|
switch (instr->op) {
|
||||||
case nir_texop_tex:
|
case nir_texop_tex:
|
||||||
opcode = shader_supports_implicit_lod ?
|
opcode = SHADER_OPCODE_TEX_LOGICAL;
|
||||||
SHADER_OPCODE_TEX_LOGICAL : SHADER_OPCODE_TXL_LOGICAL;
|
|
||||||
break;
|
break;
|
||||||
case nir_texop_txb:
|
case nir_texop_txb:
|
||||||
opcode = FS_OPCODE_TXB_LOGICAL;
|
opcode = FS_OPCODE_TXB_LOGICAL;
|
||||||
|
@@ -693,6 +693,7 @@ brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir,
|
|||||||
.lower_txp = ~0,
|
.lower_txp = ~0,
|
||||||
.lower_txf_offset = true,
|
.lower_txf_offset = true,
|
||||||
.lower_rect_offset = true,
|
.lower_rect_offset = true,
|
||||||
|
.lower_tex_without_implicit_lod = true,
|
||||||
.lower_txd_cube_map = true,
|
.lower_txd_cube_map = true,
|
||||||
.lower_txb_shadow_clamp = true,
|
.lower_txb_shadow_clamp = true,
|
||||||
.lower_txd_shadow_clamp = true,
|
.lower_txd_shadow_clamp = true,
|
||||||
|
Reference in New Issue
Block a user