[PATCH] nv50: update comments
Christoph Bumiller
e0425955 at student.tuwien.ac.at
Sun Jun 21 08:11:40 PDT 2009
---
src/gallium/drivers/nv50/nv50_program.c | 92 ++++++++++++++-----------------
1 files changed, 41 insertions(+), 51 deletions(-)
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index 249f069..4b05075 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -36,42 +36,57 @@
/* ARL - gallium craps itself on progs/vp/arl.txt
*
- * MSB - Like MAD, but MUL+SUB
- * - Fuck it off, introduce a way to negate args for ops that
- * support it.
- *
- * Look into inlining IMMD for ops other than MOV (make it general?)
+ * Look into inlining IMMD for ops other than MOV (make it general ?)
* - Maybe even relax restrictions a bit, can't do P_RESULT + P_IMMD,
- * but can emit to P_TEMP first - then MOV later. NVIDIA does this
+ * but can emit to P_TEMP first - then MOV later. NVIDIA does this.
*
* In ops such as ADD it's possible to construct a bad opcode in the !is_long()
* case, if the emit_src() causes the inst to suddenly become long.
*
- * Verify half-insns work where expected - and force disable them where they
- * don't work - MUL has it forcibly disabled atm as it fixes POW..
+ * Verify half-insns work where expected - if they are used, they have to
+ * come in pairs. We cannot branch to between two half insns.
*
- * FUCK! watch dst==src vectors, can overwrite components that are needed.
- * ie. SUB R0, R0.yzxw, R0
+ * Watch dst == src vectors, can overwrite components that are needed:
+ * p.e. SUB R0, R0.yzxw, R0
+ * This should mostly be taken care of (if maybe not optimally) now,
+ * some cases (notably XPD) may still be bad though.
*
* Things to check with renouveau:
- * FP attr/result assignment - how?
- * attrib
- * - 0x16bc maps vp output onto fp hpos
- * - 0x16c0 maps vp output onto fp col0
- * result
- * - colr always 0-3
- * - depr always 4
- * 0x16bc->0x16e8 --> some binding between vp/fp regs
- * 0x16b8 --> VP output count
+ * FP results: can DEPR be mapped to another registers
+ * (currently it goes after all color outputs)
+ *
+ * 1298 = 0x00000004; or 0x00000005 if DEPR is written
+ *
+ * 19a8 = 0x00000000
+ * | 0x00000100 if DEPR is written
+ * | 0x00100000 if KIL is used
+ *
+ * 196c = 0x00000000
+ * | 0x00000011 if DEPR is used
+ *
+ * 1510 = bitmask to enable clipping planes
+ * 1688 = two-sided lighting enable
+ * 16ac = entry count of mapping table at [16bc]
+ * 16b0 = count of temporaries used in VP
+ *
+ * 1904 = 0x01CCBBFF (01 is sometimes 00 - ?)
+ * CC = number of color components in map (primary + secondary)
+ * BB = first back color's map index (colors should be contiguous)
+ * FF = first front color's map index
*
- * 0x1298 --> "MOV rcol.x, fcol.y" "MOV depr, fcol.y" = 0x00000005
- * "MOV rcol.x, fcol.y" = 0x00000004
- * 0x19a8 --> as above but 0x00000100 and 0x00000000
- * - 0x00100000 used when KIL used
- * 0x196c --> as above but 0x00000011 and 0x00000000
+ * 1908 = 0x0000HHLL
+ * LL = first clipping distance map index (4 if no UCPs)
+ * HH = last clipping distance map index + 1 (0 if no UCPs)
*
- * 0x1988 --> 0xXXNNNNNN
- * - XX == FP high something
+ * 1910 = 0x00000SSe
+ * e = enable point size output (0 / 1)
+ * SS = point size map index (0 if disabled)
+ *
+ * 1988 = 0xMMIInnii
+ * MM = bitmask to un-mask masked VP/GP outputs (i.e. HPOS, generic ?)
+ * nn = map index of first non-masked output, where to put front color
+ * II = count of non-masked interpolants
+ * ii = almost always equal to II (except if II -> 00, why ?)
*/
struct nv50_reg {
enum {
@@ -2705,31 +2720,6 @@ program_del_linkage(struct nv50_linkage *ln)
FREE(ln);
}
-/*
- * 1510 = bitmask to enable clipping planes
- * 1688 = two-sided lighting enable
- * 16ac = entry count of mapping table at [16bc]
- * 16b0 = count of temporaries used in VP
- *
- * 1904 = 0x01CCBBFF (01 is sometimes 00 - ?)
- * CC = number of color components in map (primary + secondary)
- * BB = first back color's map index (colors should be contiguous)
- * FF = first front color's map index
- *
- * 1908 = 0x0000HHLL
- * LL = first clipping distance map index (4 if no UCPs)
- * HH = last clipping distance map index + 1 (0 if no UCPs)
- *
- * 1910 = 0x00000SSe
- * e = enable point size output (0 / 1)
- * SS = point size map index (0 if disabled)
- *
- * 1988 = 0xMMIInnii
- * MM = bitmask to un-mask masked VP/GP outputs (i.e. HPOS, generic ?)
- * nn = map index of first non-masked output, where to put front color
- * II = count of non-masked interpolants
- * ii = almost always equal to II (except if II -> 00, why ?)
- */
static struct nv50_linkage *
nv50_linkage_create(struct nv50_context *nv50)
{
--
1.6.0.6
--------------090503050107050804030002--
More information about the Nouveau
mailing list