summaryrefslogtreecommitdiff
path: root/platform/wavelet3d/gfx_shader_schedif.rdl
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-05-02 21:03:05 -0600
committerAlejandro Soto <alejandro@34project.org>2024-05-02 21:03:17 -0600
commit405c0287c80c34b0e9dfb9d9326b86d12433b4c4 (patch)
treeef38368c911bae30ff9c528dcf4a8fbfbc227fa7 /platform/wavelet3d/gfx_shader_schedif.rdl
parent50b71c7f0ea2574eb4802e1a12fe8b0920a4ca7f (diff)
platform/wavelet3d: implement shader cores
This commit contains over a month of intermittent work (I don't have enough free time to do this the right way)
Diffstat (limited to '')
-rw-r--r--platform/wavelet3d/gfx_shader_schedif.rdl74
1 files changed, 74 insertions, 0 deletions
diff --git a/platform/wavelet3d/gfx_shader_schedif.rdl b/platform/wavelet3d/gfx_shader_schedif.rdl
new file mode 100644
index 0000000..2ab31ac
--- /dev/null
+++ b/platform/wavelet3d/gfx_shader_schedif.rdl
@@ -0,0 +1,74 @@
+addrmap gfx_shader_schedif {
+ name = "Scheduler<->core interface";
+
+ default hw = r;
+ default sw = w;
+ default regwidth = 32;
+
+ reg {
+ name = "Shader core control register";
+
+ field {
+ desc = "Set this field to flush the instruction cache";
+
+ singlepulse;
+ } IFLUSH[0:0] = 0;
+ } CORE @ 0x0;
+
+ reg {
+ name = "Wavefront setup control register";
+
+ default hw = w;
+ default sw = r;
+ default precedence = hw;
+
+ field {
+ desc = "Wavefront group number";
+
+ hw = r;
+ sw = rw;
+ } GROUP[5:0];
+
+ field {
+ desc = "Destination SGPR number";
+
+ hw = r;
+ sw = rw;
+ } XGPR[11:8];
+
+ field {
+ desc = "PC table update done, group submitted";
+
+ rclr;
+ hwset;
+ } SUBMIT_DONE[16:16] = 0;
+
+ field {
+ desc = "General-purpose register update done";
+
+ rclr;
+ hwset;
+ } GPR_DONE[17:17] = 0;
+ } SETUP_CTRL @ 0x4;
+
+ reg {
+ name = "SGPR/VGPR write register";
+
+ field {
+ desc = "Value to write";
+
+ swmod;
+ } VALUE[31:0];
+ } SETUP_GPR @ 0x8;
+
+ reg {
+ name = "Group submit register";
+
+ field {
+ desc = "Initial group program counter, submits group on write";
+
+ swmod;
+ } PC[31:2];
+ } SETUP_SUBMIT @ 0xc;
+};
+