summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2018-01-10 13:56:11 -0800
committerEric Anholt <eric@anholt.net>2018-01-12 21:56:48 -0800
commit028f6b327c4a0504bfbf99eb80b253aa765e2992 (patch)
tree95ea8b3782faab94b3f05da87fc0f5bd393dd383
parent42a35da96d69524dee262315bfcab3803f58bbff (diff)
broadcom/vc5: Add the new TMU write addresses for V3D 4.x (and r5rep).
The V3D 3.x series of TMU writes with meaning depending on the texture type is replaced with writes to specific registers for each texture argument semantic.
-rw-r--r--src/broadcom/qpu/qpu_instr.c31
-rw-r--r--src/broadcom/qpu/qpu_instr.h16
2 files changed, 37 insertions, 10 deletions
diff --git a/src/broadcom/qpu/qpu_instr.c b/src/broadcom/qpu/qpu_instr.c
index 85d6cf75d8..986097a11b 100644
--- a/src/broadcom/qpu/qpu_instr.c
+++ b/src/broadcom/qpu/qpu_instr.c
@@ -54,6 +54,22 @@ v3d_qpu_magic_waddr_name(enum v3d_qpu_waddr waddr)
[V3D_QPU_WADDR_LOG] = "log",
[V3D_QPU_WADDR_SIN] = "sin",
[V3D_QPU_WADDR_RSQRT2] = "rsqrt2",
+ [V3D_QPU_WADDR_TMUC] = "tmuc",
+ [V3D_QPU_WADDR_TMUS] = "tmus",
+ [V3D_QPU_WADDR_TMUT] = "tmut",
+ [V3D_QPU_WADDR_TMUR] = "tmur",
+ [V3D_QPU_WADDR_TMUI] = "tmui",
+ [V3D_QPU_WADDR_TMUB] = "tmub",
+ [V3D_QPU_WADDR_TMUDREF] = "tmudref",
+ [V3D_QPU_WADDR_TMUOFF] = "tmuoff",
+ [V3D_QPU_WADDR_TMUSCM] = "tmuscm",
+ [V3D_QPU_WADDR_TMUSF] = "tmusf",
+ [V3D_QPU_WADDR_TMUSLOD] = "tmuslod",
+ [V3D_QPU_WADDR_TMUHS] = "tmuhs",
+ [V3D_QPU_WADDR_TMUHSCM] = "tmuscm",
+ [V3D_QPU_WADDR_TMUHSF] = "tmuhsf",
+ [V3D_QPU_WADDR_TMUHSLOD] = "tmuhslod",
+ [V3D_QPU_WADDR_R5REP] = "r5rep",
};
return waddr_magic[waddr];
@@ -489,16 +505,11 @@ v3d_qpu_magic_waddr_is_sfu(enum v3d_qpu_waddr waddr)
bool
v3d_qpu_magic_waddr_is_tmu(enum v3d_qpu_waddr waddr)
{
- switch (waddr) {
- case V3D_QPU_WADDR_TMU:
- case V3D_QPU_WADDR_TMUL:
- case V3D_QPU_WADDR_TMUD:
- case V3D_QPU_WADDR_TMUA:
- case V3D_QPU_WADDR_TMUAU:
- return true;
- default:
- return false;
- }
+ /* XXX: WADDR_TMU changed to UNIFA on 4.x */
+ return ((waddr >= V3D_QPU_WADDR_TMU &&
+ waddr <= V3D_QPU_WADDR_TMUAU) ||
+ (waddr >= V3D_QPU_WADDR_TMUC &&
+ waddr <= V3D_QPU_WADDR_TMUHSLOD));
}
bool
diff --git a/src/broadcom/qpu/qpu_instr.h b/src/broadcom/qpu/qpu_instr.h
index 0bd79ca68d..b65a35ae3c 100644
--- a/src/broadcom/qpu/qpu_instr.h
+++ b/src/broadcom/qpu/qpu_instr.h
@@ -114,6 +114,22 @@ enum v3d_qpu_waddr {
V3D_QPU_WADDR_LOG = 22,
V3D_QPU_WADDR_SIN = 23,
V3D_QPU_WADDR_RSQRT2 = 24,
+ V3D_QPU_WADDR_TMUC = 32,
+ V3D_QPU_WADDR_TMUS = 33,
+ V3D_QPU_WADDR_TMUT = 34,
+ V3D_QPU_WADDR_TMUR = 35,
+ V3D_QPU_WADDR_TMUI = 36,
+ V3D_QPU_WADDR_TMUB = 37,
+ V3D_QPU_WADDR_TMUDREF = 38,
+ V3D_QPU_WADDR_TMUOFF = 39,
+ V3D_QPU_WADDR_TMUSCM = 40,
+ V3D_QPU_WADDR_TMUSF = 41,
+ V3D_QPU_WADDR_TMUSLOD = 42,
+ V3D_QPU_WADDR_TMUHS = 43,
+ V3D_QPU_WADDR_TMUHSCM = 44,
+ V3D_QPU_WADDR_TMUHSF = 45,
+ V3D_QPU_WADDR_TMUHSLOD = 46,
+ V3D_QPU_WADDR_R5REP = 55,
};
struct v3d_qpu_flags {