diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c index 197a6512dd5..375aac62486 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c @@ -224,6 +224,10 @@ etna_emit_tex(struct etna_compile *c, nir_tex_instr * tex, unsigned dst_swiz, inst.opcode = ISA_OPC_TXF; inst.src[2] = etna_immediate_int(0x1100); break; + case nir_texop_tg4: + inst.opcode = ISA_OPC_TG4; + inst.src[1] = etna_immediate_int(tex->component); + break; default: compile_error(c, "Unhandled NIR tex type: %d\n", tex->op); } diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 23ef0f651ff..22a3f34ba1f 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -280,6 +280,8 @@ etna_init_screen_caps(struct etna_screen *screen) caps->min_texel_offset = -8; caps->max_texel_offset = 7; + caps->max_texture_gather_components = + (VIV_FEATURE(screen, ETNA_FEATURE_HALTI5) && DBG_ENABLED(ETNA_DBG_DEQP)) ? 4 : 0; caps->seamless_cube_map_per_texture = caps->seamless_cube_map = VIV_FEATURE(screen, ETNA_FEATURE_SEAMLESS_CUBE_MAP); caps->texture_multisample = DBG_ENABLED(ETNA_DBG_DEQP);