summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-03-23 08:30:09 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2013-03-23 08:30:09 +0100
commit24dfbab6dcbda28b124abb53f0d90067e13fe1e5 (patch)
tree78a00b304e0566d662adcc628f633d4e1a43232d /doc
parent7499ea976bb17736e67d5d3776acec58b59e99df (diff)
rnndb: add profile counters
Diffstat (limited to 'doc')
-rw-r--r--doc/isa.md29
1 files changed, 18 insertions, 11 deletions
diff --git a/doc/isa.md b/doc/isa.md
index 3c943f6..f785a8f 100644
--- a/doc/isa.md
+++ b/doc/isa.md
@@ -162,22 +162,29 @@ Becomes:
TEXLD t2, tex0, t2.xyyy, void, void
MUL t1, t1, t2, void
-Misc notes
-=======================
-- The shader engine packs together the registers of concurrently-executing shaders into the register bank.
- If you write beyond the number of registers in `VIV_STATE_(PS/VS)_TEMP_REGISTER_CONTROL`, you will overwrite
- registers of the next/previous shader instance, resulting in corrupt output.
+Clip-space z
+--------------
-- Two instructions are always appended to the vertex shader:
+Two instructions are always appended to the vertex shader:
ADD t0.__z_, t0.zzzz, void, t0.wwww
MUL t0.__z_, t0.zzzz, u0.xxxx, void ; u0.x=0.5
- This adjusts the output position z, based on w. Likely this works around a difference in interpretation between
- the hardware and the OpenGL standard.
+This adjusts the output position z, based on w. Likely this works around a difference in interpretation between
+the hardware and the OpenGL standard.
+
+For the gc2000 in the i.mx6 these two instructions are no longer appended (the only difference in the vertex shader for
+smoothed cube between gc600 and gc2000, as generated by the blob driver, is this).
+
+The cutoff point for this is at GC1000. All Vivante GPUs before GC1000 require these two instructions, except
+the GC880.
+
+Misc notes
+=======================
+- The shader engine packs together the registers of concurrently-executing shaders into the register bank.
+ If you write beyond the number of registers in `VIV_STATE_(PS/VS)_TEMP_REGISTER_CONTROL`, you will overwrite
+ registers of the next/previous shader instance, resulting in corrupt output.
- For the gc2000 in the i.mx6 these two instructions are no longer appended (the only difference in the vertex shader for
- smoothed cube between gc600 and gc2000, as generated by the blob driver, is this). I do not know where the cutoff point is.
- t0 at the beginning of the fragment shader has the x/y/z coordinates
x and y are in screen space, z is depth in 0.0 .. 1.0
@@ -187,7 +194,7 @@ Misc notes
- In PS, RGROUP 1 register i0.x contains the value of gl_FrontFacing.
i0.y also contains a non-zero value. i0.zw are zero.
-- i1..i127 are simply aliases of i0, at least on my GC600.
+ - i1..i127 are simply aliases of i0, at least on my GC600.
- The exact same texture sampling instruction, TEXLD, is used to sample 2D as well as Cubemap textures
(and, likely, other types of textures as well on hardware that supports these)