| @@ -1280,6 +1280,10 @@ ttn_tex(struct ttn_compile *c, nir_alu_dest dest, nir_ssa_def **src) | |||
| num_srcs = 3; | |||
| samp = 3; | |||
| break; | |||
| case TGSI_OPCODE_LODQ: | |||
| op = nir_texop_lod; | |||
| num_srcs = 1; | |||
| break; | |||
| default: | |||
| fprintf(stderr, "unknown TGSI tex op %d\n", tgsi_inst->Instruction.Opcode); | |||
| @@ -1332,7 +1336,9 @@ ttn_tex(struct ttn_compile *c, nir_alu_dest dest, nir_ssa_def **src) | |||
| */ | |||
| sview = instr->sampler_index; | |||
| if (sview < c->num_samp_types) { | |||
| if (op == nir_texop_lod) { | |||
| instr->dest_type = nir_type_float; | |||
| } else if (sview < c->num_samp_types) { | |||
| instr->dest_type = c->samp_types[sview]; | |||
| } else { | |||
| instr->dest_type = nir_type_float; | |||
| @@ -1648,7 +1654,7 @@ static const nir_op op_trans[TGSI_OPCODE_LAST] = { | |||
| [TGSI_OPCODE_UMUL_HI] = nir_op_umul_high, | |||
| [TGSI_OPCODE_TG4] = 0, | |||
| [TGSI_OPCODE_LODQ] = 0, /* XXX */ | |||
| [TGSI_OPCODE_LODQ] = 0, | |||
| [TGSI_OPCODE_IBFE] = nir_op_ibitfield_extract, | |||
| [TGSI_OPCODE_UBFE] = nir_op_ubitfield_extract, | |||
| @@ -1816,6 +1822,7 @@ ttn_emit_instruction(struct ttn_compile *c) | |||
| case TGSI_OPCODE_TXQ_LZ: | |||
| case TGSI_OPCODE_TXF: | |||
| case TGSI_OPCODE_TG4: | |||
| case TGSI_OPCODE_LODQ: | |||
| ttn_tex(c, dest, src); | |||
| break; | |||