diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-05-15 21:34:13 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-07-05 14:10:35 +1000 |
commit | 8c1c5d4f212958559132506d51dcfeeb17f60371 (patch) | |
tree | b4e414f971a515ead8b39d01568458f77ac1148c | |
parent | 779b8d44b5ff84b87b52600a2f010ac19cd396ad (diff) |
nvf0: implement EXA and XVideo acceleration
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | src/nvc0_accel.c | 33 | ||||
-rw-r--r-- | src/shader/Makefile | 15 | ||||
-rw-r--r-- | src/shader/exac8nvf0.fp | 42 | ||||
-rw-r--r-- | src/shader/exac8nvf0.fpc | 28 | ||||
-rw-r--r-- | src/shader/exacanvf0.fp | 43 | ||||
-rw-r--r-- | src/shader/exacanvf0.fpc | 30 | ||||
-rw-r--r-- | src/shader/exacmnvf0.fp | 43 | ||||
-rw-r--r-- | src/shader/exacmnvf0.fpc | 30 | ||||
-rw-r--r-- | src/shader/exas8nvf0.fp | 38 | ||||
-rw-r--r-- | src/shader/exas8nvf0.fpc | 20 | ||||
-rw-r--r-- | src/shader/exasanvf0.fp | 43 | ||||
-rw-r--r-- | src/shader/exasanvf0.fpc | 30 | ||||
-rw-r--r-- | src/shader/exascnvf0.fp | 35 | ||||
-rw-r--r-- | src/shader/exascnvf0.fpc | 14 | ||||
-rw-r--r-- | src/shader/videonvf0.fp | 47 | ||||
-rw-r--r-- | src/shader/videonvf0.fpc | 38 | ||||
-rw-r--r-- | src/shader/xfrm2nvf0.vp | 82 | ||||
-rw-r--r-- | src/shader/xfrm2nvf0.vpc | 90 |
18 files changed, 696 insertions, 5 deletions
diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c index df6a6b8..0694402 100644 --- a/src/nvc0_accel.c +++ b/src/nvc0_accel.c @@ -45,2 +45,12 @@ +#include "shader/xfrm2nvf0.vp" +#include "shader/videonvf0.fp" + +#include "shader/exascnvf0.fp" +#include "shader/exacmnvf0.fp" +#include "shader/exacanvf0.fp" +#include "shader/exasanvf0.fp" +#include "shader/exas8nvf0.fp" +#include "shader/exac8nvf0.fp" + #define NVC0PushProgram(pNv,addr,code) do { \ @@ -138,6 +148,7 @@ NVAccelInitP2MF_NVE0(ScrnInfoPtr pScrn) struct nouveau_pushbuf *push = pNv->pushbuf; + uint32_t class = (pNv->dev->chipset < 0xf0) ? 0xa040 : 0xa140; int ret; - ret = nouveau_object_new(pNv->channel, 0x0000a040, 0xa040, - NULL, 0, &pNv->NvMemFormat); + ret = nouveau_object_new(pNv->channel, class, class, NULL, 0, + &pNv->NvMemFormat); if (ret) @@ -226,5 +237,9 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn) handle = 0x001f906e; - } else { + } else + if (pNv->dev->chipset < 0xf0) { class = 0xa097; handle = 0x0000906e; + } else { + class = 0xa197; + handle = 0x0000906e; } @@ -327,3 +342,4 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn) PUSH_DATA (push, 0x1111); - } else { + } else + if (pNv->dev->chipset < 0xf0) { NVC0PushProgram(pNv, PVP_PASS, NVE0VP_Transform2); @@ -336,2 +352,11 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn) NVC0PushProgram(pNv, PFP_NV12, NVE0FP_NV12); + } else { + NVC0PushProgram(pNv, PVP_PASS, NVF0VP_Transform2); + NVC0PushProgram(pNv, PFP_S, NVF0FP_Source); + NVC0PushProgram(pNv, PFP_C, NVF0FP_Composite); + NVC0PushProgram(pNv, PFP_CCA, NVF0FP_CAComposite); + NVC0PushProgram(pNv, PFP_CCASA, NVF0FP_CACompositeSrcAlpha); + NVC0PushProgram(pNv, PFP_S_A8, NVF0FP_Source_A8); + NVC0PushProgram(pNv, PFP_C_A8, NVF0FP_Composite_A8); + NVC0PushProgram(pNv, PFP_NV12, NVF0FP_NV12); } diff --git a/src/shader/Makefile b/src/shader/Makefile index 59e549f..46658e9 100644 --- a/src/shader/Makefile +++ b/src/shader/Makefile @@ -16,4 +16,12 @@ NVE0_SHADERS = xfrm2nve0.vpc \ videonve0.fpc +NVF0_SHADERS = xfrm2nvf0.vpc \ + exascnvf0.fpc \ + exacmnvf0.fpc \ + exacanvf0.fpc \ + exasanvf0.fpc \ + exas8nvf0.fpc \ + exac8nvf0.fpc \ + videonvf0.fpc -SHADERS = $(NVC0_SHADERS) $(NVE0_SHADERS) +SHADERS = $(NVC0_SHADERS) $(NVE0_SHADERS) $(NVF0_SHADERS) @@ -30 +38,6 @@ $(filter %nve0.fpc,$(SHADERS)): %.fpc: %.fp cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m nvc0 -V nve4 -o $@ + +$(filter %nvf0.vpc,$(SHADERS)): %.vpc: %.vp + cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m gk110 -o $@ +$(filter %nvf0.fpc,$(SHADERS)): %.fpc: %.fp + cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m gk110 -o $@ diff --git a/src/shader/exac8nvf0.fp b/src/shader/exac8nvf0.fp new file mode 100644 index 0000000..e4a7b04 --- /dev/null +++ b/src/shader/exac8nvf0.fp @@ -0,0 +1,42 @@ +#ifndef ENVYAS +static uint32_t +NVF0FP_Composite_A8[] = { + 0x00001462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x00000a0a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "exac8nvf0.fpc" +}; +#else + +interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 0x0 +tex t lauto #:#:#:$r1 t2d c[0x4] xy__ $r2:$r3 0x0 +interp mul f32 $r3 a[0x84] $r0 0x0 0x0 +interp mul f32 $r2 a[0x80] $r0 0x0 0x0 +tex t lauto #:#:#:$r0 t2d c[0x0] xy__ $r2:$r3 0x0 +texbar 0x0 +mul ftz rn f32 $r3 $r0 $r1 +mov b32 $r2 $r3 +mov b32 $r1 $r3 +mov b32 $r0 $r3 +exit +#endif diff --git a/src/shader/exac8nvf0.fpc b/src/shader/exac8nvf0.fpc new file mode 100644 index 0000000..465cabf --- /dev/null +++ b/src/shader/exac8nvf0.fpc @@ -0,0 +1,28 @@ +0x7f9ffc02, +0x7483fc3e, +0x021c0002, +0x84000000, +0x001ffc0e, +0x74a3fc4a, +0x001ffc0a, +0x74a3fc48, +0x7f9c0805, +0x600080a1, +0x001ffc0e, +0x74a3fc42, +0x001ffc0a, +0x74a3fc40, +0x7f9c0801, +0x600000a1, +0x001c0002, +0x77000000, +0x009c000e, +0xe3408000, +0x019c000a, +0xe4c03c00, +0x019c0006, +0xe4c03c00, +0x019c0002, +0xe4c03c00, +0x001c003c, +0x18000000, diff --git a/src/shader/exacanvf0.fp b/src/shader/exacanvf0.fp new file mode 100644 index 0000000..338a1e1 --- /dev/null +++ b/src/shader/exacanvf0.fp @@ -0,0 +1,43 @@ +#ifndef ENVYAS +static uint32_t +NVF0FP_CAComposite[] = { + 0x00001462, /* 0x0000c000 = USES_KIL, MULTI_COLORS */ + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, /* FRAG_COORD_UMASK = 0x8 */ + 0x00000a0a, /* FP_INTERP[0x080], 0022 0022 */ + 0x00000000, /* FP_INTERP[0x0c0], 0 = OFF */ + 0x00000000, /* FP_INTERP[0x100], 1 = FLAT */ + 0x00000000, /* FP_INTERP[0x140], 2 = PERSPECTIVE */ + 0x00000000, /* FP_INTERP[0x180], 3 = LINEAR */ + 0x00000000, /* FP_INTERP[0x1c0] */ + 0x00000000, /* FP_INTERP[0x200] */ + 0x00000000, /* FP_INTERP[0x240] */ + 0x00000000, /* FP_INTERP[0x280] */ + 0x00000000, /* FP_INTERP[0x2c0] */ + 0x00000000, /* FP_INTERP[0x300] */ + 0x00000000, + 0x0000000f, /* FP_RESULT_MASK (0x8000 Face ?) */ + 0x00000000, /* 0x2 = FragDepth, 0x1 = SampleMask */ +#include "exacanvf0.fpc" +}; +#else + +interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 0x0 +tex t lauto $r4:$r5:$r6:$r7 t2d c[0x4] xy__ $r2:$r3 0x0 +texbar 0x0 +interp mul f32 $r1 a[0x84] $r0 0x0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 0x0 +tex t lauto $r0:$r1:$r2:$r3 t2d c[0x0] xy__ $r0:$r1 0x0 +texbar 0x0 +mul ftz rn f32 $r3 $r3 $r7 +mul ftz rn f32 $r2 $r2 $r6 +mul ftz rn f32 $r1 $r1 $r5 +mul ftz rn f32 $r0 $r0 $r4 +exit +#endif diff --git a/src/shader/exacanvf0.fpc b/src/shader/exacanvf0.fpc new file mode 100644 index 0000000..70dd4b1 --- /dev/null +++ b/src/shader/exacanvf0.fpc @@ -0,0 +1,30 @@ +0x7f9ffc02, +0x7483fc3e, +0x021c0002, +0x84000000, +0x001ffc0e, +0x74a3fc4a, +0x001ffc0a, +0x74a3fc48, +0x7f9c0811, +0x600080bd, +0x001c0002, +0x77000000, +0x001ffc06, +0x74a3fc42, +0x001ffc02, +0x74a3fc40, +0x7f9c0001, +0x600000bd, +0x001c0002, +0x77000000, +0x039c0c0e, +0xe3408000, +0x031c080a, +0xe3408000, +0x029c0406, +0xe3408000, +0x021c0002, +0xe3408000, +0x001c003c, +0x18000000, diff --git a/src/shader/exacmnvf0.fp b/src/shader/exacmnvf0.fp new file mode 100644 index 0000000..787b4f5 --- /dev/null +++ b/src/shader/exacmnvf0.fp @@ -0,0 +1,43 @@ +#ifndef ENVYAS +static uint32_t +NVF0FP_Composite[] = { + 0x00001462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x00000a0a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "exacmnvf0.fpc" +}; +#else + +interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 0x0 +tex t lauto #:#:#:$r4 t2d c[0x4] xy__ $r2:$r3 0x0 +texbar 0x0 +interp mul f32 $r1 a[0x84] $r0 0x0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 0x0 +tex t lauto $r0:$r1:$r2:$r3 t2d c[0x0] xy__ $r0:$r1 0x0 +texbar 0x0 +mul ftz rn f32 $r3 $r3 $r4 +mul ftz rn f32 $r2 $r2 $r4 +mul ftz rn f32 $r1 $r1 $r4 +mul ftz rn f32 $r0 $r0 $r4 +exit +#endif diff --git a/src/shader/exacmnvf0.fpc b/src/shader/exacmnvf0.fpc new file mode 100644 index 0000000..b2acf6f --- /dev/null +++ b/src/shader/exacmnvf0.fpc @@ -0,0 +1,30 @@ +0x7f9ffc02, +0x7483fc3e, +0x021c0002, +0x84000000, +0x001ffc0e, +0x74a3fc4a, +0x001ffc0a, +0x74a3fc48, +0x7f9c0811, +0x600080a1, +0x001c0002, +0x77000000, +0x001ffc06, +0x74a3fc42, +0x001ffc02, +0x74a3fc40, +0x7f9c0001, +0x600000bd, +0x001c0002, +0x77000000, +0x021c0c0e, +0xe3408000, +0x021c080a, +0xe3408000, +0x021c0406, +0xe3408000, +0x021c0002, +0xe3408000, +0x001c003c, +0x18000000, diff --git a/src/shader/exas8nvf0.fp b/src/shader/exas8nvf0.fp new file mode 100644 index 0000000..3804b27 --- /dev/null +++ b/src/shader/exas8nvf0.fp @@ -0,0 +1,38 @@ +#ifndef ENVYAS +static uint32_t +NVF0FP_Source_A8[] = { + 0x00001462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x0000000a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "exas8nvf0.fpc" +}; +#else + +interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r1 a[0x84] $r0 0x0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 0x0 +tex t lauto #:#:#:$r0 t2d c[0x0] xy__ $r0:$r1 0x0 +texbar 0x0 +mov b32 $r3 $r0 +mov b32 $r2 $r0 +mov b32 $r1 $r0 +exit +#endif diff --git a/src/shader/exas8nvf0.fpc b/src/shader/exas8nvf0.fpc new file mode 100644 index 0000000..4ec3bb7 --- /dev/null +++ b/src/shader/exas8nvf0.fpc @@ -0,0 +1,20 @@ +0x7f9ffc02, +0x7483fc3e, +0x021c0002, +0x84000000, +0x001ffc06, +0x74a3fc42, +0x001ffc02, +0x74a3fc40, +0x7f9c0001, +0x600000a1, +0x001c0002, +0x77000000, +0x001c000e, +0xe4c03c00, +0x001c000a, +0xe4c03c00, +0x001c0006, +0xe4c03c00, +0x001c003c, +0x18000000, diff --git a/src/shader/exasanvf0.fp b/src/shader/exasanvf0.fp new file mode 100644 index 0000000..8175f9b --- /dev/null +++ b/src/shader/exasanvf0.fp @@ -0,0 +1,43 @@ +#ifndef ENVYAS +static uint32_t +NVF0FP_CACompositeSrcAlpha[] = { + 0x00001462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x00000a0a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "exasanvf0.fpc" +}; +#else + +interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x84] $r0 0x0 0x0 +interp mul f32 $r2 a[0x80] $r0 0x0 0x0 +tex t lauto #:#:#:$r4 t2d c[0x0] xy__ $r2:$r3 0x0 +texbar 0x0 +interp mul f32 $r1 a[0x94] $r0 0x0 0x0 +interp mul f32 $r0 a[0x90] $r0 0x0 0x0 +tex t lauto $r0:$r1:$r2:$r3 t2d c[0x4] xy__ $r0:$r1 0x0 +texbar 0x0 +mul ftz rn f32 $r3 $r3 $r4 +mul ftz rn f32 $r2 $r2 $r4 +mul ftz rn f32 $r1 $r1 $r4 +mul ftz rn f32 $r0 $r0 $r4 +exit +#endif diff --git a/src/shader/exasanvf0.fpc b/src/shader/exasanvf0.fpc new file mode 100644 index 0000000..6e68d98 --- /dev/null +++ b/src/shader/exasanvf0.fpc @@ -0,0 +1,30 @@ +0x7f9ffc02, +0x7483fc3e, +0x021c0002, +0x84000000, +0x001ffc0e, +0x74a3fc42, +0x001ffc0a, +0x74a3fc40, +0x7f9c0811, +0x600000a1, +0x001c0002, +0x77000000, +0x001ffc06, +0x74a3fc4a, +0x001ffc02, +0x74a3fc48, +0x7f9c0001, +0x600080bd, +0x001c0002, +0x77000000, +0x021c0c0e, +0xe3408000, +0x021c080a, +0xe3408000, +0x021c0406, +0xe3408000, +0x021c0002, +0xe3408000, +0x001c003c, +0x18000000, diff --git a/src/shader/exascnvf0.fp b/src/shader/exascnvf0.fp new file mode 100644 index 0000000..e56c27f --- /dev/null +++ b/src/shader/exascnvf0.fp @@ -0,0 +1,35 @@ +#ifndef ENVYAS +static uint32_t +NVF0FP_Source[] = { + 0x00001462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x0000000a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "exascnvf0.fpc" +}; +#else + +interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r1 a[0x84] $r0 0x0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 0x0 +tex t lauto $r0:$r1:$r2:$r3 t2d c[0x0] xy__ $r0:$r1 0x0 +texbar 0x0 +exit +#endif diff --git a/src/shader/exascnvf0.fpc b/src/shader/exascnvf0.fpc new file mode 100644 index 0000000..53af859 --- /dev/null +++ b/src/shader/exascnvf0.fpc @@ -0,0 +1,14 @@ +0x7f9ffc02, +0x7483fc3e, +0x021c0002, +0x84000000, +0x001ffc06, +0x74a3fc42, +0x001ffc02, +0x74a3fc40, +0x7f9c0001, +0x600000bd, +0x001c0002, +0x77000000, +0x001c003c, +0x18000000, diff --git a/src/shader/videonvf0.fp b/src/shader/videonvf0.fp new file mode 100644 index 0000000..a684203 --- /dev/null +++ b/src/shader/videonvf0.fp @@ -0,0 +1,47 @@ +#ifndef ENVYAS +static uint32_t +NVF0FP_NV12[] = { + 0x00001462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x0000000a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "videonvf0.fpc" +}; +#else + +interp pass f32 $r2 a[0x7c] 0x0 0x0 0x0 +rcp f32 $r2 $r2 +interp mul f32 $r0 a[0x80] $r2 0x0 0x0 +interp mul f32 $r1 a[0x84] $r2 0x0 0x0 +tex t lauto #:#:#:$r4 t2d c[0x0] xy__ $r0:$r1 0x0 +tex p lauto #:#:$r0:$r1 t2d c[0x4] xy__ $r0:$r1 0x0 +texbar 0x1 +mul ftz rn f32 $r5 $r4 c0[0x0] +add ftz rn f32 $r3 $r5 c0[0x4] +add ftz rn f32 $r4 $r5 c0[0x8] +add ftz rn f32 $r5 $r5 c0[0xc] +texbar 0x0 +fma ftz rn f32 $r3 $r0 c0[0x10] $r3 +fma ftz rn f32 $r4 $r0 c0[0x14] $r4 +fma ftz rn f32 $r5 $r0 c0[0x18] $r5 +fma ftz rn f32 $r0 $r1 c0[0x1c] $r3 +fma ftz rn f32 $r2 $r1 c0[0x24] $r5 +fma ftz rn f32 $r1 $r1 c0[0x20] $r4 +exit +#endif diff --git a/src/shader/videonvf0.fpc b/src/shader/videonvf0.fpc new file mode 100644 index 0000000..c545967 --- /dev/null +++ b/src/shader/videonvf0.fpc @@ -0,0 +1,38 @@ +0x7f9ffc0a, +0x7483fc3e, +0x021c080a, +0x84000000, +0x011ffc02, +0x74a3fc40, +0x011ffc06, +0x74a3fc42, +0x7f9c0011, +0x600000a1, +0x7f9c0001, +0x600080b2, +0x009c0002, +0x77000000, +0x001c1016, +0x63408000, +0x009c140e, +0x62c08000, +0x011c1412, +0x62c08000, +0x019c1416, +0x62c08000, +0x001c0002, +0x77000000, +0x021c000e, +0x4d000c00, +0x029c0012, +0x4d001000, +0x031c0016, +0x4d001400, +0x039c0402, +0x4d000c00, +0x049c040a, +0x4d001400, +0x041c0406, +0x4d001000, +0x001c003c, +0x18000000, diff --git a/src/shader/xfrm2nvf0.vp b/src/shader/xfrm2nvf0.vp new file mode 100644 index 0000000..ba0660f --- /dev/null +++ b/src/shader/xfrm2nvf0.vp @@ -0,0 +1,82 @@ +#ifndef ENVYAS +static uint32_t +NVF0VP_Transform2[] = { + 0x02000461, + 0x00000000, + 0x00000000, + 0x00000000, + 0x000ff000, + 0x00000000, /* VP_ATTR_EN[0x000] */ + 0x0001033f, /* VP_ATTR_EN[0x080] */ + 0x00000000, /* VP_ATTR_EN[0x100] */ + 0x00000000, + 0x00000000, /* VP_ATTR_EN[0x200] */ + 0x00000000, + 0x00000000, /* VP_ATTR_EN[0x300] */ + 0x00000000, + 0x0033f000, /* VP_EXPORT_EN[0x040] */ + 0x00000000, /* VP_EXPORT_EN[0x0c0] */ + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, /* VP_EXPORT_EN[0x2c0] */ + 0x00000000, +#include "xfrm2nvf0.vpc" +}; +#else + +//ld b128 $r0:$r1:$r2:$r3 a[0x80] 0x0 unk39 +ld b32 $r0 a[0x80] 0x0 0x0 +ld b32 $r1 a[0x84] 0x0 0x0 +ld b32 $r2 a[0x88] 0x0 0x0 +ld b32 $r3 a[0x8c] 0x0 0x0 +//st b128 a[0x70] $r0:$r1:$r2:$r3 0x0 unk39 +st b32 a[0x70] $r0 0x0 0x0 +st b32 a[0x74] $r1 0x0 0x0 +st b32 a[0x78] $r2 0x0 0x0 +st b32 a[0x7c] $r3 0x0 0x0 + +//ld b64 $r0:$r1 a[0x90] 0x0 unk39 +ld b32 $r0 a[0x90] 0x0 0x0 +ld b32 $r1 a[0x94] 0x0 0x0 +mul ftz rn f32 $r2 $r0 c0[0x0] +mul ftz rn f32 $r3 $r0 c0[0xc] +mul ftz rn f32 $r4 $r0 c0[0x18] +fma ftz rn f32 $r2 $r1 c0[0x4] $r2 +fma ftz rn f32 $r3 $r1 c0[0x10] $r3 +fma ftz rn f32 $r4 $r1 c0[0x1c] $r4 +add ftz rn f32 $r2 $r2 c0[0x8] +add ftz rn f32 $r3 $r3 c0[0x14] +add ftz rn f32 $r4 $r4 c0[0x20] +rcp f32 $r4 $r4 +mul ftz rn f32 $r2 $r2 $r4 +mul ftz rn f32 $r3 $r3 $r4 +mul ftz rn f32 $r0 $r2 c0[0x24] +mul ftz rn f32 $r1 $r3 c0[0x28] +//st b64 a[0x80] $r0:$r1 0x0 unk39 +st b32 a[0x80] $r0 0x0 0x0 +st b32 a[0x84] $r1 0x0 0x0 + +//ld b64 $r0:$r1 a[0xa0] 0x0 unk39 +ld b32 $r0 a[0xa0] 0x0 0x0 +ld b32 $r1 a[0xa4] 0x0 0x0 +mul ftz rn f32 $r2 $r0 c0[0x2c] +mul ftz rn f32 $r3 $r0 c0[0x38] +mul ftz rn f32 $r4 $r0 c0[0x44] +fma ftz rn f32 $r2 $r1 c0[0x30] $r2 +fma ftz rn f32 $r3 $r1 c0[0x3c] $r3 +fma ftz rn f32 $r4 $r1 c0[0x48] $r4 +add ftz rn f32 $r2 $r2 c0[0x34] +add ftz rn f32 $r3 $r3 c0[0x40] +add ftz rn f32 $r4 $r4 c0[0x4c] +rcp f32 $r4 $r4 +mul ftz rn f32 $r2 $r2 $r4 +mul ftz rn f32 $r3 $r3 $r4 +mul ftz rn f32 $r0 $r2 c0[0x50] +mul ftz rn f32 $r1 $r3 c0[0x54] +//st b64 a[0x90] $r0:$r1 0x0 unk39 +st b32 a[0x90] $r0 0x0 0x0 +st b32 a[0x94] $r1 0x0 0x0 + +exit +#endif diff --git a/src/shader/xfrm2nvf0.vpc b/src/shader/xfrm2nvf0.vpc new file mode 100644 index 0000000..5faac1a --- /dev/null +++ b/src/shader/xfrm2nvf0.vpc @@ -0,0 +1,90 @@ +0x401ffc02, +0x7ec3fc00, +0x421ffc06, +0x7ec3fc00, +0x441ffc0a, +0x7ec3fc00, +0x461ffc0e, +0x7ec3fc00, +0x381ffc02, +0x7f03fc00, +0x3a1ffc06, +0x7f03fc00, +0x3c1ffc0a, +0x7f03fc00, +0x3e1ffc0e, +0x7f03fc00, +0x481ffc02, +0x7ec3fc00, +0x4a1ffc06, +0x7ec3fc00, +0x001c000a, +0x63408000, +0x019c000e, +0x63408000, +0x031c0012, +0x63408000, +0x009c040a, +0x4d000800, +0x021c040e, +0x4d000c00, +0x039c0412, +0x4d001000, +0x011c080a, +0x62c08000, +0x029c0c0e, +0x62c08000, +0x041c1012, +0x62c08000, +0x021c1012, +0x84000000, +0x021c080a, +0xe3408000, +0x021c0c0e, +0xe3408000, +0x049c0802, +0x63408000, +0x051c0c06, +0x63408000, +0x401ffc02, +0x7f03fc00, +0x421ffc06, +0x7f03fc00, +0x501ffc02, +0x7ec3fc00, +0x521ffc06, +0x7ec3fc00, +0x059c000a, +0x63408000, +0x071c000e, +0x63408000, +0x089c0012, +0x63408000, +0x061c040a, +0x4d000800, +0x079c040e, +0x4d000c00, +0x091c0412, +0x4d001000, +0x069c080a, +0x62c08000, +0x081c0c0e, +0x62c08000, +0x099c1012, +0x62c08000, +0x021c1012, +0x84000000, +0x021c080a, +0xe3408000, +0x021c0c0e, +0xe3408000, +0x0a1c0802, +0x63408000, +0x0a9c0c06, +0x63408000, +0x481ffc02, +0x7f03fc00, +0x4a1ffc06, +0x7f03fc00, +0x001c003c, +0x18000000, |