mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-13 04:30:38 +01:00
etnaviv: Add support for DP2 instruction
A two-component dot product instruction is supported with HALTI2, use it on hardware that supports it. Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:
parent
80f608b530
commit
ec254f4bfa
4 changed files with 7 additions and 1 deletions
|
|
@ -1752,6 +1752,7 @@ static const struct instr_translater translaters[TGSI_OPCODE_LAST] = {
|
|||
INSTR(RSQ, trans_instr, .opc = INST_OPCODE_RSQ, .src = {2, -1, -1}),
|
||||
INSTR(MUL, trans_instr, .opc = INST_OPCODE_MUL, .src = {0, 1, -1}),
|
||||
INSTR(ADD, trans_instr, .opc = INST_OPCODE_ADD, .src = {0, 2, -1}),
|
||||
INSTR(DP2, trans_instr, .opc = INST_OPCODE_DP2, .src = {0, 1, -1}),
|
||||
INSTR(DP3, trans_instr, .opc = INST_OPCODE_DP3, .src = {0, 1, -1}),
|
||||
INSTR(DP4, trans_instr, .opc = INST_OPCODE_DP4, .src = {0, 1, -1}),
|
||||
INSTR(DST, trans_instr, .opc = INST_OPCODE_DST, .src = {0, 1, -1}),
|
||||
|
|
@ -2293,7 +2294,7 @@ etna_compile_shader(struct etna_shader_variant *v)
|
|||
.lower_POW = true,
|
||||
.lower_EXP = true,
|
||||
.lower_LOG = true,
|
||||
.lower_DP2 = true,
|
||||
.lower_DP2 = !specs->has_halti2_instructions,
|
||||
.lower_TRUNC = true,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -513,6 +513,7 @@ static const struct opc_info {
|
|||
OPC(AND),
|
||||
OPC(XOR),
|
||||
OPC(NOT),
|
||||
OPC(DP2),
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -72,6 +72,8 @@ struct etna_specs {
|
|||
unsigned has_shader_range_registers : 1;
|
||||
/* has the new sin/cos/log functions */
|
||||
unsigned has_new_transcendentals : 1;
|
||||
/* has the new dp2/dpX_norm instructions, among others */
|
||||
unsigned has_halti2_instructions : 1;
|
||||
/* supports single-buffer rendering with multiple pixel pipes */
|
||||
unsigned single_buffer : 1;
|
||||
/* has unified uniforms memory */
|
||||
|
|
|
|||
|
|
@ -700,6 +700,8 @@ etna_get_specs(struct etna_screen *screen)
|
|||
VIV_FEATURE(screen, chipMinorFeatures1, NON_POWER_OF_TWO);
|
||||
screen->specs.has_new_transcendentals =
|
||||
VIV_FEATURE(screen, chipMinorFeatures3, HAS_FAST_TRANSCENDENTALS);
|
||||
screen->specs.has_halti2_instructions =
|
||||
VIV_FEATURE(screen, chipMinorFeatures4, HALTI2);
|
||||
|
||||
if (VIV_FEATURE(screen, chipMinorFeatures3, INSTRUCTION_CACHE)) {
|
||||
/* GC3000 - this core is capable of loading shaders from
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue