Skip to content

Commit 1b28cd5

Browse files
author
Marcin Kościelnicki
committed
rnndb/nv3: Nailed down a few D3D things.
1 parent 8ca1f32 commit 1b28cd5

File tree

3 files changed

+77
-51
lines changed

3 files changed

+77
-51
lines changed

rnndb/fifo/nv_object.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
174174
<!-- old-style pre-nv20 3D objects -->
175175
<value value="0x005a" name="NV3_SURFACE_COLOR" variants="NV3:G80"/>
176176
<value value="0x005b" name="NV3_SURFACE_ZETA" variants="NV3:G80"/>
177-
<value value="0x0048" name="NV3_TEXTURED_TRIANGLE" variants="NV3:NV15"/>
177+
<value value="0x0047" name="NV3_ZPOINT" variants="NV3:NV4"/> <!-- not actual hw class id -->
178+
<value value="0x0048" name="NV3_D3D" variants="NV3:NV15"/>
178179

179180
<value value="0x0054" name="NV4_TEXTURED_TRIANGLE" variants="NV4:NV20"/>
180181
<value value="0x0094" name="NV10_TEXTURED_TRIANGLE" variants="NV10:NV20"/>

rnndb/graph/nv3_3d.xml

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,46 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
3131
<value value="8" name="ALWAYS"/>
3232
</enum>
3333

34+
<enum name="nv3_write_enable" inline="yes">
35+
<value value="0" name="NEVER"/>
36+
<value value="1" name="ALPHA"/>
37+
<value value="2" name="ALPHA_AND_Z_TEST"/>
38+
<value value="3" name="Z_TEST"/>
39+
<value value="4" name="ALWAYS"/>
40+
</enum>
41+
3442
<domain name="SUBCHAN" bare="yes">
35-
<stripe prefix="obj-class" variants="NV3_TEXTURED_TRIANGLE">
43+
<stripe prefix="obj-class" variants="NV3_ZPOINT">
44+
<reg32 offset="0x0304" name="CONFIG">
45+
<bitfield low="16" high="19" name="Z_FUNC" type="nv3_comparison_op"/>
46+
<bitfield low="20" high="22" name="ZETA_WRITE_ENABLE" type="nv3_write_enable"/>
47+
<bitfield low="24" high="26" name="COLOR_WRITE_ENABLE" type="nv3_write_enable"/>
48+
<bitfield pos="28" name="ROP">
49+
<value value="0" name="BLEND"/>
50+
<value value="1" name="ADD"/>
51+
</bitfield>
52+
<bitfield pos="29" name="BETA">
53+
<value value="0" name="SRCALPHA"/>
54+
<value value="1" name="DSTCOLOR"/>
55+
</bitfield>
56+
<bitfield pos="30" name="DST_BLEND">
57+
<value value="0" name="INVBETA"/>
58+
<value value="1" name="ZERO"/>
59+
</bitfield>
60+
<bitfield pos="31" name="SRC_BLEND">
61+
<value value="0" name="BETA"/>
62+
<value value="1" name="ZERO"/>
63+
</bitfield>
64+
</reg32>
65+
<reg32 offset="0x0308" name="ALPHA">
66+
<bitfield low="0" high="7" name="ALPHA_REF"/>
67+
<bitfield low="8" high="11" name="ALPHA_FUNC" type="nv3_comparison_op"/>
68+
</reg32>
69+
<reg32 offset="0x07fc" name="POINT" type="xy16"/>
70+
<reg32 offset="0x0800" length="0x100" stride="8" name="COLOR"/>
71+
<reg32 offset="0x0804" length="0x100" stride="8" name="ZETA"/>
72+
</stripe>
73+
<stripe prefix="obj-class" variants="NV3_D3D">
3674
<reg32 offset="0x010c" name="PATCH"/>
3775
<reg32 offset="0x0180" name="DMA_NOTIFY" type="object"/>
3876
<reg32 offset="0x0184" name="DMA_TEXTURE" type="object"/>
@@ -63,7 +101,7 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
63101
<bitfield name="G" high="15" low="8" type="int"/>
64102
<bitfield name="R" high="23" low="16" type="int"/>
65103
</reg32>
66-
<reg32 offset="0x0314" name="CONTROL_OUT">
104+
<reg32 offset="0x0314" name="CONFIG">
67105
<bitfield name="INTERPOLATOR" high="3" low="0">
68106
<value value="0" name="ZOH_CORNER"/>
69107
<value value="0" name="ZOH_CENTER"/>
@@ -83,29 +121,29 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
83121
<value value="0x3" name="CW"/>
84122
</bitfield>
85123
<bitfield name="Z_PERSPECTIVE_ENABLE" pos="15" type="boolean"/>
86-
<bitfield name="Z_FUNC" high="19" low="16" type="nv3_comparison_op"/>
87-
<bitfield name="Z_WRITE_ENABLE" pos="20" type="boolean"/>
88-
<bitfield name="COLOR_WRITE_ENABLE" pos="24" type="boolean"/>
89-
<bitfield name="ROP" high="28" low="27">
124+
<bitfield low="16" high="19" name="Z_FUNC" type="nv3_comparison_op"/>
125+
<bitfield low="20" high="22" name="ZETA_WRITE_ENABLE" type="nv3_write_enable"/>
126+
<bitfield low="24" high="26" name="COLOR_WRITE_ENABLE" type="nv3_write_enable"/>
127+
<bitfield pos="28" name="ROP">
90128
<value value="0" name="BLEND"/>
91129
<value value="1" name="ADD"/>
92130
</bitfield>
93-
<bitfield name="BETA" pos="29">
131+
<bitfield pos="29" name="BETA">
94132
<value value="0" name="SRCALPHA"/>
95133
<value value="1" name="DSTCOLOR"/>
96134
</bitfield>
97-
<bitfield name="DST_BLEND" pos="30">
135+
<bitfield pos="30" name="DST_BLEND">
98136
<value value="0" name="INVBETA"/>
99137
<value value="1" name="ZERO"/>
100138
</bitfield>
101-
<bitfield name="SRC_BLEND" pos="31">
139+
<bitfield pos="31" name="SRC_BLEND">
102140
<value value="0" name="BETA"/>
103141
<value value="1" name="ZERO"/>
104142
</bitfield>
105143
</reg32>
106-
<reg32 offset="0x0318" name="ALPHA_CONTROL">
107-
<bitfield name="ALPHA_REF" high="7" low="0" type="int"/>
108-
<bitfield name="ALPHA_FUNC" high="31" low="8" type="nv3_comparison_op"/>
144+
<reg32 offset="0x0318" name="ALPHA">
145+
<bitfield low="0" high="7" name="ALPHA_REF"/>
146+
<bitfield low="8" high="11" name="ALPHA_FUNC" type="nv3_comparison_op"/>
109147
</reg32>
110148
<reg32 offset="0x1000" name="TLVERTEX_SPECULAR" length="128" stride="32">
111149
<bitfield name="I0" high="3" low="0" type="int"/>

rnndb/graph/nv3_pgraph.xml

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353
-->
5454
<bitfield pos="9" name="CLUT_BYPASS"/>
5555
<bitfield pos="10" name="UNK10"/>
56-
<bitfield pos="12" name="UNK12"/>
56+
<!-- For D3D and ZPOINT. If enabled, ZETA is always surface 3. -->
57+
<bitfield pos="12" name="ZETA_ENABLE"/>
5758
<bitfield pos="13" name="CHROMA"/>
5859
<!-- does not actually work -->
5960
<bitfield pos="14" name="PLANE"/>
@@ -150,7 +151,7 @@
150151
<bitfield pos="16" name="UNK16"/>
151152
<bitfield pos="17" name="UNK17"/>
152153
<bitfield pos="20" name="UNK20"/>
153-
<bitfield pos="21" name="UNK21"/>
154+
<bitfield pos="21" name="D3D_UNK21"/> <!-- setting tends to hang things -->
154155
<bitfield pos="24" name="UNK24"/>
155156
<!-- if set, obj switch will trigger a volatile reset -->
156157
<bitfield pos="28" name="VOLATILE_RESET_ENABLE"/>
@@ -166,9 +167,9 @@
166167
<bitfield pos="12" name="UNK12"/>
167168
<bitfield pos="13" name="UNK13"/>
168169
<bitfield pos="14" name="UNK14"/>
169-
<bitfield pos="15" name="UNK15"/>
170-
<bitfield pos="16" name="UNK16"/>
171-
<bitfield pos="17" name="UNK17"/>
170+
<bitfield pos="15" name="D3D_DITHER_ENABLE"/>
171+
<bitfield pos="16" name="D3D_UNK16"/>
172+
<bitfield pos="17" name="D3D_UNK17"/> <!-- setting tends to hang things -->
172173
<bitfield pos="20" name="DATA_CHECK_ENABLE"/>
173174
<bitfield pos="21" name="DATA_CHECK_FORCE_FAIL"/>
174175
<bitfield pos="22" name="FORMAT_CHECK_ENABLE"/>
@@ -356,6 +357,7 @@
356357
<reg32 offset="0x0548" name="UCLIP_YMAX"/>
357358
<reg32 offset="0x054c" name="MISC32_1">
358359
<!-- SIFM: POINT -->
360+
<!-- ZPOINT: ZETA -->
359361
<!-- D3D: TEX_FILTER -->
360362
<!-- BITMAP: MONO_COLOR_1 -->
361363
</reg32>
@@ -429,31 +431,25 @@
429431
<value value="3" name="UNK3"/>
430432
</bitfield>
431433
<bitfield pos="15" name="UNK15"/>
432-
<bitfield low="16" high="19" name="UNK16">
433-
<value value="1" name="UNK1"/>
434-
<value value="2" name="UNK2"/>
435-
<value value="3" name="UNK3"/>
436-
<value value="4" name="UNK4"/>
437-
<value value="5" name="UNK5"/>
438-
<value value="6" name="UNK6"/>
439-
<value value="7" name="UNK7"/>
440-
<value value="8" name="UNK8"/>
434+
<bitfield low="16" high="19" name="Z_FUNC" type="nv3_comparison_op"/>
435+
<bitfield low="20" high="22" name="ZETA_WRITE_ENABLE" type="nv3_write_enable"/>
436+
<bitfield low="24" high="26" name="COLOR_WRITE_ENABLE" type="nv3_write_enable"/>
437+
<bitfield pos="28" name="ROP">
438+
<value value="0" name="BLEND"/>
439+
<value value="1" name="ADD"/>
441440
</bitfield>
442-
<bitfield low="20" high="22" name="UNK20">
443-
<value value="0" name="UNK0"/>
444-
<value value="1" name="UNK1"/>
445-
<value value="2" name="UNK2"/>
446-
<value value="3" name="UNK3"/>
447-
<value value="4" name="UNK4"/>
441+
<bitfield pos="29" name="BETA">
442+
<value value="0" name="SRCALPHA"/>
443+
<value value="1" name="DSTCOLOR"/>
448444
</bitfield>
449-
<bitfield low="24" high="26" name="UNK24">
450-
<value value="0" name="UNK0"/>
451-
<value value="1" name="UNK1"/>
452-
<value value="2" name="UNK2"/>
453-
<value value="3" name="UNK3"/>
454-
<value value="4" name="UNK4"/>
445+
<bitfield pos="30" name="DST_BLEND">
446+
<value value="0" name="INVBETA"/>
447+
<value value="1" name="ZERO"/>
448+
</bitfield>
449+
<bitfield pos="31" name="SRC_BLEND">
450+
<value value="0" name="BETA"/>
451+
<value value="1" name="ZERO"/>
455452
</bitfield>
456-
<bitfield low="28" high="31" name="UNK28"/>
457453
</reg32>
458454
<!-- 648, 64c -->
459455
<reg32 offset="0x0650" name="SURF_PITCH" length="4"/> <!-- 00001ff0 -->
@@ -506,17 +502,8 @@
506502
<reg32 offset="0x06bc" name="TRAPPED_GINST"/>
507503
<!-- 6c0-6c4 -->
508504
<reg32 offset="0x06c8" name="D3D_ALPHA">
509-
<bitfield low="0" high="7" name="UNK0"/>
510-
<bitfield low="8" high="11" name="UNK8">
511-
<value value="1" name="UNK1"/>
512-
<value value="2" name="UNK2"/>
513-
<value value="3" name="UNK3"/>
514-
<value value="4" name="UNK4"/>
515-
<value value="5" name="UNK5"/>
516-
<value value="6" name="UNK6"/>
517-
<value value="7" name="UNK7"/>
518-
<value value="8" name="UNK8"/>
519-
</bitfield>
505+
<bitfield low="0" high="7" name="ALPHA_REF"/>
506+
<bitfield low="8" high="11" name="ALPHA_FUNC" type="nv3_comparison_op"/>
520507
</reg32>
521508
<bitset name="NV3_PGRAPH_DMA_INTR">
522509
<bitfield pos="0" name="UNK0"/>

0 commit comments

Comments
 (0)