From: <dar...@ke...> - 2013-05-06 22:23:10
|
src/nouveau_xv.c | 4 ++-- src/nv_driver.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) New commits: commit 50426ac83f9f077791e4df8c04fc0ecefc06e8ab Author: Marek Vasut <ma...@de...> Date: Fri May 3 15:48:55 2013 +0200 nouveau: Allow 3D accelerators with output ports This patch let's cards with PCI class 0x30200 (3D controller) be operated by the nouveau driver as well. The nv Quadro NVS 450 is one such card, where the first GPU has PCI class 0x30000 and the other GPU has PCI class 0x30200. By ignoring the 1 << 9 bit in the PCI class mask, displays attached to the other GPU can also be used now. Signed-off-by: Marek Vasut <ma...@de...> Cc: Dave Airlie <ai...@re...> Cc: Ben Skeggs <sk...@gm...> Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/nv_driver.c b/src/nv_driver.c index 8088e37..ece5e91 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -60,7 +60,7 @@ static Bool NVUnmapMem(ScrnInfoPtr pScrn); #define NOUVEAU_PCI_DEVICE(_vendor_id, _device_id) \ { (_vendor_id), (_device_id), PCI_MATCH_ANY, PCI_MATCH_ANY, \ - 0x00030000, 0x00ffffff, 0 } + 0x00030000, 0x00ff0000, 0 } static const struct pci_id_match nouveau_device_match[] = { NOUVEAU_PCI_DEVICE(0x12d2, PCI_MATCH_ANY), commit 2fa3397e348161a3394e2b456f065921272a056a Author: Ilia Mirkin <im...@al...> Date: Fri May 3 09:59:39 2013 -0400 nouveau_xv: Avoid reading off the end of the source image on NV50+ The 'w' argument to NVCopyNV12ColorPlanes is used to index into the source image. line_len is rounded up to 8 on NV50+, so if the source image (+ left offset) is not rounded to 8, NVCopyNV12ColorPlanes could read past the end of the array and crash X. This change can cause the last few horizontal pixels of dst to not be initialized, but they should be truncated by the renderer anyways. See https://bugs.freedesktop.org/show_bug.cgi?id=63263 Signed-off-by: Ilia Mirkin <im...@al...> Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index f7dc2bc..8eafcf0 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -1095,7 +1095,7 @@ NVPutImage(ScrnInfoPtr pScrn, short src_x, short src_y, short drw_x, NVCopyNV12ColorPlanes(buf + s2offset, buf + s3offset, dst, line_len, srcPitch2, - nlines, line_len); + nlines, npixels); } } else { for (i = 0; i < nlines; i++) { @@ -1161,7 +1161,7 @@ CPU_copy: NVCopyNV12ColorPlanes(buf + s2offset, buf + s3offset, map, dstPitch, srcPitch2, - nlines, line_len); + nlines, npixels); } } else { /* YUY2 and RGB */ |
From: <dar...@ke...> - 2013-05-15 11:30:44
|
src/Makefile.am | 2 src/nvc0_accel.c | 28 ++ src/nvc0_shader.h | 444 ----------------------------------------------- src/nve0_shader.h | 440 ---------------------------------------------- src/shader/Makefile | 30 +++ src/shader/exac8nvc0.fp | 41 ++++ src/shader/exac8nvc0.fpc | 22 ++ src/shader/exac8nve0.fp | 42 ++++ src/shader/exac8nve0.fpc | 24 ++ src/shader/exacanvc0.fp | 41 ++++ src/shader/exacanvc0.fpc | 25 ++ src/shader/exacanve0.fp | 43 ++++ src/shader/exacanve0.fpc | 29 +++ src/shader/exacmnvc0.fp | 41 ++++ src/shader/exacmnvc0.fpc | 25 ++ src/shader/exacmnve0.fp | 43 ++++ src/shader/exacmnve0.fpc | 29 +++ src/shader/exas8nvc0.fp | 37 +++ src/shader/exas8nvc0.fpc | 14 + src/shader/exas8nve0.fp | 38 ++++ src/shader/exas8nve0.fpc | 16 + src/shader/exasanvc0.fp | 41 ++++ src/shader/exasanvc0.fpc | 25 ++ src/shader/exasanve0.fp | 43 ++++ src/shader/exasanve0.fpc | 29 +++ src/shader/exascnvc0.fp | 34 +++ src/shader/exascnvc0.fpc | 11 + src/shader/exascnve0.fp | 35 +++ src/shader/exascnve0.fpc | 13 + src/shader/videonvc0.fp | 47 ++++ src/shader/videonvc0.fpc | 37 +++ src/shader/videonve0.fp | 50 +++++ src/shader/videonve0.fpc | 43 ++++ src/shader/xfrm2nvc0.vp | 63 ++++++ src/shader/xfrm2nvc0.vpc | 69 +++++++ src/shader/xfrm2nve0.vp | 63 ++++++ src/shader/xfrm2nve0.vpc | 69 +++++++ 37 files changed, 1238 insertions(+), 888 deletions(-) New commits: commit 41cc2f24c43d2656ac722f594aaebad93e37dfec Author: Ben Skeggs <bs...@re...> Date: Wed May 15 21:13:11 2013 +1000 nvc0-nve0: decompile shaders into their source, add basic build system Far, far easier to maintain this way... Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/shader/Makefile b/src/shader/Makefile new file mode 100644 index 0000000..59e549f --- /dev/null +++ b/src/shader/Makefile @@ -0,0 +1,30 @@ +NVC0_SHADERS = xfrm2nvc0.vpc \ + exascnvc0.fpc \ + exacmnvc0.fpc \ + exacanvc0.fpc \ + exasanvc0.fpc \ + exas8nvc0.fpc \ + exac8nvc0.fpc \ + videonvc0.fpc +NVE0_SHADERS = xfrm2nve0.vpc \ + exascnve0.fpc \ + exacmnve0.fpc \ + exacanve0.fpc \ + exasanve0.fpc \ + exas8nve0.fpc \ + exac8nve0.fpc \ + videonve0.fpc + +SHADERS = $(NVC0_SHADERS) $(NVE0_SHADERS) + +all: $(SHADERS) + +$(filter %nvc0.vpc,$(SHADERS)): %.vpc: %.vp + cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m nvc0 -o $@ +$(filter %nvc0.fpc,$(SHADERS)): %.fpc: %.fp + cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m nvc0 -o $@ + +$(filter %nve0.vpc,$(SHADERS)): %.vpc: %.vp + cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m nvc0 -V nve4 -o $@ +$(filter %nve0.fpc,$(SHADERS)): %.fpc: %.fp + cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m nvc0 -V nve4 -o $@ diff --git a/src/shader/exac8nvc0.fp b/src/shader/exac8nvc0.fp index c7db275..954b306 100644 --- a/src/shader/exac8nvc0.fp +++ b/src/shader/exac8nvc0.fp @@ -25,4 +25,17 @@ NVC0FP_Composite_A8[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 +tex t lauto live dfp #:#:#:$r1 t2d $t1 $s0 $r2:$r3 () +interp mul f32 $r3 a[0x84] $r0 0x0 +interp mul f32 $r2 a[0x80] $r0 0x0 +tex t lauto live dfp #:#:#:$r0 t2d $t0 $s0 $r2:$r3 () +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/exac8nvc0.fpc b/src/shader/exac8nvc0.fpc index 3afea72..fdcf650 100644 --- a/src/shader/exac8nvc0.fpc +++ b/src/shader/exac8nvc0.fpc @@ -1,26 +1,22 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc205e86, - 0x80120001, /* tex { _ _ _ $r1 } $t1 { $r2 $r3 } */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc201e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r2 $r3 } */ - 0x0400dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r0 $r1 */ - 0x0c009de4, - 0x28000000, /* mov b32 $r2 $r3 */ - 0x0c005de4, - 0x28000000, /* mov b32 $r1 $r3 */ - 0x0c001de4, - 0x28000000, /* mov b32 $r0 $r3 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0094, +0x03f09c40, +0xc07e0090, +0x00205e86, +0x80120001, +0x03f0dc40, +0xc07e0084, +0x03f09c40, +0xc07e0080, +0x00201e86, +0x80120000, +0x0400dc40, +0x58000000, +0x00309c28, +0x00305c28, +0x00301c28, +0x88001dff, diff --git a/src/shader/exac8nve0.fp b/src/shader/exac8nve0.fp index eeb2413..55cdde2 100644 --- a/src/shader/exac8nve0.fp +++ b/src/shader/exac8nve0.fp @@ -25,4 +25,18 @@ NVE0FP_Composite_A8[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 +tex t lauto live dfp #:#:#:$r1 t2d $t1 $s0 $r2:$r3 () +interp mul f32 $r3 a[0x84] $r0 0x0 +interp mul f32 $r2 a[0x80] $r0 0x0 +tex t lauto live dfp #:#:#:$r0 t2d $t0 $s0 $r2:$r3 () +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/exac8nve0.fpc b/src/shader/exac8nve0.fpc index 7d341d9..c7fc3bd 100644 --- a/src/shader/exac8nve0.fpc +++ b/src/shader/exac8nve0.fpc @@ -1,28 +1,24 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc205e86, - 0x80120001, /* tex { _ _ _ $r1 } $t1 { $r2 $r3 } */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc201e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r2 $r3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x0400dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r0 $r1 */ - 0x0c009de4, - 0x28000000, /* mov b32 $r2 $r3 */ - 0x0c005de4, - 0x28000000, /* mov b32 $r1 $r3 */ - 0x0c001de4, - 0x28000000, /* mov b32 $r0 $r3 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0094, +0x03f09c40, +0xc07e0090, +0x00205e86, +0x80120001, +0x03f0dc40, +0xc07e0084, +0x03f09c40, +0xc07e0080, +0x00201e86, +0x80120000, +0x00001de6, +0xf0000000, +0x0400dc40, +0x58000000, +0x00309c28, +0x00305c28, +0x00301c28, +0x88001dff, diff --git a/src/shader/exacanvc0.fp b/src/shader/exacanvc0.fp index 8254306..1a03ecc 100644 --- a/src/shader/exacanvc0.fp +++ b/src/shader/exacanvc0.fp @@ -25,4 +25,17 @@ NVC0FP_CAComposite[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 +tex t lauto live dfp $r4:$r5:$r6:$r7 t2d $t1 $s0 $r2:$r3 () +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t0 $s0 $r0:$r1 () +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/exacanvc0.fpc b/src/shader/exacanvc0.fpc index 2fef0d9..a5e4981 100644 --- a/src/shader/exacanvc0.fpc +++ b/src/shader/exacanvc0.fpc @@ -1,26 +1,25 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x8013c001, /* tex { $r4,5,6,7 } $t1 { $r2,3 } */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x1c30dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r7 */ - 0x18209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r6 */ - 0x14105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r5 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0094, +0x03f09c40, +0xc07e0090, +0x00211e86, +0x8013c001, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x8013c000, +0x1c30dc40, +0x58000000, +0x18209c40, +0x58000000, +0x14105c40, +0x58000000, +0x10001c40, +0x58000000, +0x88001dff, diff --git a/src/shader/exacanve0.fp b/src/shader/exacanve0.fp index c4f9afa..dc54771 100644 --- a/src/shader/exacanve0.fp +++ b/src/shader/exacanve0.fp @@ -25,4 +25,19 @@ NVE0FP_CAComposite[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 +tex t lauto live dfp $r4:$r5:$r6:$r7 t2d $t1 $s0 $r2:$r3 () +texbar 0x0 +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t0 $s0 $r0:$r1 () +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/exacanve0.fpc b/src/shader/exacanve0.fpc index 8a096b5..52a736d 100644 --- a/src/shader/exacanve0.fpc +++ b/src/shader/exacanve0.fpc @@ -1,30 +1,29 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x8013c001, /* tex { $r4,5,6,7 } $t1 { $r2,3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x1c30dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r7 */ - 0x18209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r6 */ - 0x14105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r5 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0094, +0x03f09c40, +0xc07e0090, +0x00211e86, +0x8013c001, +0x00001de6, +0xf0000000, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x8013c000, +0x00001de6, +0xf0000000, +0x1c30dc40, +0x58000000, +0x18209c40, +0x58000000, +0x14105c40, +0x58000000, +0x10001c40, +0x58000000, +0x88001dff, diff --git a/src/shader/exacmnvc0.fp b/src/shader/exacmnvc0.fp index a77980e..33cd79a 100644 --- a/src/shader/exacmnvc0.fp +++ b/src/shader/exacmnvc0.fp @@ -25,4 +25,17 @@ NVC0FP_Composite[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 +tex t lauto live dfp #:#:#:$r4 t2d $t1 $s0 $r2:$r3 () +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t0 $s0 $r0:$r1 () +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/exacmnvc0.fpc b/src/shader/exacmnvc0.fpc index 945c653..df46f69 100644 --- a/src/shader/exacmnvc0.fpc +++ b/src/shader/exacmnvc0.fpc @@ -1,26 +1,25 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x80120001, /* tex { _,_,_,$r4 } $t1 { $r2,3 } */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0094, +0x03f09c40, +0xc07e0090, +0x00211e86, +0x80120001, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x8013c000, +0x1030dc40, +0x58000000, +0x10209c40, +0x58000000, +0x10105c40, +0x58000000, +0x10001c40, +0x58000000, +0x88001dff, diff --git a/src/shader/exacmnve0.fp b/src/shader/exacmnve0.fp index a7e54f6..5e0edfe 100644 --- a/src/shader/exacmnve0.fp +++ b/src/shader/exacmnve0.fp @@ -25,4 +25,19 @@ NVE0FP_Composite[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x94] $r0 0x0 +interp mul f32 $r2 a[0x90] $r0 0x0 +tex t lauto live dfp #:#:#:$r4 t2d $t1 $s0 $r2:$r3 () +texbar 0x0 +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t0 $s0 $r0:$r1 () +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/exacmnve0.fpc b/src/shader/exacmnve0.fpc index 76a6119..15694a0 100644 --- a/src/shader/exacmnve0.fpc +++ b/src/shader/exacmnve0.fpc @@ -1,30 +1,29 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x80120001, /* tex { _,_,_,$r4 } $t1 { $r2,3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0094, +0x03f09c40, +0xc07e0090, +0x00211e86, +0x80120001, +0x00001de6, +0xf0000000, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x8013c000, +0x00001de6, +0xf0000000, +0x1030dc40, +0x58000000, +0x10209c40, +0x58000000, +0x10105c40, +0x58000000, +0x10001c40, +0x58000000, +0x88001dff, diff --git a/src/shader/exas8nvc0.fp b/src/shader/exas8nvc0.fp index cd05795..61cb67e 100644 --- a/src/shader/exas8nvc0.fp +++ b/src/shader/exas8nvc0.fp @@ -25,4 +25,13 @@ NVC0FP_Source_A8[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp #:#:#:$r0 t2d $t0 $s0 $r0:$r1 () +mov b32 $r3 $r0 +mov b32 $r2 $r0 +mov b32 $r1 $r0 +exit #endif diff --git a/src/shader/exas8nvc0.fpc b/src/shader/exas8nvc0.fpc index 7399003..a9f6a25 100644 --- a/src/shader/exas8nvc0.fpc +++ b/src/shader/exas8nvc0.fpc @@ -1,18 +1,14 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r0 $r1 } */ - 0x0000dde4, - 0x28000000, /* mov b32 $r3 $r0 */ - 0x00009de4, - 0x28000000, /* mov b32 $r2 $r0 */ - 0x00005de4, - 0x28000000, /* mov b32 $r1 $r0 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x80120000, +0x0000dc28, +0x00009c28, +0x00005c28, +0x88001dff, diff --git a/src/shader/exas8nve0.fp b/src/shader/exas8nve0.fp index 6017f66..9f96236 100644 --- a/src/shader/exas8nve0.fp +++ b/src/shader/exas8nve0.fp @@ -25,4 +25,14 @@ NVE0FP_Source_A8[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp #:#:#:$r0 t2d $t0 $s0 $r0:$r1 () +texbar 0x0 +mov b32 $r3 $r0 +mov b32 $r2 $r0 +mov b32 $r1 $r0 +exit #endif diff --git a/src/shader/exas8nve0.fpc b/src/shader/exas8nve0.fpc index db5d3f1..2e487f5 100644 --- a/src/shader/exas8nve0.fpc +++ b/src/shader/exas8nve0.fpc @@ -1,20 +1,16 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r0 $r1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x0000dde4, - 0x28000000, /* mov b32 $r3 $r0 */ - 0x00009de4, - 0x28000000, /* mov b32 $r2 $r0 */ - 0x00005de4, - 0x28000000, /* mov b32 $r1 $r0 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x80120000, +0x00001de6, +0xf0000000, +0x0000dc28, +0x00009c28, +0x00005c28, +0x88001dff, diff --git a/src/shader/exasanvc0.fp b/src/shader/exasanvc0.fp index 9f33b4d..80674d9 100644 --- a/src/shader/exasanvc0.fp +++ b/src/shader/exasanvc0.fp @@ -25,4 +25,17 @@ NVC0FP_CACompositeSrcAlpha[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x84] $r0 0x0 +interp mul f32 $r2 a[0x80] $r0 0x0 +tex t lauto live dfp #:#:#:$r4 t2d $t0 $s0 $r2:$r3 () +interp mul f32 $r1 a[0x94] $r0 0x0 +interp mul f32 $r0 a[0x90] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t1 $s0 $r0:$r1 () +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/exasanvc0.fpc b/src/shader/exasanvc0.fpc index b2b1518..9fe0065 100644 --- a/src/shader/exasanvc0.fpc +++ b/src/shader/exasanvc0.fpc @@ -1,26 +1,25 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc211e86, - 0x80120000, /* tex { _,_,_,$r4 } $t0 { $r2,3 } */ - 0x03f05c40, - 0xc07e0094, /* pinterp f32 $r1 $r0 v[$r63+0x94] */ - 0x03f01c40, - 0xc07e0090, /* pinterp f32 $r0 $r0 v[$r63+0x90] */ - 0xfc001e86, - 0x8013c001, /* tex { $r0,1,2,3 } $t1 { $r0,1 } */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0084, +0x03f09c40, +0xc07e0080, +0x00211e86, +0x80120000, +0x03f05c40, +0xc07e0094, +0x03f01c40, +0xc07e0090, +0x00001e86, +0x8013c001, +0x1030dc40, +0x58000000, +0x10209c40, +0x58000000, +0x10105c40, +0x58000000, +0x10001c40, +0x58000000, +0x88001dff, diff --git a/src/shader/exasanve0.fp b/src/shader/exasanve0.fp index 8a0702e..4ec257b 100644 --- a/src/shader/exasanve0.fp +++ b/src/shader/exasanve0.fp @@ -25,4 +25,19 @@ NVE0FP_CACompositeSrcAlpha[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r3 a[0x84] $r0 0x0 +interp mul f32 $r2 a[0x80] $r0 0x0 +tex t lauto live dfp #:#:#:$r4 t2d $t0 $s0 $r2:$r3 () +texbar 0x0 +interp mul f32 $r1 a[0x94] $r0 0x0 +interp mul f32 $r0 a[0x90] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t1 $s0 $r0:$r1 () +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/exasanve0.fpc b/src/shader/exasanve0.fpc index e30e4a0..6a4d54b 100644 --- a/src/shader/exasanve0.fpc +++ b/src/shader/exasanve0.fpc @@ -1,30 +1,29 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc211e86, - 0x80120000, /* tex { _,_,_,$r4 } $t0 { $r2,3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x03f05c40, - 0xc07e0094, /* pinterp f32 $r1 $r0 v[$r63+0x94] */ - 0x03f01c40, - 0xc07e0090, /* pinterp f32 $r0 $r0 v[$r63+0x90] */ - 0xfc001e86, - 0x8013c001, /* tex { $r0,1,2,3 } $t1 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f0dc40, +0xc07e0084, +0x03f09c40, +0xc07e0080, +0x00211e86, +0x80120000, +0x00001de6, +0xf0000000, +0x03f05c40, +0xc07e0094, +0x03f01c40, +0xc07e0090, +0x00001e86, +0x8013c001, +0x00001de6, +0xf0000000, +0x1030dc40, +0x58000000, +0x10209c40, +0x58000000, +0x10105c40, +0x58000000, +0x10001c40, +0x58000000, +0x88001dff, diff --git a/src/shader/exascnvc0.fp b/src/shader/exascnvc0.fp index d1f1791..c7cfedc 100644 --- a/src/shader/exascnvc0.fp +++ b/src/shader/exascnvc0.fp @@ -25,4 +25,10 @@ NVC0FP_Source[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t0 $s0 $r0:$r1 () +exit #endif diff --git a/src/shader/exascnvc0.fpc b/src/shader/exascnvc0.fpc index 27b5456..8af6c65 100644 --- a/src/shader/exascnvc0.fpc +++ b/src/shader/exascnvc0.fpc @@ -1,12 +1,11 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x8013c000, +0x88001dff, diff --git a/src/shader/exascnve0.fp b/src/shader/exascnve0.fp index a1d4517..5ec8496 100644 --- a/src/shader/exascnve0.fp +++ b/src/shader/exascnve0.fp @@ -25,4 +25,11 @@ NVE0FP_Source[] = { }; #else +interp pass f32 $r0 a[0x7c] 0x0 0x0 +rcp f32 $r0 $r0 +interp mul f32 $r1 a[0x84] $r0 0x0 +interp mul f32 $r0 a[0x80] $r0 0x0 +tex t lauto live dfp $r0:$r1:$r2:$r3 t2d $t0 $s0 $r0:$r1 () +texbar 0x0 +exit #endif diff --git a/src/shader/exascnve0.fpc b/src/shader/exascnve0.fpc index 338252b..5bbd150 100644 --- a/src/shader/exascnve0.fpc +++ b/src/shader/exascnve0.fpc @@ -1,14 +1,13 @@ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x00001de7, - 0x80000000, /* exit */ +0xfff01c00, +0xc07e007c, +0x10001c00, +0xc8000000, +0x03f05c40, +0xc07e0084, +0x03f01c40, +0xc07e0080, +0x00001e86, +0x8013c000, +0x00001de6, +0xf0000000, +0x88001dff, diff --git a/src/shader/videonvc0.fp b/src/shader/videonvc0.fp index 6f82a0e..db1ed12 100644 --- a/src/shader/videonvc0.fp +++ b/src/shader/videonvc0.fp @@ -25,4 +25,23 @@ NVC0FP_NV12[] = { }; #else +interp pass f32 $r2 a[0x7c] 0x0 0x0 +rcp f32 $r2 $r2 +interp mul f32 $r0 a[0x80] $r2 0x0 +interp mul f32 $r1 a[0x84] $r2 0x0 +tex t lauto live dfp #:#:#:$r0 t2d $t0 $s0 $r0:$r1 () +mul ftz rn f32 $r5 $r0 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] +interp mul f32 $r0 a[0x80] $r2 0x0 +interp mul f32 $r1 a[0x84] $r2 0x0 +tex t lauto live dfp #:#:$r0:$r1 t2d $t1 $s0 $r0:$r1 () +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/videonvc0.fpc b/src/shader/videonvc0.fpc index 18828c2..b6b6b96 100644 --- a/src/shader/videonvc0.fpc +++ b/src/shader/videonvc0.fpc @@ -1,38 +1,37 @@ - 0xfff09c00, - 0xc07e007c, - 0x10209c00, - 0xc8000000, - 0x0bf01c40, - 0xc07e0080, - 0x0bf05c40, - 0xc07e0084, - 0xfc001e86, - 0x80120000, - 0x00015c40, - 0x58004000, - 0x1050dc20, - 0x50004000, - 0x20511c20, - 0x50004000, - 0x30515c20, - 0x50004000, - 0x0bf01c40, - 0xc07e0080, - 0x0bf05c40, - 0xc07e0084, - 0xfc001e86, - 0x80130001, - 0x4000dc40, - 0x30064000, - 0x50011c40, - 0x30084000, - 0x60015c40, - 0x300a4000, - 0x70101c40, - 0x30064000, - 0x90109c40, - 0x300a4000, - 0x80105c40, - 0x30084000, - 0x00001de7, - 0x80000000, +0xfff09c00, +0xc07e007c, +0x10209c00, +0xc8000000, +0x0bf01c40, +0xc07e0080, +0x0bf05c40, +0xc07e0084, +0x00001e86, +0x80120000, +0x00015c40, +0x58004000, +0x1050dc20, +0x50004000, +0x20511c20, +0x50004000, +0x30515c20, +0x50004000, +0x0bf01c40, +0xc07e0080, +0x0bf05c40, +0xc07e0084, +0x00001e86, +0x80130001, +0x4000dc40, +0x30064000, +0x50011c40, +0x30084000, +0x60015c40, +0x300a4000, +0x70101c40, +0x30064000, +0x90109c40, +0x300a4000, +0x80105c40, +0x30084000, +0x88001dff, diff --git a/src/shader/videonve0.fp b/src/shader/videonve0.fp index 24747c1..a6675c9 100644 --- a/src/shader/videonve0.fp +++ b/src/shader/videonve0.fp @@ -25,4 +25,26 @@ NVE0FP_NV12[] = { }; #else +sched 0x2e 0x28 0x23 0x2e 0x20 0x20 0xc2 +interp pass f32 $r2 a[0x7c] 0x0 0x0 +rcp f32 $r2 $r2 +interp mul f32 $r0 a[0x80] $r2 0x0 +interp mul f32 $r1 a[0x84] $r2 0x0 +tex t lauto live dfp #:#:#:$r4 t2d $t0 $s0 $r0:$r1 () +tex p lauto live dfp #:#:$r0:$r1 t2d $t1 $s0 $r0:$r1 () +texbar 0x1 +sched 0x28 0x4 0x20 0x20 0xa2 0x4 0x20 +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 +sched 0x28 0x4 0x20 0x4 0x2e 0x0 0x0 +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/videonve0.fpc b/src/shader/videonve0.fpc index 1263c2d..c4f1b09 100644 --- a/src/shader/videonve0.fpc +++ b/src/shader/videonve0.fpc @@ -1,22 +1,43 @@ - 0xe23282e7, 0x2c220202, /* sched 0x2e 0x28 0x23 0x2e 0x20 0x20 0xc2 */ - 0xfff09c00, 0xc07e007c, /* interp pass f32 $r2 a[0x7c] */ - 0x10209c00, 0xc8000000, /* rcp f32 $r2 $r2 */ - 0x0bf01c40, 0xc07e0080, /* interp mul f32 $r0 a[0x80] $r2 0 */ - 0x0bf05c40, 0xc07e0084, /* interp mul f32 $r1 a[0x84] $r2 0 */ - 0xfc011e86, 0x80120000, /* tex t { # # # $r4 } t2d c[0x0] { $r0 $r1 } */ - 0xfc001f06, 0x80130001, /* tex p { # # $r0 $r1 } t2d c[0x4] { $r0 $r1 } */ - 0x04001de6, 0xf0000000, /* texbar 1 */ - 0x02004287, 0x22004a22, /* sched 0x28 0x4 0x20 0x20 0xa2 0x4 0x20 */ - 0x00415c40, 0x58004000, /* mul ftz rn f32 $r5 $r4 c0[0] */ - 0x1050dc20, 0x50004000, /* add ftz rn f32 $r3 $r5 c0[0x4] */ - 0x20511c20, 0x50004000, /* add ftz rn f32 $r4 $r5 c0[0x8] */ - 0x30515c20, 0x50004000, /* add ftz rn f32 $r5 $r5 c0[0xc] */ - 0x00001de6, 0xf0000000, /* texbar 0 */ - 0x4000dc40, 0x30064000, /* fma ftz rn f32 $r3 $r0 c0[0x10] $r3 */ - 0x50011c40, 0x30084000, /* fma ftz rn f32 $r4 $r0 c0[0x14] $r4 */ - 0x42004287, 0x200002e0, /* sched 0x28 0x4 0x20 0x4 0x2e 0 0 */ - 0x60015c40, 0x300a4000, /* fma ftz rn f32 $r5 $r0 c0[0x18] $r5 */ - 0x70101c40, 0x30064000, /* fma ftz rn f32 $r0 $r1 c0[0x1c] $r3 */ - 0x90109c40, 0x300a4000, /* fma ftz rn f32 $r2 $r1 c0[0x24] $r5 */ - 0x80105c40, 0x30084000, /* fma ftz rn f32 $r1 $r1 c0[0x20] $r4 */ - 0x00001de7, 0x80000000, /* exit */ +0xe23282e7, +0x2c220202, +0xfff09c00, +0xc07e007c, +0x10209c00, +0xc8000000, +0x0bf01c40, +0xc07e0080, +0x0bf05c40, +0xc07e0084, +0x00011e86, +0x80120000, +0x00001f06, +0x80130001, +0x04001de6, +0xf0000000, +0x02004287, +0x22004a22, +0x00415c40, +0x58004000, +0x1050dc20, +0x50004000, +0x20511c20, +0x50004000, +0x30515c20, +0x50004000, +0x00001de6, +0xf0000000, +0x4000dc40, +0x30064000, +0x50011c40, +0x30084000, +0x42004287, +0x200002e0, +0x60015c40, +0x300a4000, +0x70101c40, +0x30064000, +0x90109c40, +0x300a4000, +0x80105c40, +0x30084000, +0x88001dff, diff --git a/src/shader/xfrm2nvc0.vp b/src/shader/xfrm2nvc0.vp index a9cdd08..e29e5c5 100644 --- a/src/shader/xfrm2nvc0.vp +++ b/src/shader/xfrm2nvc0.vp @@ -25,4 +25,39 @@ NVC0VP_Transform2[] = { }; #else +ld b128 $r0:$r1:$r2:$r3 a[0x80] 0x0 unk39 +st b128 a[0x70] $r0:$r1:$r2:$r3 0x0 unk39 +ld b64 $r0:$r1 a[0x90] 0x0 unk39 +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 +ld b64 $r0:$r1 a[0xa0] 0x0 unk39 +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 +exit #endif diff --git a/src/shader/xfrm2nvc0.vpc b/src/shader/xfrm2nvc0.vpc index a1287c0..c7aee0b 100644 --- a/src/shader/xfrm2nvc0.vpc +++ b/src/shader/xfrm2nvc0.vpc @@ -1,70 +1,69 @@ - 0xfff01c66, - 0x06000080, - 0x03f01c66, - 0x0a7e0070, - 0xfff01c26, - 0x06000090, - 0x00009c40, - 0x58004000, - 0x3000dc40, - 0x58004000, - 0x60011c40, - 0x58004000, - 0x10109c40, - 0x30044000, - 0x4010dc40, - 0x30064000, - 0x70111c40, - 0x30084000, - 0x20209c20, - 0x50004000, - 0x5030dc20, - 0x50004000, - 0x80411c20, - 0x50004000, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x90201c40, - 0x58004000, - 0xa0305c40, - 0x58004000, - 0x03f01c26, - 0x0a7e0080, - 0xfff01c26, - 0x060000a0, - 0xb0009c40, - 0x58004000, - 0xe000dc40, - 0x58004000, - 0x10011c40, - 0x58004001, - 0xc0109c40, - 0x30044000, - 0xf010dc40, - 0x30064000, - 0x20111c40, - 0x30084001, - 0xd0209c20, - 0x50004000, - 0x0030dc20, - 0x50004001, - 0x30411c20, - 0x50004001, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x40201c40, - 0x58004001, - 0x50305c40, - 0x58004001, - 0x03f01c26, - 0x0a7e0090, - 0x00001de7, - 0x80000000, +0xfff01c66, +0x06000080, +0x03f01c66, +0x0a7e0070, +0xfff01c26, +0x06000090, +0x00009c40, +0x58004000, +0x3000dc40, +0x58004000, +0x60011c40, +0x58004000, +0x10109c40, +0x30044000, +0x4010dc40, +0x30064000, +0x70111c40, +0x30084000, +0x20209c20, +0x50004000, +0x5030dc20, +0x50004000, +0x80411c20, +0x50004000, +0x10411c00, +0xc8000000, +0x10209c40, +0x58000000, +0x1030dc40, +0x58000000, +0x90201c40, +0x58004000, +0xa0305c40, +0x58004000, +0x03f01c26, +0x0a7e0080, +0xfff01c26, +0x060000a0, +0xb0009c40, +0x58004000, +0xe000dc40, +0x58004000, +0x10011c40, +0x58004001, +0xc0109c40, +0x30044000, +0xf010dc40, +0x30064000, +0x20111c40, +0x30084001, +0xd0209c20, +0x50004000, +0x0030dc20, +0x50004001, +0x30411c20, +0x50004001, +0x10411c00, +0xc8000000, +0x10209c40, +0x58000000, +0x1030dc40, +0x58000000, +0x40201c40, +0x58004001, +0x50305c40, +0x58004001, +0x03f01c26, +0x0a7e0090, +0x88001dff, diff --git a/src/shader/xfrm2nve0.vp b/src/shader/xfrm2nve0.vp index 262841f..4e39f53 100644 --- a/src/shader/xfrm2nve0.vp +++ b/src/shader/xfrm2nve0.vp @@ -25,4 +25,39 @@ NVE0VP_Transform2[] = { }; #else +ld b128 $r0:$r1:$r2:$r3 a[0x80] 0x0 unk39 +st b128 a[0x70] $r0:$r1:$r2:$r3 0x0 unk39 +ld b64 $r0:$r1 a[0x90] 0x0 unk39 +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 +ld b64 $r0:$r1 a[0xa0] 0x0 unk39 +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 +exit #endif diff --git a/src/shader/xfrm2nve0.vpc b/src/shader/xfrm2nve0.vpc index a1287c0..c7aee0b 100644 --- a/src/shader/xfrm2nve0.vpc +++ b/src/shader/xfrm2nve0.vpc @@ -1,70 +1,69 @@ - 0xfff01c66, - 0x06000080, - 0x03f01c66, - 0x0a7e0070, - 0xfff01c26, - 0x06000090, - 0x00009c40, - 0x58004000, - 0x3000dc40, - 0x58004000, - 0x60011c40, - 0x58004000, - 0x10109c40, - 0x30044000, - 0x4010dc40, - 0x30064000, - 0x70111c40, - 0x30084000, - 0x20209c20, - 0x50004000, - 0x5030dc20, - 0x50004000, - 0x80411c20, - 0x50004000, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x90201c40, - 0x58004000, - 0xa0305c40, - 0x58004000, - 0x03f01c26, - 0x0a7e0080, - 0xfff01c26, - 0x060000a0, - 0xb0009c40, - 0x58004000, - 0xe000dc40, - 0x58004000, - 0x10011c40, - 0x58004001, - 0xc0109c40, - 0x30044000, - 0xf010dc40, - 0x30064000, - 0x20111c40, - 0x30084001, - 0xd0209c20, - 0x50004000, - 0x0030dc20, - 0x50004001, - 0x30411c20, - 0x50004001, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x40201c40, - 0x58004001, - 0x50305c40, - 0x58004001, - 0x03f01c26, - 0x0a7e0090, - 0x00001de7, - 0x80000000, +0xfff01c66, +0x06000080, +0x03f01c66, +0x0a7e0070, +0xfff01c26, +0x06000090, +0x00009c40, +0x58004000, +0x3000dc40, +0x58004000, +0x60011c40, +0x58004000, +0x10109c40, +0x30044000, +0x4010dc40, +0x30064000, +0x70111c40, +0x30084000, +0x20209c20, +0x50004000, +0x5030dc20, +0x50004000, +0x80411c20, +0x50004000, +0x10411c00, +0xc8000000, +0x10209c40, +0x58000000, +0x1030dc40, +0x58000000, +0x90201c40, +0x58004000, +0xa0305c40, +0x58004000, +0x03f01c26, +0x0a7e0080, +0xfff01c26, +0x060000a0, +0xb0009c40, +0x58004000, +0xe000dc40, +0x58004000, +0x10011c40, +0x58004001, +0xc0109c40, +0x30044000, +0xf010dc40, +0x30064000, +0x20111c40, +0x30084001, +0xd0209c20, +0x50004000, +0x0030dc20, +0x50004001, +0x30411c20, +0x50004001, +0x10411c00, +0xc8000000, +0x10209c40, +0x58000000, +0x1030dc40, +0x58000000, +0x40201c40, +0x58004001, +0x50305c40, +0x58004001, +0x03f01c26, +0x0a7e0090, +0x88001dff, commit 1edb5d7ae450a32fe6607d536653cf733444e7e2 Author: Ben Skeggs <bs...@re...> Date: Wed May 15 20:47:44 2013 +1000 nvc0-nve0: split shader code from their headers Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/Makefile.am b/src/Makefile.am index bf9c967..17c6389 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -76,8 +76,6 @@ EXTRA_DIST = hwdefs/nv_3ddefs.xml.h \ nv04_accel.h \ nv50_accel.h \ nvc0_accel.h \ - nvc0_shader.h \ - nve0_shader.h \ compat-api.h \ vl_hwmc.c \ vl_hwmc.h diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c index 4b3745f..df6a6b8 100644 --- a/src/nvc0_accel.c +++ b/src/nvc0_accel.c @@ -22,8 +22,32 @@ #include "nv_include.h" #include "nvc0_accel.h" -#include "nvc0_shader.h" -#include "nve0_shader.h" + +#include "shader/xfrm2nvc0.vp" +#include "shader/videonvc0.fp" + +#include "shader/exascnvc0.fp" +#include "shader/exacmnvc0.fp" +#include "shader/exacanvc0.fp" +#include "shader/exasanvc0.fp" +#include "shader/exas8nvc0.fp" +#include "shader/exac8nvc0.fp" + +#include "shader/xfrm2nve0.vp" +#include "shader/videonve0.fp" + +#include "shader/exascnve0.fp" +#include "shader/exacmnve0.fp" +#include "shader/exacanve0.fp" +#include "shader/exasanve0.fp" +#include "shader/exas8nve0.fp" +#include "shader/exac8nve0.fp" + +#define NVC0PushProgram(pNv,addr,code) do { \ + const unsigned size = sizeof(code) / sizeof(code[0]); \ + PUSH_DATAu((pNv)->pushbuf, (pNv)->scratch, (addr), size); \ + PUSH_DATAp((pNv)->pushbuf, (code), size); \ +} while(0) void NVC0SyncToVBlank(PixmapPtr ppix, BoxPtr box) diff --git a/src/nvc0_shader.h b/src/nvc0_shader.h deleted file mode 100644 index 41bc065..0000000 --- a/src/nvc0_shader.h +++ /dev/null @@ -1,444 +0,0 @@ -#ifndef __NVC0_SHADER_H__ -#define __NVC0_SHADER_H__ - -#define NVC0PushProgram(pNv,addr,code) do { \ - const unsigned size = sizeof(code) / sizeof(code[0]); \ - PUSH_DATAu((pNv)->pushbuf, (pNv)->scratch, (addr), size); \ - PUSH_DATAp((pNv)->pushbuf, (code), size); \ -} while(0) - -static uint32_t -NVC0VP_Transform2[] = { - 0x00020461, - 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, - 0xfff01c66, - 0x06000080, - 0x03f01c66, - 0x0a7e0070, - 0xfff01c26, - 0x06000090, - 0x00009c40, - 0x58004000, - 0x3000dc40, - 0x58004000, - 0x60011c40, - 0x58004000, - 0x10109c40, - 0x30044000, - 0x4010dc40, - 0x30064000, - 0x70111c40, - 0x30084000, - 0x20209c20, - 0x50004000, - 0x5030dc20, - 0x50004000, - 0x80411c20, - 0x50004000, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x90201c40, - 0x58004000, - 0xa0305c40, - 0x58004000, - 0x03f01c26, - 0x0a7e0080, - 0xfff01c26, - 0x060000a0, - 0xb0009c40, - 0x58004000, - 0xe000dc40, - 0x58004000, - 0x10011c40, - 0x58004001, - 0xc0109c40, - 0x30044000, - 0xf010dc40, - 0x30064000, - 0x20111c40, - 0x30084001, - 0xd0209c20, - 0x50004000, - 0x0030dc20, - 0x50004001, - 0x30411c20, - 0x50004001, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x40201c40, - 0x58004001, - 0x50305c40, - 0x58004001, - 0x03f01c26, - 0x0a7e0090, - 0x00001de7, - 0x80000000, -}; - -static uint32_t -NVC0FP_Source[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x0000000a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVC0FP_Composite[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x00000a0a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x80120001, /* tex { _,_,_,$r4 } $t1 { $r2,3 } */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVC0FP_CAComposite[] = { - 0x00021462, /* 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 */ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x8013c001, /* tex { $r4,5,6,7 } $t1 { $r2,3 } */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x1c30dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r7 */ - 0x18209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r6 */ - 0x14105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r5 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVC0FP_CACompositeSrcAlpha[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x00000a0a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc211e86, - 0x80120000, /* tex { _,_,_,$r4 } $t0 { $r2,3 } */ - 0x03f05c40, - 0xc07e0094, /* pinterp f32 $r1 $r0 v[$r63+0x94] */ - 0x03f01c40, - 0xc07e0090, /* pinterp f32 $r0 $r0 v[$r63+0x90] */ - 0xfc001e86, - 0x8013c001, /* tex { $r0,1,2,3 } $t1 { $r0,1 } */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVC0FP_Source_A8[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x0000000a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r0 $r1 } */ - 0x0000dde4, - 0x28000000, /* mov b32 $r3 $r0 */ - 0x00009de4, - 0x28000000, /* mov b32 $r2 $r0 */ - 0x00005de4, - 0x28000000, /* mov b32 $r1 $r0 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVC0FP_Composite_A8[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x00000a0a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc205e86, - 0x80120001, /* tex { _ _ _ $r1 } $t1 { $r2 $r3 } */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc201e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r2 $r3 } */ - 0x0400dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r0 $r1 */ - 0x0c009de4, - 0x28000000, /* mov b32 $r2 $r3 */ - 0x0c005de4, - 0x28000000, /* mov b32 $r1 $r3 */ - 0x0c001de4, - 0x28000000, /* mov b32 $r0 $r3 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVC0FP_NV12[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x00000a0a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff09c00, - 0xc07e007c, - 0x10209c00, - 0xc8000000, - 0x0bf01c40, - 0xc07e0080, - 0x0bf05c40, - 0xc07e0084, - 0xfc001e86, - 0x80120000, - 0x00015c40, - 0x58004000, - 0x1050dc20, - 0x50004000, - 0x20511c20, - 0x50004000, - 0x30515c20, - 0x50004000, - 0x0bf01c40, - 0xc07e0080, - 0x0bf05c40, - 0xc07e0084, - 0xfc001e86, - 0x80130001, - 0x4000dc40, - 0x30064000, - 0x50011c40, - 0x30084000, - 0x60015c40, - 0x300a4000, - 0x70101c40, - 0x30064000, - 0x90109c40, - 0x300a4000, - 0x80105c40, - 0x30084000, - 0x00001de7, - 0x80000000, -}; - -#endif diff --git a/src/nve0_shader.h b/src/nve0_shader.h deleted file mode 100644 index 5d8e9dd..0000000 --- a/src/nve0_shader.h +++ /dev/null @@ -1,440 +0,0 @@ -#ifndef __NVE0_SHADER_H__ -#define __NVE0_SHADER_H__ - -static uint32_t -NVE0VP_Transform2[] = { - 0x00020461, - 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, - 0xfff01c66, - 0x06000080, - 0x03f01c66, - 0x0a7e0070, - 0xfff01c26, - 0x06000090, - 0x00009c40, - 0x58004000, - 0x3000dc40, - 0x58004000, - 0x60011c40, - 0x58004000, - 0x10109c40, - 0x30044000, - 0x4010dc40, - 0x30064000, - 0x70111c40, - 0x30084000, - 0x20209c20, - 0x50004000, - 0x5030dc20, - 0x50004000, - 0x80411c20, - 0x50004000, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x90201c40, - 0x58004000, - 0xa0305c40, - 0x58004000, - 0x03f01c26, - 0x0a7e0080, - 0xfff01c26, - 0x060000a0, - 0xb0009c40, - 0x58004000, - 0xe000dc40, - 0x58004000, - 0x10011c40, - 0x58004001, - 0xc0109c40, - 0x30044000, - 0xf010dc40, - 0x30064000, - 0x20111c40, - 0x30084001, - 0xd0209c20, - 0x50004000, - 0x0030dc20, - 0x50004001, - 0x30411c20, - 0x50004001, - 0x10411c00, - 0xc8000000, - 0x10209c40, - 0x58000000, - 0x1030dc40, - 0x58000000, - 0x40201c40, - 0x58004001, - 0x50305c40, - 0x58004001, - 0x03f01c26, - 0x0a7e0090, - 0x00001de7, - 0x80000000, -}; - -static uint32_t -NVE0FP_Source[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x0000000a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVE0FP_Composite[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x00000a0a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x80120001, /* tex { _,_,_,$r4 } $t1 { $r2,3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVE0FP_CAComposite[] = { - 0x00021462, /* 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 */ - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc211e86, - 0x8013c001, /* tex { $r4,5,6,7 } $t1 { $r2,3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x8013c000, /* tex { $r0,1,2,3 } $t0 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x1c30dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r7 */ - 0x18209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r6 */ - 0x14105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r5 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVE0FP_CACompositeSrcAlpha[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x00000a0a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc211e86, - 0x80120000, /* tex { _,_,_,$r4 } $t0 { $r2,3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x03f05c40, - 0xc07e0094, /* pinterp f32 $r1 $r0 v[$r63+0x94] */ - 0x03f01c40, - 0xc07e0090, /* pinterp f32 $r0 $r0 v[$r63+0x90] */ - 0xfc001e86, - 0x8013c001, /* tex { $r0,1,2,3 } $t1 { $r0,1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x1030dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r3 $r4 */ - 0x10209c40, - 0x58000000, /* mul ftz rn f32 $r2 $r2 $r4 */ - 0x10105c40, - 0x58000000, /* mul ftz rn f32 $r1 $r1 $r4 */ - 0x10001c40, - 0x58000000, /* mul ftz rn f32 $r0 $r0 $r4 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVE0FP_Source_A8[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x0000000a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f05c40, - 0xc07e0084, /* pinterp f32 $r1 $r0 v[$r63+0x84] */ - 0x03f01c40, - 0xc07e0080, /* pinterp f32 $r0 $r0 v[$r63+0x80] */ - 0xfc001e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r0 $r1 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x0000dde4, - 0x28000000, /* mov b32 $r3 $r0 */ - 0x00009de4, - 0x28000000, /* mov b32 $r2 $r0 */ - 0x00005de4, - 0x28000000, /* mov b32 $r1 $r0 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVE0FP_Composite_A8[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x00000a0a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xfff01c00, - 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ - 0x10001c00, - 0xc8000000, /* rcp f32 $r0 $r0 */ - 0x03f0dc40, - 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ - 0x03f09c40, - 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ - 0xfc205e86, - 0x80120001, /* tex { _ _ _ $r1 } $t1 { $r2 $r3 } */ - 0x03f0dc40, - 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ - 0x03f09c40, - 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ - 0xfc201e86, - 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r2 $r3 } */ - 0x00001de6, - 0xf0000000, /* texbar */ - 0x0400dc40, - 0x58000000, /* mul ftz rn f32 $r3 $r0 $r1 */ - 0x0c009de4, - 0x28000000, /* mov b32 $r2 $r3 */ - 0x0c005de4, - 0x28000000, /* mov b32 $r1 $r3 */ - 0x0c001de4, - 0x28000000, /* mov b32 $r0 $r3 */ - 0x00001de7, - 0x80000000, /* exit */ -}; - -static uint32_t -NVE0FP_NV12[] = { - 0x00021462, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x80000000, - 0x0000000a, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000000f, - 0x00000000, - 0xe23282e7, 0x2c220202, /* sched 0x2e 0x28 0x23 0x2e 0x20 0x20 0xc2 */ - 0xfff09c00, 0xc07e007c, /* interp pass f32 $r2 a[0x7c] */ - 0x10209c00, 0xc8000000, /* rcp f32 $r2 $r2 */ - 0x0bf01c40, 0xc07e0080, /* interp mul f32 $r0 a[0x80] $r2 0 */ - 0x0bf05c40, 0xc07e0084, /* interp mul f32 $r1 a[0x84] $r2 0 */ - 0xfc011e86, 0x80120000, /* tex t { # # # $r4 } t2d c[0x0] { $r0 $r1 } */ - 0xfc001f06, 0x80130001, /* tex p { # # $r0 $r1 } t2d c[0x4] { $r0 $r1 } */ - 0x04001de6, 0xf0000000, /* texbar 1 */ - 0x02004287, 0x22004a22, /* sched 0x28 0x4 0x20 0x20 0xa2 0x4 0x20 */ - 0x00415c40, 0x58004000, /* mul ftz rn f32 $r5 $r4 c0[0] */ - 0x1050dc20, 0x50004000, /* add ftz rn f32 $r3 $r5 c0[0x4] */ - 0x20511c20, 0x50004000, /* add ftz rn f32 $r4 $r5 c0[0x8] */ - 0x30515c20, 0x50004000, /* add ftz rn f32 $r5 $r5 c0[0xc] */ - 0x00001de6, 0xf0000000, /* texbar 0 */ - 0x4000dc40, 0x30064000, /* fma ftz rn f32 $r3 $r0 c0[0x10] $r3 */ - 0x50011c40, 0x30084000, /* fma ftz rn f32 $r4 $r0 c0[0x14] $r4 */ - 0x42004287, 0x200002e0, /* sched 0x28 0x4 0x20 0x4 0x2e 0 0 */ - 0x60015c40, 0x300a4000, /* fma ftz rn f32 $r5 $r0 c0[0x18] $r5 */ - 0x70101c40, 0x30064000, /* fma ftz rn f32 $r0 $r1 c0[0x1c] $r3 */ - 0x90109c40, 0x300a4000, /* fma ftz rn f32 $r2 $r1 c0[0x24] $r5 */ - 0x80105c40, 0x30084000, /* fma ftz rn f32 $r1 $r1 c0[0x20] $r4 */ - 0x00001de7, 0x80000000, /* exit */ -}; - -#endif diff --git a/src/shader/exac8nvc0.fp b/src/shader/exac8nvc0.fp new file mode 100644 index 0000000..c7db275 --- /dev/null +++ b/src/shader/exac8nvc0.fp @@ -0,0 +1,28 @@ +#ifndef ENVYAS +static uint32_t +NVC0FP_Composite_A8[] = { + 0x00021462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x00000a0a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "exac8nvc0.fpc" +}; +#else + +#endif diff --git a/src/shader/exac8nvc0.fpc b/src/shader/exac8nvc0.fpc new file mode 100644 index 0000000..3afea72 --- /dev/null +++ b/src/shader/exac8nvc0.fpc @@ -0,0 +1,26 @@ + 0xfff01c00, + 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ + 0x10001c00, + 0xc8000000, /* rcp f32 $r0 $r0 */ + 0x03f0dc40, + 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ + 0x03f09c40, + 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ + 0xfc205e86, + 0x80120001, /* tex { _ _ _ $r1 } $t1 { $r2 $r3 } */ + 0x03f0dc40, + 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ + 0x03f09c40, + 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ + 0xfc201e86, + 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r2 $r3 } */ + 0x0400dc40, + 0x58000000, /* mul ftz rn f32 $r3 $r0 $r1 */ + 0x0c009de4, + 0x28000000, /* mov b32 $r2 $r3 */ + 0x0c005de4, + 0x28000000, /* mov b32 $r1 $r3 */ + 0x0c001de4, + 0x28000000, /* mov b32 $r0 $r3 */ + 0x00001de7, + 0x80000000, /* exit */ diff --git a/src/shader/exac8nve0.fp b/src/shader/exac8nve0.fp new file mode 100644 index 0000000..eeb2413 --- /dev/null +++ b/src/shader/exac8nve0.fp @@ -0,0 +1,28 @@ +#ifndef ENVYAS +static uint32_t +NVE0FP_Composite_A8[] = { + 0x00021462, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80000000, + 0x00000a0a, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x0000000f, + 0x00000000, +#include "exac8nve0.fpc" +}; +#else + +#endif diff --git a/src/shader/exac8nve0.fpc b/src/shader/exac8nve0.fpc new file mode 100644 index 0000000..7d341d9 --- /dev/null +++ b/src/shader/exac8nve0.fpc @@ -0,0 +1,28 @@ + 0xfff01c00, + 0xc07e007c, /* linterp f32 $r0 v[$r63+0x7c] */ + 0x10001c00, + 0xc8000000, /* rcp f32 $r0 $r0 */ + 0x03f0dc40, + 0xc07e0094, /* pinterp f32 $r3 $r0 v[$r63+0x94] */ + 0x03f09c40, + 0xc07e0090, /* pinterp f32 $r2 $r0 v[$r63+0x90] */ + 0xfc205e86, + 0x80120001, /* tex { _ _ _ $r1 } $t1 { $r2 $r3 } */ + 0x03f0dc40, + 0xc07e0084, /* pinterp f32 $r3 $r0 v[$r63+0x84] */ + 0x03f09c40, + 0xc07e0080, /* pinterp f32 $r2 $r0 v[$r63+0x80] */ + 0xfc201e86, + 0x80120000, /* tex { _ _ _ $r0 } $t0 { $r2 $r3 } */ + 0x00001de6, + 0xf0000000, /* texbar */ + 0x0400dc40, + 0x58000000, /* mul ftz rn f32 $r3 $r0 $r1 */ + 0x0c009de4, + 0x28000000, /* mov b32 $r2 $r3 */ + 0x0c005de4, + 0x28000000, /* mov b32 $r1 $r3 */ + 0x0c001de4, + 0x28000000, /* mov b32 $r0 $r3 */ + 0x00001de7, + 0x80000000, /* exit */ diff --git a/src/shader/exacanvc0.fp b/src/shader/exacanvc0.fp new file mode 100644 index 0000000..8254306 --- /dev/null +++ b/src/shader/exacanvc0.fp @@ -0,0 +1,28 @@ +#ifndef ENVYAS +static uint32_t +NVC0FP_CAComposite[] = { + 0x00021462, /* 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[... [truncated message content] |
From: <dar...@ke...> - 2013-07-30 01:27:10
|
src/nouveau_xv.c | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) New commits: commit 4492cf90c2a7fe27badf6f3f0f296755a65e1e83 Author: Ilia Mirkin <im...@al...> Date: Mon Jul 29 02:40:39 2013 -0400 xv: speed up YV12 -> NV12 conversion using SSE2 if available memcpy() goes from taking 45% to 66% of total function time, which translates to a 30% decrease in NVPutImage runtime. Signed-off-by: Ilia Mirkin <im...@al...> Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index 567e30c..5569b7c 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -25,6 +25,8 @@ #include "config.h" #endif +#include <immintrin.h> + #include "xf86xv.h" #include <X11/extensions/Xv.h> #include "exa.h" @@ -532,30 +534,47 @@ NVCopyNV12ColorPlanes(unsigned char *src1, unsigned char *src2, w >>= 1; h >>= 1; +#ifdef __SSE2__ + l = w >> 3; + e = w & 7; +#else l = w >> 1; e = w & 1; +#endif for (j = 0; j < h; j++) { unsigned char *us = src1; unsigned char *vs = src2; unsigned int *vuvud = (unsigned int *) dst; + unsigned short *vud; for (i = 0; i < l; i++) { -#if X_BYTE_ORDER == X_BIG_ENDIAN +#ifdef __SSE2__ + _mm_storeu_si128( + (void*)vuvud, + _mm_unpacklo_epi8( + _mm_loadl_epi64((void*)vs), + _mm_loadl_epi64((void*)us))); + vuvud+=4; + us+=8; + vs+=8; +#else /* __SSE2__ */ +# if X_BYTE_ORDER == X_BIG_ENDIAN *vuvud++ = (vs[0]<<24) | (us[0]<<16) | (vs[1]<<8) | us[1]; -#else +# else *vuvud++ = vs[0] | (us[0]<<8) | (vs[1]<<16) | (us[1]<<24); -#endif +# endif us+=2; vs+=2; +#endif /* __SSE2__ */ } - if (e) { - unsigned short *vud = (unsigned short *) vuvud; + vud = (unsigned short *)vuvud; + for (i = 0; i < e; i++) { #if X_BYTE_ORDER == X_BIG_ENDIAN - *vud = us[0] | (vs[0]<<8); + vud[i] = us[i] | (vs[i]<<8); #else - *vud = vs[0] | (us[0]<<8); + vud[i] = vs[i] | (us[i]<<8); #endif } commit 08c667b06d28756d0d32f82bd736b0bdf2b4448e Author: Ilia Mirkin <im...@al...> Date: Mon Jul 29 02:40:38 2013 -0400 xv: fix last pixel for big-endian machines in YV12 -> NV12 conversion Signed-off-by: Ilia Mirkin <im...@al...> Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index 8eafcf0..567e30c 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -552,8 +552,11 @@ NVCopyNV12ColorPlanes(unsigned char *src1, unsigned char *src2, if (e) { unsigned short *vud = (unsigned short *) vuvud; - +#if X_BYTE_ORDER == X_BIG_ENDIAN + *vud = us[0] | (vs[0]<<8); +#else *vud = vs[0] | (us[0]<<8); +#endif } dst += dstPitch; |
From: <dar...@ke...> - 2013-11-07 04:57:12
|
configure.ac | 2 +- src/nv_driver.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) New commits: commit 480f0998ffed6d9a5c6656dba75182f00fd88a1b Author: Ben Skeggs <bs...@re...> Date: Thu Nov 7 14:56:48 2013 +1000 bump to 1.0.10 for release Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/configure.ac b/configure.ac index eff9087..c524660 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ([2.60]) AC_INIT([xf86-video-nouveau], - [1.0.9], + [1.0.10], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-nouveau]) commit 59395c738ebdc21087109075ada67ea8d7783141 Author: Ben Skeggs <bs...@re...> Date: Thu Nov 7 14:56:06 2013 +1000 recognise GK208 as a Kepler board Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/nv_driver.c b/src/nv_driver.c index 44e7496..5131dcd 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -309,7 +309,7 @@ NVHasKMS(struct pci_device *pci_dev) nouveau_device_del(&dev); - switch (chipset & 0xf0) { + switch (chipset & ~0xf) { case 0x00: case 0x10: case 0x20: @@ -324,6 +324,7 @@ NVHasKMS(struct pci_device *pci_dev) case 0xd0: case 0xe0: case 0xf0: + case 0x100: break; default: xf86DrvMsg(-1, X_ERROR, "Unknown chipset: NV%02x\n", chipset); @@ -839,7 +840,7 @@ NVPreInit(ScrnInfoPtr pScrn, int flags) sprintf(pScrn->chipset, "NVIDIA NV%02X", dev->chipset); xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Chipset: \"%s\"\n", pScrn->chipset); - switch (dev->chipset & 0xf0) { + switch (dev->chipset & ~0xf) { case 0x00: pNv->Architecture = NV_ARCH_04; break; @@ -868,6 +869,7 @@ NVPreInit(ScrnInfoPtr pScrn, int flags) break; case 0xe0: case 0xf0: + case 0x100: pNv->Architecture = NV_ARCH_E0; break; default: |
From: <mp...@ke...> - 2014-04-06 19:43:28
|
src/nv_driver.c | 113 ++++++++++++++++++++++++++++++++++++-------------------- src/nv_type.h | 4 + 2 files changed, 78 insertions(+), 39 deletions(-) New commits: commit 0c13843e300d1a9db2bfed18dc1b5df38c5adfdf Author: Hans de Goede <hde...@re...> Date: Mon Mar 17 17:37:31 2014 +0100 Add support for server managed fds v2 (Martin Peres): - Do not define "NVEntPtr pNVEnt" if not needed to avoid some warnings Signed-off-by: Hans de Goede <hde...@re...> Signed-off-by: Martin Peres <mar...@fr...> diff --git a/src/nv_driver.c b/src/nv_driver.c index 35cc03d..b8faab1 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -227,15 +227,21 @@ NVDriverFunc(ScrnInfoPtr scrn, xorgDriverFuncOp op, void *data) flag = (CARD32 *)data; (*flag) = 0; return TRUE; +#if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(1,15,99,0,0) + case SUPPORTS_SERVER_FDS: + return TRUE; +#endif default: return FALSE; } } static void -NVInitScrn(ScrnInfoPtr pScrn, int entity_num) +NVInitScrn(ScrnInfoPtr pScrn, struct xf86_platform_device *platform_dev, + int entity_num) { DevUnion *pPriv; + NVEntPtr pNVEnt; pScrn->driverVersion = NV_VERSION; pScrn->driverName = NV_DRIVER_NAME; @@ -258,6 +264,8 @@ NVInitScrn(ScrnInfoPtr pScrn, int entity_num) NVEntityIndex); if (!pPriv->ptr) { pPriv->ptr = xnfcalloc(sizeof(NVEntRec), 1); + pNVEnt = pPriv->ptr; + pNVEnt->platform_dev = platform_dev; } xf86SetEntityInstanceForScreen(pScrn, entity_num, @@ -265,11 +273,12 @@ NVInitScrn(ScrnInfoPtr pScrn, int entity_num) } static struct nouveau_device * -NVOpenNouveauDevice(struct pci_device *pci_dev, int scrnIndex, Bool probe) +NVOpenNouveauDevice(struct pci_device *pci_dev, + struct xf86_platform_device *platform_dev, int scrnIndex, Bool probe) { struct nouveau_device *dev = NULL; char *busid; - int ret; + int ret, fd = -1; #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0) XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d", @@ -288,7 +297,15 @@ NVOpenNouveauDevice(struct pci_device *pci_dev, int scrnIndex, Bool probe) } } - ret = nouveau_device_open(busid, &dev); +#if defined(ODEV_ATTRIB_FD) + if (platform_dev) + fd = xf86_get_platform_device_int_attrib(platform_dev, + ODEV_ATTRIB_FD, -1); +#endif + if (fd != -1) + ret = nouveau_device_wrap(fd, 0, &dev); + else + ret = nouveau_device_open(busid, &dev); if (ret) xf86DrvMsg(scrnIndex, X_ERROR, "[drm] Failed to open DRM device for %s: %d\n", @@ -299,13 +316,13 @@ NVOpenNouveauDevice(struct pci_device *pci_dev, int scrnIndex, Bool probe) } static Bool -NVHasKMS(struct pci_device *pci_dev) +NVHasKMS(struct pci_device *pci_dev, struct xf86_platform_device *platform_dev) { struct nouveau_device *dev = NULL; drmVersion *version; int chipset; - dev = NVOpenNouveauDevice(pci_dev, -1, TRUE); + dev = NVOpenNouveauDevice(pci_dev, platform_dev, -1, TRUE); if (!dev) return FALSE; @@ -359,7 +376,7 @@ NVPciProbe(DriverPtr drv, int entity_num, struct pci_device *pci_dev, }; ScrnInfoPtr pScrn = NULL; - if (!NVHasKMS(pci_dev)) + if (!NVHasKMS(pci_dev, NULL)) return FALSE; pScrn = xf86ConfigPciEntity(pScrn, 0, entity_num, NVChipsets, @@ -367,7 +384,7 @@ NVPciProbe(DriverPtr drv, int entity_num, struct pci_device *pci_dev, if (!pScrn) return FALSE; - NVInitScrn(pScrn, entity_num); + NVInitScrn(pScrn, NULL, entity_num); return TRUE; } @@ -383,7 +400,7 @@ NVPlatformProbe(DriverPtr driver, if (!dev->pdev) return FALSE; - if (!NVHasKMS(dev->pdev)) + if (!NVHasKMS(dev->pdev, dev)) return FALSE; if (flags & PLATFORM_PROBE_GPU_SCREEN) @@ -397,7 +414,7 @@ NVPlatformProbe(DriverPtr driver, xf86SetEntityShared(entity_num); xf86AddEntityToScreen(scrn, entity_num); - NVInitScrn(scrn, entity_num); + NVInitScrn(scrn, dev, entity_num); return TRUE; } @@ -436,13 +453,22 @@ NVEnterVT(VT_FUNC_ARGS_DECL) { SCRN_INFO_PTR(arg); NVPtr pNv = NVPTR(pScrn); +#ifdef XF86_PDEV_SERVER_FD + NVEntPtr pNVEnt = NVEntPriv(pScrn); +#endif int ret; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVEnterVT is called.\n"); - ret = drmSetMaster(pNv->dev->fd); - if (ret) - ErrorF("Unable to get master: %s\n", strerror(errno)); +#ifdef XF86_PDEV_SERVER_FD + if (!(pNVEnt->platform_dev && + (pNVEnt->platform_dev->flags & XF86_PDEV_SERVER_FD))) +#endif + { + ret = drmSetMaster(pNv->dev->fd); + if (ret) + ErrorF("Unable to get master: %s\n", strerror(errno)); + } if (XF86_CRTC_CONFIG_PTR(pScrn)->num_crtc && !xf86SetDesiredModes(pScrn)) return FALSE; @@ -464,10 +490,19 @@ NVLeaveVT(VT_FUNC_ARGS_DECL) { SCRN_INFO_PTR(arg); NVPtr pNv = NVPTR(pScrn); +#ifdef XF86_PDEV_SERVER_FD + NVEntPtr pNVEnt = NVEntPriv(pScrn); +#endif int ret; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVLeaveVT is called.\n"); +#ifdef XF86_PDEV_SERVER_FD + if (pNVEnt->platform_dev && + (pNVEnt->platform_dev->flags & XF86_PDEV_SERVER_FD)) + return; +#endif + ret = drmDropMaster(pNv->dev->fd); if (ret && errno != EIO && errno != ENODEV) ErrorF("Error dropping master: %i(%m)\n", -errno); @@ -719,7 +754,8 @@ static Bool NVOpenDRMMaster(ScrnInfoPtr pScrn) return TRUE; } - pNv->dev = NVOpenNouveauDevice(pNv->PciInfo, pScrn->scrnIndex, FALSE); + pNv->dev = NVOpenNouveauDevice(pNv->PciInfo, pNVEnt->platform_dev, + pScrn->scrnIndex, FALSE); if (!pNv->dev) return FALSE; diff --git a/src/nv_type.h b/src/nv_type.h index e6945bc..6ee36d7 100644 --- a/src/nv_type.h +++ b/src/nv_type.h @@ -8,6 +8,7 @@ #include <stdbool.h> #include <stdint.h> #include "xf86Crtc.h" +#include "xf86platformBus.h" #if XF86_CRTC_VERSION >= 5 #define NOUVEAU_PIXMAP_SHARING 1 @@ -28,8 +29,11 @@ typedef struct _NVRec *NVPtr; typedef struct { int fd; + struct xf86_platform_device *platform_dev; } NVEntRec, *NVEntPtr; +NVEntPtr NVEntPriv(ScrnInfoPtr pScrn); + typedef struct _NVRec { uint32_t Architecture; EntityInfoPtr pEnt; commit 47f08aa6d713da4e6ae9c35ce691e790ffaed09d Author: Hans de Goede <hde...@re...> Date: Mon Mar 17 17:37:30 2014 +0100 Add a NVOpenNouveauDevice helper function This is a preparation patch for adding support for server managed fds Signed-off-by: Hans de Goede <hde...@re...> Signed-off-by: Martin Peres <mar...@fr...> diff --git a/src/nv_driver.c b/src/nv_driver.c index 5131dcd..35cc03d 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -264,13 +264,12 @@ NVInitScrn(ScrnInfoPtr pScrn, int entity_num) xf86GetNumEntityInstances(entity_num) - 1); } -static Bool -NVHasKMS(struct pci_device *pci_dev) +static struct nouveau_device * +NVOpenNouveauDevice(struct pci_device *pci_dev, int scrnIndex, Bool probe) { struct nouveau_device *dev = NULL; - drmVersion *version; char *busid; - int chipset, ret; + int ret; #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0) XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d", @@ -280,19 +279,35 @@ NVHasKMS(struct pci_device *pci_dev) pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func); #endif - ret = drmCheckModesettingSupported(busid); - if (ret) { - xf86DrvMsg(-1, X_ERROR, "[drm] KMS not enabled\n"); - free(busid); - return FALSE; + if (probe) { + ret = drmCheckModesettingSupported(busid); + if (ret) { + xf86DrvMsg(scrnIndex, X_ERROR, "[drm] KMS not enabled\n"); + free(busid); + return NULL; + } } ret = nouveau_device_open(busid, &dev); + if (ret) + xf86DrvMsg(scrnIndex, X_ERROR, + "[drm] Failed to open DRM device for %s: %d\n", + busid, ret); + free(busid); - if (ret) { - xf86DrvMsg(-1, X_ERROR, "[drm] failed to open device\n"); + return dev; +} + +static Bool +NVHasKMS(struct pci_device *pci_dev) +{ + struct nouveau_device *dev = NULL; + drmVersion *version; + int chipset; + + dev = NVOpenNouveauDevice(pci_dev, -1, TRUE); + if (!dev) return FALSE; - } /* Check the version reported by the kernel module. In theory we * shouldn't have to do this, as libdrm_nouveau will do its own checks. @@ -688,8 +703,6 @@ static Bool NVOpenDRMMaster(ScrnInfoPtr pScrn) { NVPtr pNv = NVPTR(pScrn); NVEntPtr pNVEnt = NVEntPriv(pScrn); - struct pci_device *dev = pNv->PciInfo; - char *busid; drmSetVersion sv; int err; int ret; @@ -706,23 +719,9 @@ static Bool NVOpenDRMMaster(ScrnInfoPtr pScrn) return TRUE; } -#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0) - XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d", - dev->domain, dev->bus, dev->dev, dev->func); -#else - busid = XNFprintf("pci:%04x:%02x:%02x.%d", - dev->domain, dev->bus, dev->dev, dev->func); -#endif - - ret = nouveau_device_open(busid, &pNv->dev); - if (ret) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "[drm] Failed to open DRM device for %s: %d\n", - busid, ret); - free(busid); + pNv->dev = NVOpenNouveauDevice(pNv->PciInfo, pScrn->scrnIndex, FALSE); + if (!pNv->dev) return FALSE; - } - free(busid); sv.drm_di_major = 1; sv.drm_di_minor = 1; |
From: <im...@ke...> - 2015-03-24 00:12:34
|
src/nv10_exa.c | 8 ++++---- src/nv30_exa.c | 20 ++++++++++---------- src/nv40_exa.c | 8 ++++---- src/nv50_accel.c | 8 +++++--- src/nv50_accel.h | 1 + src/nv50_exa.c | 8 ++++---- src/nv50_xv.c | 2 +- src/nv_accel_common.c | 6 +++--- src/nvc0_accel.c | 4 ++-- src/nvc0_exa.c | 2 +- 10 files changed, 35 insertions(+), 32 deletions(-) New commits: commit 212fc5354ed60ba282d5eabf468c0e2dd0d0afe6 Author: Ilia Mirkin <im...@al...> Date: Mon Mar 23 20:05:23 2015 -0400 nv50: explicitly disable ZETA buffer Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/nv50_accel.c b/src/nv50_accel.c index 5efbd19..ecad602 100644 --- a/src/nv50_accel.c +++ b/src/nv50_accel.c @@ -207,6 +207,8 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_3D(COLOR_MASK_COMMON), 1); PUSH_DATA (push, 1); + BEGIN_NV04(push, NV50_3D(ZETA_ENABLE), 1); + PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_3D(TIC_ADDRESS_HIGH), 3); PUSH_DATA (push, (pNv->scratch->offset + TIC_OFFSET) >> 32); commit 734b8404c0a1fa9ce8ee62a0d4cc5baae7c8fcdf Author: Ilia Mirkin <im...@al...> Date: Sat Mar 21 11:46:35 2015 -0400 use defined method names where available Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/nv10_exa.c b/src/nv10_exa.c index 78bc739..7daa281 100644 --- a/src/nv10_exa.c +++ b/src/nv10_exa.c @@ -697,9 +697,9 @@ NVAccelInitNV10TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0); } - BEGIN_NV04(push, SUBC_3D(0x290), 1); + BEGIN_NV04(push, NV10_3D(UNK0290), 1); PUSH_DATA (push, (0x10<<16)|1); - BEGIN_NV04(push, SUBC_3D(0x3f4), 1); + BEGIN_NV04(push, NV10_3D(UNK03F4), 1); PUSH_DATA (push, 0); BEGIN_NV04(push, NV04_GRAPH(3D, NOP), 1); @@ -707,12 +707,12 @@ NVAccelInitNV10TCL(ScrnInfoPtr pScrn) if (class != NV10_3D_CLASS) { /* For nv11, nv17 */ - BEGIN_NV04(push, SUBC_3D(0x120), 3); + BEGIN_NV04(push, SUBC_3D(NV15_3D_FLIP_SET_READ), 3); PUSH_DATA (push, 0); PUSH_DATA (push, 1); PUSH_DATA (push, 2); - BEGIN_NV04(push, SUBC_BLIT(0x120), 3); + BEGIN_NV04(push, NV15_BLIT(FLIP_SET_READ), 3); PUSH_DATA (push, 0); PUSH_DATA (push, 1); PUSH_DATA (push, 2); diff --git a/src/nv30_exa.c b/src/nv30_exa.c index 21586e9..9d63119 100644 --- a/src/nv30_exa.c +++ b/src/nv30_exa.c @@ -644,16 +644,16 @@ NVAccelInitNV30TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0); } - BEGIN_NV04(push, SUBC_3D(0x220), 1); + BEGIN_NV04(push, NV30_3D(RT_ENABLE), 1); PUSH_DATA (push, 1); - BEGIN_NV04(push, SUBC_3D(0x03b0), 1); - PUSH_DATA (push, 0x00100000); - BEGIN_NV04(push, SUBC_3D(0x1454), 1); + BEGIN_NV04(push, NV40_3D(MIPMAP_ROUNDING), 1); + PUSH_DATA (push, NV40_3D_MIPMAP_ROUNDING_MODE_DOWN); + BEGIN_NV04(push, NV30_3D(FLATSHADE_FIRST), 1); PUSH_DATA (push, 0); BEGIN_NV04(push, SUBC_3D(0x1d80), 1); PUSH_DATA (push, 3); - BEGIN_NV04(push, SUBC_3D(0x1450), 1); + BEGIN_NV04(push, NV30_3D(FP_REG_CONTROL), 1); PUSH_DATA (push, 0x00030004); /* NEW */ @@ -670,17 +670,17 @@ NVAccelInitNV30TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0); PUSH_DATA (push, 0); PUSH_DATA (push, 0); PUSH_DATA (push, 0); PUSH_DATA (push, 0); PUSH_DATA (push, 0); PUSH_DATA (push, 0); - BEGIN_NV04(push, SUBC_3D(0x120), 3); + BEGIN_NV04(push, NV30_3D(FLIP_SET_READ), 3); PUSH_DATA (push, 0); PUSH_DATA (push, 1); PUSH_DATA (push, 2); - BEGIN_NV04(push, SUBC_BLIT(0x120), 3); + BEGIN_NV04(push, NV15_BLIT(FLIP_SET_READ), 3); PUSH_DATA (push, 0); PUSH_DATA (push, 1); PUSH_DATA (push, 2); - BEGIN_NV04(push, SUBC_3D(0x1d88), 1); + BEGIN_NV04(push, NV30_3D(COORD_CONVENTIONS), 1); PUSH_DATA (push, 0x00001200); BEGIN_NV04(push, NV30_3D(MULTISAMPLE_CONTROL), 1); @@ -742,7 +742,7 @@ NVAccelInitNV30TCL(ScrnInfoPtr pScrn) * it's not needed between nouveau restarts - which suggests that * the 3D context (wherever it's stored?) survives somehow. */ - //BEGIN_NV04(push, SUBC_3D(0x1d60),1); + //BEGIN_NV04(push, NV30_3D(FP_CONTROL),1); //PUSH_DATA (push, 0x03008000); int w=4096; @@ -756,7 +756,7 @@ NVAccelInitNV30TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0x0); BEGIN_NV04(push, NV30_3D(VIEWPORT_TX_ORIGIN), 1); PUSH_DATA (push, 0); - BEGIN_NV04(push, SUBC_3D(0x0a00), 2); + BEGIN_NV04(push, NV30_3D(VIEWPORT_HORIZ), 2); PUSH_DATA (push, (w<<16) | 0); PUSH_DATA (push, (h<<16) | 0); BEGIN_NV04(push, NV30_3D(VIEWPORT_CLIP_HORIZ(0)), 2); diff --git a/src/nv40_exa.c b/src/nv40_exa.c index c9e99e0..8a1e2b5 100644 --- a/src/nv40_exa.c +++ b/src/nv40_exa.c @@ -633,13 +633,13 @@ NVAccelInitNV40TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0x0020ffff); BEGIN_NV04(push, SUBC_3D(0x1d64), 1); PUSH_DATA (push, 0x00d30000); - BEGIN_NV04(push, SUBC_3D(0x1e94), 1); - PUSH_DATA (push, 0x00000001); + BEGIN_NV04(push, NV30_3D(ENGINE), 1); + PUSH_DATA (push, NV30_3D_ENGINE_FP); /* This removes the the stair shaped tearing that i get. */ /* Verified on one G70 card that it doesn't cause regressions for people without the problem. */ /* The blob sets this up by default for NV43. */ - BEGIN_NV04(push, SUBC_3D(0x1450), 1); + BEGIN_NV04(push, NV30_3D(FP_REG_CONTROL), 1); PUSH_DATA (push, 0x0000000F); BEGIN_NV04(push, NV30_3D(VIEWPORT_TRANSLATE_X), 8); @@ -690,7 +690,7 @@ NVAccelInitNV40TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0); } - BEGIN_NV04(push, SUBC_3D(0x1d78), 1); + BEGIN_NV04(push, NV30_3D(DEPTH_CONTROL), 1); PUSH_DATA (push, 0x110); BEGIN_NV04(push, NV30_3D(RT_ENABLE), 1); diff --git a/src/nv50_accel.c b/src/nv50_accel.c index b27f67a..5efbd19 100644 --- a/src/nv50_accel.c +++ b/src/nv50_accel.c @@ -110,13 +110,13 @@ NVAccelInit2D_NV50(ScrnInfoPtr pScrn) /* Magics from nv, no clue what they do, but at least some * of them are needed to avoid crashes. */ - BEGIN_NV04(push, SUBC_2D(0x0260), 1); + BEGIN_NV04(push, NV50_2D(UNK260), 1); PUSH_DATA (push, 1); BEGIN_NV04(push, NV50_2D(CLIP_ENABLE), 1); PUSH_DATA (push, 1); BEGIN_NV04(push, NV50_2D(COLOR_KEY_ENABLE), 1); PUSH_DATA (push, 0); - BEGIN_NV04(push, SUBC_2D(0x058c), 1); + BEGIN_NV04(push, NV50_2D(UNK58C), 1); PUSH_DATA (push, 0x111); pNv->currentRop = 0xfffffffa; @@ -205,7 +205,7 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn) BEGIN_NV04(push, NV50_3D(VIEWPORT_TRANSFORM_EN), 1); PUSH_DATA (push, 0); - BEGIN_NV04(push, SUBC_3D(0x0f90), 1); + BEGIN_NV04(push, NV50_3D(COLOR_MASK_COMMON), 1); PUSH_DATA (push, 1); BEGIN_NV04(push, NV50_3D(TIC_ADDRESS_HIGH), 3); diff --git a/src/nv50_accel.h b/src/nv50_accel.h index 87c88a3..9b06e38 100644 --- a/src/nv50_accel.h +++ b/src/nv50_accel.h @@ -8,6 +8,7 @@ #include "hwdefs/nv50_texture.h" #include "hwdefs/nv_3ddefs.xml.h" #include "hwdefs/nv_m2mf.xml.h" +#include "hwdefs/nv_object.xml.h" /* subchannel assignments - graphics channel */ #define SUBC_M2MF(mthd) 0, (mthd) diff --git a/src/nv50_exa.c b/src/nv50_exa.c index 7b12985..221160d 100644 --- a/src/nv50_exa.c +++ b/src/nv50_exa.c @@ -286,9 +286,9 @@ NV50EXACopy(PixmapPtr pdpix, int srcX , int srcY, if (!PUSH_SPACE(push, 32)) return; - BEGIN_NV04(push, SUBC_2D(0x0110), 1); + BEGIN_NV04(push, SUBC_2D(NV50_GRAPH_SERIALIZE), 1); PUSH_DATA (push, 0); - BEGIN_NV04(push, SUBC_2D(0x088c), 1); + BEGIN_NV04(push, NV50_2D(BLIT_CONTROL), 1); PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_2D(BLIT_DST_X), 12); PUSH_DATA (push, dstX); @@ -837,7 +837,7 @@ NV50EXAPrepareComposite(int op, PUSH_RESET(push); PUSH_REFN (push, pNv->scratch, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR); - BEGIN_NV04(push, SUBC_2D(0x0110), 1); + BEGIN_NV04(push, SUBC_2D(NV50_GRAPH_SERIALIZE), 1); PUSH_DATA (push, 0); if (!NV50EXARenderTarget(pdpix, pdpict)) @@ -875,7 +875,7 @@ NV50EXAPrepareComposite(int op, PUSH_DATA (push, PFP_S); } - BEGIN_NV04(push, SUBC_3D(0x1334), 1); + BEGIN_NV04(push, NV50_3D(TIC_FLUSH), 1); PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_3D(BIND_TIC(2)), 1); diff --git a/src/nv50_xv.c b/src/nv50_xv.c index 909074a..1c467f4 100644 --- a/src/nv50_xv.c +++ b/src/nv50_xv.c @@ -206,7 +206,7 @@ nv50_xv_image_put(ScrnInfoPtr pScrn, BEGIN_NV04(push, NV50_3D(FP_START_ID), 1); PUSH_DATA (push, PFP_NV12); - BEGIN_NV04(push, SUBC_3D(0x1334), 1); + BEGIN_NV04(push, NV50_3D(TIC_FLUSH), 1); PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_3D(BIND_TIC(2)), 1); diff --git a/src/nv_accel_common.c b/src/nv_accel_common.c index f0c2d62..9361ce8 100644 --- a/src/nv_accel_common.c +++ b/src/nv_accel_common.c @@ -145,13 +145,13 @@ NV11SyncToVBlank(PixmapPtr ppix, BoxPtr box) head = drmmode_head(crtc); - BEGIN_NV04(push, SUBC_BLIT(0x0000012C), 1); + BEGIN_NV04(push, NV15_BLIT(FLIP_INCR_WRITE), 1); PUSH_DATA (push, 0); - BEGIN_NV04(push, SUBC_BLIT(0x00000134), 1); + BEGIN_NV04(push, NV15_BLIT(FLIP_CRTC_INCR_READ), 1); PUSH_DATA (push, head); BEGIN_NV04(push, SUBC_BLIT(0x00000100), 1); PUSH_DATA (push, 0); - BEGIN_NV04(push, SUBC_BLIT(0x00000130), 1); + BEGIN_NV04(push, NV15_BLIT(FLIP_WAIT), 1); PUSH_DATA (push, 0); } diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c index 848ca87..d2a3b93 100644 --- a/src/nvc0_accel.c +++ b/src/nvc0_accel.c @@ -180,9 +180,9 @@ NVAccelInit2D_NVC0(ScrnInfoPtr pScrn) PUSH_DATA (push, 1); BEGIN_NVC0(push, NV50_2D(COLOR_KEY_ENABLE), 1); PUSH_DATA (push, 0); - BEGIN_NVC0(push, SUBC_2D(0x0884), 1); + BEGIN_NVC0(push, NV50_2D(UNK0884), 1); PUSH_DATA (push, 0x3f); - BEGIN_NVC0(push, SUBC_2D(0x0888), 1); + BEGIN_NVC0(push, NV50_2D(UNK0888), 1); PUSH_DATA (push, 1); BEGIN_NVC0(push, NV50_2D(ROP), 1); PUSH_DATA (push, 0x55); diff --git a/src/nvc0_exa.c b/src/nvc0_exa.c index 1f33353..7aa98cf 100644 --- a/src/nvc0_exa.c +++ b/src/nvc0_exa.c @@ -290,7 +290,7 @@ NVC0EXACopy(PixmapPtr pdpix, int srcX , int srcY, BEGIN_NVC0(push, SUBC_2D(NV50_GRAPH_SERIALIZE), 1); PUSH_DATA (push, 0); - BEGIN_NVC0(push, SUBC_2D(0x088c), 1); + BEGIN_NVC0(push, NV50_2D(BLIT_CONTROL), 1); PUSH_DATA (push, 0); BEGIN_NVC0(push, NV50_2D(BLIT_DST_X), 12); PUSH_DATA (push, dstX); |
From: <im...@ke...> - 2015-08-03 18:18:45
|
man/nouveau.man | 6 ++++++ src/nouveau_dri2.c | 11 ++++++++++- src/nouveau_glamor.c | 2 +- src/nouveau_present.c | 4 ++-- src/nv_const.h | 2 ++ src/nv_driver.c | 30 ++++++++++++++++++++++++++++-- src/nv_type.h | 1 + 7 files changed, 50 insertions(+), 6 deletions(-) New commits: commit 6296145654b78518f3299bb5887f224f0d3810fd Author: Mario Kleiner <mar...@gm...> Date: Wed Jul 29 14:39:02 2015 +0200 Add Option "DRI" to allow selection of maximum DRI level. (v2) Allow user to select the maximum level of DRI implementation to use, DRI2 or DRI3. exa accel supports both DRI2 and, if the kernel supports rendernodes, also DRI3. However, DRI3 still seems to have some bugs on current implementations, and additionally it doesn't work well at all for X-Servers older than 1.16.3 due to X-Server bugs. Therefore we default to DRI2 on exa, but allow the user to enable DRI3 with this new option. nouveau's glamor accel backend currently doesn't work under DRI2 at all, so we continue to use DRI3 whenever it is supported and ignore this new option for now. Also add a bit more output about status of Present and DRI3 to aid debugging. Note: This was originally meant to be a boolean parameter, to just select between DRI3 on and off, but changed here to a DRI level to make it consistent with the same option in the released Intel-ddx. v2: Use fixed up Bool return type of nouveau_present_init(). Signed-off-by: Mario Kleiner <mar...@gm...> Cc: Ilia Mirkin <im...@al...> Cc: Emil Velikov <emi...@gm...> Cc: Martin Peres <mar...@fr...> Cc: Ben Skeggs <bs...@re...> Reviewed-by: Ilia Mirkin <im...@al...> diff --git a/man/nouveau.man b/man/nouveau.man index 129bb7f..3d5a428 100644 --- a/man/nouveau.man +++ b/man/nouveau.man @@ -125,6 +125,12 @@ that relies on correct presentation timing behaviour as defined in that specification. .br Default: 1. +.TP +.BI "Option \*qDRI\*q \*q" integer \*q +Define the maximum level of DRI to enable. Valid values are 2 or 3. +exa acceleration will honor the maximum level if it is supported. +Under glamor acceleration DRI3 is always enabled if supported, +as glamor currently does not support DRI2. Default: 2 on exa, 3 on glamor. .SH "SEE ALSO" __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) .SH AUTHORS diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c index ce6f53e..81ee9be 100644 --- a/src/nouveau_dri2.c +++ b/src/nouveau_dri2.c @@ -1134,7 +1134,16 @@ nouveau_dri3_screen_init(ScreenPtr screen) if (buf && stat(buf, &render) == 0 && master.st_mode == render.st_mode) { pNv->render_node = buf; - return dri3_screen_init(screen, &nouveau_dri3_screen_info); + if (dri3_screen_init(screen, &nouveau_dri3_screen_info)) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "DRI3 on EXA enabled\n"); + return TRUE; + } + else { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "DRI3 on EXA initialization failed\n"); + return FALSE; + } } else free(buf); #endif diff --git a/src/nouveau_glamor.c b/src/nouveau_glamor.c index b8bca17..a8e9206 100644 --- a/src/nouveau_glamor.c +++ b/src/nouveau_glamor.c @@ -240,7 +240,7 @@ nouveau_glamor_init(ScreenPtr screen) screen->SharePixmapBacking = nouveau_glamor_share_pixmap_backing; screen->SetSharedPixmapBacking = nouveau_glamor_set_shared_pixmap_backing; - xf86DrvMsg(scrn->scrnIndex, X_INFO, "[GLAMOR] initialised\n"); + xf86DrvMsg(scrn->scrnIndex, X_INFO, "[GLAMOR] initialised with DRI3\n"); pNv->Flush = nouveau_glamor_flush; return TRUE; } diff --git a/src/nv_const.h b/src/nv_const.h index f1b4e9b..3f18d23 100644 --- a/src/nv_const.h +++ b/src/nv_const.h @@ -18,6 +18,7 @@ typedef enum { OPTION_SWAP_LIMIT, OPTION_ASYNC_COPY, OPTION_ACCELMETHOD, + OPTION_DRI, } NVOpts; @@ -34,6 +35,7 @@ static const OptionInfoRec NVOptions[] = { { OPTION_SWAP_LIMIT, "SwapLimit", OPTV_INTEGER, {0}, FALSE }, { OPTION_ASYNC_COPY, "AsyncUTSDFS", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, + { OPTION_DRI, "DRI", OPTV_INTEGER, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; diff --git a/src/nv_driver.c b/src/nv_driver.c index 4218e4f..514a8bc 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -1095,6 +1095,25 @@ NVPreInit(ScrnInfoPtr pScrn, int flags) pNv->ce_enabled = xf86ReturnOptValBool(pNv->Options, OPTION_ASYNC_COPY, FALSE); + /* Define maximum allowed level of DRI implementation to use. + * We default to DRI2 on EXA for now, as DRI3 still has some + * problems. However, the max_dri_level can be only honored + * by EXA, as GLAMOR only supports DRI3 at the moment. + */ + pNv->max_dri_level = (pNv->AccelMethod == GLAMOR) ? 3 : 2; + from = X_DEFAULT; + + if (xf86GetOptValInteger(pNv->Options, OPTION_DRI, + &pNv->max_dri_level)) { + from = X_CONFIG; + if (pNv->max_dri_level < 2) + pNv->max_dri_level = 2; + if (pNv->max_dri_level > 3) + pNv->max_dri_level = 3; + } + xf86DrvMsg(pScrn->scrnIndex, from, "Allowed maximum DRI level %i.\n", + pNv->max_dri_level); + if (pNv->AccelMethod > NONE && pNv->dev->chipset >= 0x11) { from = X_DEFAULT; pNv->glx_vblank = TRUE; @@ -1474,7 +1493,13 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) xf86SetBlackWhitePixels(pScreen); - nouveau_present_init(pScreen); + if (nouveau_present_init(pScreen)) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Hardware support for Present enabled\n"); + else + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Hardware support for Present disabled\n"); + nouveau_sync_init(pScreen); nouveau_dri2_init(pScreen); if (pNv->AccelMethod == GLAMOR) { @@ -1482,7 +1507,8 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) return FALSE; } else if (pNv->AccelMethod == EXA) { - if (!nouveau_dri3_screen_init(pScreen)) + if (pNv->max_dri_level >= 3 && + !nouveau_dri3_screen_init(pScreen)) return FALSE; if (!nouveau_exa_init(pScreen)) diff --git a/src/nv_type.h b/src/nv_type.h index e6ab192..510a30c 100644 --- a/src/nv_type.h +++ b/src/nv_type.h @@ -71,6 +71,7 @@ typedef struct _NVRec { Bool has_pageflip; int swap_limit; int max_swap_limit; + int max_dri_level; ScreenBlockHandlerProcPtr BlockHandler; CreateScreenResourcesProcPtr CreateScreenResources; commit 0deb1fcc6d1099db698ff8c512a4884708a458ec Author: Mario Kleiner <mar...@gm...> Date: Wed Jul 29 14:39:01 2015 +0200 present: Fixup return type of nouveau_present_init() Make it a Bool consistently, as declared in header. Reported-by: Ilia Mirkin <im...@al...> Signed-off-by: Mario Kleiner <mar...@gm...> Reviewed-by: Ilia Mirkin <im...@al...> diff --git a/src/nouveau_present.c b/src/nouveau_present.c index 4de1e6e..699a58d 100644 --- a/src/nouveau_present.c +++ b/src/nouveau_present.c @@ -293,7 +293,7 @@ nouveau_present_fini(ScreenPtr screen) } } -int +Bool nouveau_present_init(ScreenPtr screen) { ScrnInfoPtr scrn = xf86ScreenToScrn(screen); @@ -304,7 +304,7 @@ nouveau_present_init(ScreenPtr screen) present = pNv->present = calloc(1, sizeof(*present)); if (!present) - return -ENOMEM; + return FALSE; present->info.version = PRESENT_SCREEN_INFO_VERSION; present->info.get_crtc = nouveau_present_crtc; |
From: <dar...@ke...> - 2016-06-02 02:27:26
|
src/nouveau_copy.c | 38 +++++++++++++++++++++----------------- src/nv50_exa.c | 48 +++++++++++++++++++++++++----------------------- src/nvc0_exa.c | 48 +++++++++++++++++++++++++----------------------- 3 files changed, 71 insertions(+), 63 deletions(-) New commits: commit 1da8a937be19e41c51a3d516bd98cee988bca44b Author: Ben Skeggs <bs...@re...> Date: Thu Jun 2 11:23:53 2016 +1000 exa/nv50-: fix some potential incomplete pushes I don't think these should actually be able to happen, given that we already reject the unknown formats in the Check() functions. But, just in case... Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/nv50_exa.c b/src/nv50_exa.c index 221160d..7272065 100644 --- a/src/nv50_exa.c +++ b/src/nv50_exa.c @@ -575,82 +575,84 @@ NV50EXAPictTexture(NVPtr pNv, PixmapPtr ppix, PicturePtr ppict, unsigned unit) { struct nouveau_bo *bo = nouveau_pixmap_bo(ppix); struct nouveau_pushbuf *push = pNv->pushbuf; + uint32_t format; /*XXX: Scanout buffer not tiled, someone needs to figure it out */ if (!nv50_style_tiled_pixmap(ppix)) NOUVEAU_FALLBACK("pixmap is scanout buffer\n"); - PUSH_REFN (push, bo, NOUVEAU_BO_VRAM | NOUVEAU_BO_RD); - PUSH_DATAu(push, pNv->scratch, TIC_OFFSET + (unit * 32), 8); switch (ppict->format) { case PICT_a8r8g8b8: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 8_8_8_8)); + format = _(B_C0, G_C1, R_C2, A_C3, 8_8_8_8); break; case PICT_a8b8g8r8: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 8_8_8_8)); + format = _(R_C0, G_C1, B_C2, A_C3, 8_8_8_8); break; case PICT_x8r8g8b8: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 8_8_8_8)); + format = _(B_C0, G_C1, R_C2, A_ONE, 8_8_8_8); break; case PICT_x8b8g8r8: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 8_8_8_8)); + format = _(R_C0, G_C1, B_C2, A_ONE, 8_8_8_8); break; case PICT_r5g6b5: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 5_6_5)); + format = _(B_C0, G_C1, R_C2, A_ONE, 5_6_5); break; case PICT_a8: - PUSH_DATA (push, _(A_C0, B_ZERO, G_ZERO, R_ZERO, 8)); + format = _(A_C0, B_ZERO, G_ZERO, R_ZERO, 8); break; case PICT_x1r5g5b5: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 1_5_5_5)); + format = _(B_C0, G_C1, R_C2, A_ONE, 1_5_5_5); break; case PICT_x1b5g5r5: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 1_5_5_5)); + format = _(R_C0, G_C1, B_C2, A_ONE, 1_5_5_5); break; case PICT_a1r5g5b5: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 1_5_5_5)); + format = _(B_C0, G_C1, R_C2, A_C3, 1_5_5_5); break; case PICT_a1b5g5r5: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 1_5_5_5)); + format = _(R_C0, G_C1, B_C2, A_C3, 1_5_5_5); break; case PICT_b5g6r5: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 5_6_5)); + format = _(R_C0, G_C1, B_C2, A_ONE, 5_6_5); break; case PICT_b8g8r8x8: - PUSH_DATA (push, _(A_ONE, R_C1, G_C2, B_C3, 8_8_8_8)); + format = _(A_ONE, R_C1, G_C2, B_C3, 8_8_8_8); break; case PICT_b8g8r8a8: - PUSH_DATA (push, _(A_C0, R_C1, G_C2, B_C3, 8_8_8_8)); + format = _(A_C0, R_C1, G_C2, B_C3, 8_8_8_8); break; case PICT_a2b10g10r10: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 2_10_10_10)); + format = _(R_C0, G_C1, B_C2, A_C3, 2_10_10_10); break; case PICT_x2b10g10r10: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 2_10_10_10)); + format = _(R_C0, G_C1, B_C2, A_ONE, 2_10_10_10); break; case PICT_x2r10g10b10: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 2_10_10_10)); + format = _(B_C0, G_C1, R_C2, A_ONE, 2_10_10_10); break; case PICT_a2r10g10b10: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 2_10_10_10)); + format = _(B_C0, G_C1, R_C2, A_C3, 2_10_10_10); break; case PICT_x4r4g4b4: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 4_4_4_4)); + format = _(B_C0, G_C1, R_C2, A_ONE, 4_4_4_4); break; case PICT_x4b4g4r4: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 4_4_4_4)); + format = _(R_C0, G_C1, B_C2, A_ONE, 4_4_4_4); break; case PICT_a4r4g4b4: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 4_4_4_4)); + format = _(B_C0, G_C1, R_C2, A_C3, 4_4_4_4); break; case PICT_a4b4g4r4: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 4_4_4_4)); + format = _(R_C0, G_C1, B_C2, A_C3, 4_4_4_4); break; default: NOUVEAU_FALLBACK("invalid picture format, this SHOULD NOT HAPPEN. Expect trouble.\n"); } #undef _ + PUSH_REFN (push, bo, NOUVEAU_BO_VRAM | NOUVEAU_BO_RD); + PUSH_DATAu(push, pNv->scratch, TIC_OFFSET + (unit * 32), 8); + PUSH_DATA (push, format); PUSH_DATA (push, bo->offset); PUSH_DATA (push, (bo->offset >> 32) | (bo->config.nv50.tile_mode << 18) | diff --git a/src/nvc0_exa.c b/src/nvc0_exa.c index 7aa98cf..6add60b 100644 --- a/src/nvc0_exa.c +++ b/src/nvc0_exa.c @@ -574,82 +574,84 @@ NVC0EXAPictTexture(NVPtr pNv, PixmapPtr ppix, PicturePtr ppict, unsigned unit) { struct nouveau_bo *bo = nouveau_pixmap_bo(ppix); struct nouveau_pushbuf *push = pNv->pushbuf; + uint32_t format; /*XXX: Scanout buffer not tiled, someone needs to figure it out */ if (!nv50_style_tiled_pixmap(ppix)) NOUVEAU_FALLBACK("pixmap is scanout buffer\n"); - PUSH_REFN (push, bo, NOUVEAU_BO_VRAM | NOUVEAU_BO_RD); - PUSH_DATAu(push, pNv->scratch, TIC_OFFSET + (unit * 32), 8); switch (ppict->format) { case PICT_a8r8g8b8: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 8_8_8_8)); + format = _(B_C0, G_C1, R_C2, A_C3, 8_8_8_8); break; case PICT_a8b8g8r8: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 8_8_8_8)); + format = _(R_C0, G_C1, B_C2, A_C3, 8_8_8_8); break; case PICT_x8r8g8b8: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 8_8_8_8)); + format = _(B_C0, G_C1, R_C2, A_ONE, 8_8_8_8); break; case PICT_x8b8g8r8: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 8_8_8_8)); + format = _(R_C0, G_C1, B_C2, A_ONE, 8_8_8_8); break; case PICT_r5g6b5: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 5_6_5)); + format = _(B_C0, G_C1, R_C2, A_ONE, 5_6_5); break; case PICT_a8: - PUSH_DATA (push, _(A_C0, B_ZERO, G_ZERO, R_ZERO, 8)); + format = _(A_C0, B_ZERO, G_ZERO, R_ZERO, 8); break; case PICT_x1r5g5b5: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 1_5_5_5)); + format = _(B_C0, G_C1, R_C2, A_ONE, 1_5_5_5); break; case PICT_x1b5g5r5: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 1_5_5_5)); + format = _(R_C0, G_C1, B_C2, A_ONE, 1_5_5_5); break; case PICT_a1r5g5b5: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 1_5_5_5)); + format = _(B_C0, G_C1, R_C2, A_C3, 1_5_5_5); break; case PICT_a1b5g5r5: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 1_5_5_5)); + format = _(R_C0, G_C1, B_C2, A_C3, 1_5_5_5); break; case PICT_b5g6r5: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 5_6_5)); + format = _(R_C0, G_C1, B_C2, A_ONE, 5_6_5); break; case PICT_b8g8r8x8: - PUSH_DATA (push, _(A_ONE, R_C1, G_C2, B_C3, 8_8_8_8)); + format = _(A_ONE, R_C1, G_C2, B_C3, 8_8_8_8); break; case PICT_b8g8r8a8: - PUSH_DATA (push, _(A_C0, R_C1, G_C2, B_C3, 8_8_8_8)); + format = _(A_C0, R_C1, G_C2, B_C3, 8_8_8_8); break; case PICT_a2b10g10r10: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 2_10_10_10)); + format = _(R_C0, G_C1, B_C2, A_C3, 2_10_10_10); break; case PICT_x2b10g10r10: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 2_10_10_10)); + format = _(R_C0, G_C1, B_C2, A_ONE, 2_10_10_10); break; case PICT_x2r10g10b10: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 2_10_10_10)); + format = _(B_C0, G_C1, R_C2, A_ONE, 2_10_10_10); break; case PICT_a2r10g10b10: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 2_10_10_10)); + format = _(B_C0, G_C1, R_C2, A_C3, 2_10_10_10); break; case PICT_x4r4g4b4: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_ONE, 4_4_4_4)); + format = _(B_C0, G_C1, R_C2, A_ONE, 4_4_4_4); break; case PICT_x4b4g4r4: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_ONE, 4_4_4_4)); + format = _(R_C0, G_C1, B_C2, A_ONE, 4_4_4_4); break; case PICT_a4r4g4b4: - PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 4_4_4_4)); + format = _(B_C0, G_C1, R_C2, A_C3, 4_4_4_4); break; case PICT_a4b4g4r4: - PUSH_DATA (push, _(R_C0, G_C1, B_C2, A_C3, 4_4_4_4)); + format = _(R_C0, G_C1, B_C2, A_C3, 4_4_4_4); break; default: NOUVEAU_FALLBACK("invalid picture format, this SHOULD NOT HAPPEN. Expect trouble.\n"); } #undef _ + PUSH_REFN (push, bo, NOUVEAU_BO_VRAM | NOUVEAU_BO_RD); + PUSH_DATAu(push, pNv->scratch, TIC_OFFSET + (unit * 32), 8); + PUSH_DATA (push, format); PUSH_DATA (push, bo->offset); PUSH_DATA (push, (bo->offset >> 32) | (bo->config.nvc0.tile_mode << 18) | commit bb57f9af9d179af0962456dca369953521ea8c2c Author: Ben Skeggs <bs...@re...> Date: Thu Jun 2 10:17:58 2016 +1000 fix use of out-of-scope data Reported by Coverity. Signed-off-by: Ben Skeggs <bs...@re...> diff --git a/src/nouveau_copy.c b/src/nouveau_copy.c index d0b868d..e152a53 100644 --- a/src/nouveau_copy.c +++ b/src/nouveau_copy.c @@ -50,8 +50,7 @@ nouveau_copy_init(ScreenPtr pScreen) }, *method = methods; ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); NVPtr pNv = NVPTR(pScrn); - void *data; - int ret, size; + int ret; if (pNv->AccelMethod == NONE) { xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, @@ -65,30 +64,35 @@ nouveau_copy_init(ScreenPtr pScreen) pNv->dev->chipset == 0xaa || pNv->dev->chipset == 0xac) return FALSE; - data = &(struct nv04_fifo) { - .vram = NvDmaFB, - .gart = NvDmaTT, - }; - size = sizeof(struct nv04_fifo); + + ret = nouveau_object_new(&pNv->dev->object, 0, + NOUVEAU_FIFO_CHANNEL_CLASS, + &(struct nv04_fifo) { + .vram = NvDmaFB, + .gart = NvDmaTT, + }, sizeof(struct nv04_fifo), + &pNv->ce_channel); break; case NV_FERMI: - data = &(struct nvc0_fifo) {}; - size = sizeof(struct nvc0_fifo); + ret = nouveau_object_new(&pNv->dev->object, 0, + NOUVEAU_FIFO_CHANNEL_CLASS, + &(struct nvc0_fifo) { + }, sizeof(struct nvc0_fifo), + &pNv->ce_channel); break; case NV_KEPLER: - data = &(struct nve0_fifo) { - .engine = NVE0_FIFO_ENGINE_CE0 | - NVE0_FIFO_ENGINE_CE1, - }; - size = sizeof(struct nvc0_fifo); + ret = nouveau_object_new(&pNv->dev->object, 0, + NOUVEAU_FIFO_CHANNEL_CLASS, + &(struct nve0_fifo) { + .engine = NVE0_FIFO_ENGINE_CE0 | + NVE0_FIFO_ENGINE_CE1, + }, sizeof(struct nve0_fifo), + &pNv->ce_channel); break; default: return FALSE; } - ret = nouveau_object_new(&pNv->dev->object, 0, - NOUVEAU_FIFO_CHANNEL_CLASS, data, size, - &pNv->ce_channel); if (ret) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[COPY] error allocating channel: %d\n", ret); |
From: <im...@ke...> - 2018-02-28 00:50:06
|
src/nouveau_dri2.c | 5 ++++- src/nouveau_xv.c | 11 +++++++++-- src/nv50_xv.c | 3 ++- src/nvc0_xv.c | 3 ++- 4 files changed, 17 insertions(+), 5 deletions(-) New commits: commit 6e2b4bed7b226dce262c7e14f72a29b003791be8 Author: Ilia Mirkin <im...@al...> Date: Sun Feb 4 13:50:29 2018 -0500 nv50/xv: add support for depth 30 xv output Ostensibly it should probably be looking at the pixmap format. However it's always the window pixmap, so we can assume it's what we expect. Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index 4b939f7..a7ec21a 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -112,6 +112,13 @@ XF86VideoFormatRec NVFormats[NUM_FORMATS_ALL] = {15, DirectColor}, {16, DirectColor}, {24, DirectColor} }; +#define NUM_FORMATS_NV50 8 +XF86VideoFormatRec NV50Formats[NUM_FORMATS_NV50] = +{ + {15, TrueColor}, {16, TrueColor}, {24, TrueColor}, {30, TrueColor}, + {15, DirectColor}, {16, DirectColor}, {24, DirectColor}, {30, DirectColor} +}; + #define NUM_NV04_OVERLAY_ATTRIBUTES 4 XF86AttributeRec NV04OverlayAttributes[NUM_NV04_OVERLAY_ATTRIBUTES] = { @@ -2087,8 +2094,8 @@ NV50SetupTexturedVideo (ScreenPtr pScreen) adapt->name = "Nouveau GeForce 8/9 Textured Video"; adapt->nEncodings = 1; adapt->pEncodings = &DummyEncodingNV50; - adapt->nFormats = NUM_FORMATS_ALL; - adapt->pFormats = NVFormats; + adapt->nFormats = NUM_FORMATS_NV50; + adapt->pFormats = NV50Formats; adapt->nPorts = NUM_TEXTURE_PORTS; adapt->pPortPrivates = (DevUnion*)(&adapt[1]); diff --git a/src/nv50_xv.c b/src/nv50_xv.c index b2541b9..ba01c99 100644 --- a/src/nv50_xv.c +++ b/src/nv50_xv.c @@ -91,8 +91,9 @@ nv50_xv_image_put(ScrnInfoPtr pScrn, BEGIN_NV04(push, NV50_3D(RT_ADDRESS_HIGH(0)), 5); PUSH_DATA (push, dst->offset >> 32); PUSH_DATA (push, dst->offset); - switch (ppix->drawable.bitsPerPixel) { + switch (ppix->drawable.depth) { case 32: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRA8_UNORM); break; + case 30: PUSH_DATA (push, NV50_SURFACE_FORMAT_RGB10_A2_UNORM); break; case 24: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRX8_UNORM); break; case 16: PUSH_DATA (push, NV50_SURFACE_FORMAT_B5G6R5_UNORM); break; case 15: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGR5_X1_UNORM); break; diff --git a/src/nvc0_xv.c b/src/nvc0_xv.c index 5cecbf5..8842148 100644 --- a/src/nvc0_xv.c +++ b/src/nvc0_xv.c @@ -89,8 +89,9 @@ nvc0_xv_image_put(ScrnInfoPtr pScrn, PUSH_DATA (push, dst->offset); PUSH_DATA (push, ppix->drawable.width); PUSH_DATA (push, ppix->drawable.height); - switch (ppix->drawable.bitsPerPixel) { + switch (ppix->drawable.depth) { case 32: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRA8_UNORM); break; + case 30: PUSH_DATA (push, NV50_SURFACE_FORMAT_RGB10_A2_UNORM); break; case 24: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRX8_UNORM); break; case 16: PUSH_DATA (push, NV50_SURFACE_FORMAT_B5G6R5_UNORM); break; case 15: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGR5_X1_UNORM); break; commit ea83b9bd8c88dad67e6494031f1f65eed823b6f1 Author: Ilia Mirkin <im...@al...> Date: Sun Dec 31 02:22:27 2017 -0500 dri3: remove bogus condition for creating pixmap Not clear what the depth % 8 was trying to protect against, but it was breaking 30bpp visuals with DRI3. Add it in to ensure that bitsPerPixel % 8 is 0, since there is plenty of bpp/8 math in the driver. Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c index cbb7b2a..ac0ca09 100644 --- a/src/nouveau_dri2.c +++ b/src/nouveau_dri2.c @@ -1076,13 +1076,16 @@ static PixmapPtr nouveau_dri3_pixmap_from_fd(ScreenPtr screen, int fd, CARD16 wi struct nouveau_bo *bo = NULL; struct nouveau_pixmap *nvpix; - if (depth < 8 || depth > 32 || depth % 8) + if (depth < 8 || depth > 32) return NULL; pixmap = screen->CreatePixmap(screen, 0, 0, depth, 0); if (!pixmap) return NULL; + if (pixmap->drawable.bitsPerPixel % 8) + goto free_pixmap; + if (!screen->ModifyPixmapHeader(pixmap, width, height, 0, 0, stride, NULL)) goto free_pixmap; |
From: <im...@ke...> - 2018-12-09 20:26:19
|
src/drmmode_display.c | 3 ++- src/nv_driver.c | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) New commits: commit 8dd1118369460e03ab4963987901dc9e13a2d53d Author: Mario Kleiner <mar...@gm...> Date: Tue Jun 12 17:58:06 2018 +0200 Fix colormap handling at screen depth 30. (v2) The various clut handling functions like a setup consistent with the x-screen color depth. Otherwise we observe improper sampling in the gamma tables at depth 30. Tested at depths 16, 24 and 30 and tested at depths 24 and 30 that xgamma and gamma table animations work, and with measurement equipment to make sure identity gamma ramps actually are identity mappings at the output. v2: Also deal with X-Server 1.19 and earlier, which as of v1.19.6 lack a fix to color palette handling and can not deal with depths/bpc > 24/8 bpc. On < 1.20 we skip xf86HandleColormaps() setup at > 8 bpc. This disables color palette handling on such servers at > 8 bpc, but still keeps RandR gamma table handling intact. Tested on 1.19.6 and 1.20.0 to do the right thing. Signed-off-by: Mario Kleiner <mar...@gm...> Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/nv_driver.c b/src/nv_driver.c index 32062eb..a5d50c1 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -1565,11 +1565,14 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) /* * Initialize colormap layer. - * Must follow initialization of the default colormap + * Must follow initialization of the default colormap. + * X-Server < 1.20 mishandles > 256 slots / > 8 bpc color maps, so skip + * color map setup on old servers at > 8 bpc. Gamma luts still work. */ - if (xf86_config->num_crtc && - !xf86HandleColormaps(pScreen, 256, 8, NVLoadPalette, - NULL, CMAP_PALETTED_TRUECOLOR)) + if (xf86_config->num_crtc && (pScrn->rgbBits <= 8 || + XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,20,0,0,0)) && + !xf86HandleColormaps(pScreen, 1 << pScrn->rgbBits, pScrn->rgbBits, + NVLoadPalette, NULL, CMAP_PALETTED_TRUECOLOR)) return FALSE; /* Report any unused options (only for the first generation) */ commit c9ce4b8e86525b6e0ecc814b2c5ebb242fb1f107 Author: Ilia Mirkin <im...@al...> Date: Sun Dec 9 13:40:55 2018 -0500 drmmode: provide better error when failing to set gamma Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 04a0b57..ef38de9 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -678,7 +678,8 @@ drmmode_gamma_set(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue, size, red, green, blue); if (ret != 0) { xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, - "failed to set gamma: %s\n", strerror(-ret)); + "failed to set gamma with %d entries: %s\n", + size, strerror(-ret)); } } |
From: <im...@ke...> - 2019-01-21 02:46:33
|
src/nouveau_xv.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) New commits: commit 5233f3c84a436e01dabac531c2615e0e9af5f4ac Author: Rhys Kidd <rhy...@gm...> Date: Sun Jan 20 21:31:19 2019 -0500 xv: Avoid shadowed declaration of 'int ret' in NVPutImage Warning reported by gcc 8.2: nouveau_xv.c: In function ‘NVPutImage’: nouveau_xv.c:1369:7: warning: declaration of ‘ret’ shadows a previous local [-Wshadow] int ret = BadImplementation; ^~~ nouveau_xv.c:1073:6: note: shadowed declaration is here int ret, i; ^~~ Fixes: a50bba6 ("xv: misc cleanups") Cc: Ben Skeggs <bs...@re...> Signed-off-by: Rhys Kidd <rhy...@gm...> diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index e49b5ce..ddb5a99 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -1366,7 +1366,7 @@ CPU_copy: pPriv->currentBuffer ^= 1; } else if (action_flags & USE_TEXTURE) { - int ret = BadImplementation; + ret = BadImplementation; if (pNv->Architecture == NV_ARCH_30) { ret = NV30PutTextureImage(pScrn, pPriv->video_mem, commit 22dd49f60be54c5649a9e80c87c9bfc99e2974b8 Author: Rhys Kidd <rhy...@gm...> Date: Sun Jan 20 21:31:18 2019 -0500 xv: Avoid shadowed declaration of 'int i' in NVPutImage int i is accessed outside immediate scope so leave declaration at the highest common scope level: 1073: int ret, i; ... // Highest common scope ... 1193: if (newTTSize <= destination_buffer->size) { ... // Used in this scope ... 1248: } else { ... // Used in this scope ... 1316: } // Not used in this scope Warning reported by gcc 8.2: nouveau_xv.c: In function ‘NVPutImage’: nouveau_xv.c:1195:7: warning: declaration of ‘i’ shadows a previous local [-Wshadow] int i = 0; ^ nouveau_xv.c:1073:11: note: shadowed declaration is here int ret, i; ^ Signed-off-by: Rhys Kidd <rhy...@gm...> diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index 3258ef7..e49b5ce 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -1192,7 +1192,6 @@ NVPutImage(ScrnInfoPtr pScrn, short src_x, short src_y, short drw_x, if (newTTSize <= destination_buffer->size) { unsigned char *dst; - int i = 0; /* Upload to GART */ nouveau_bo_map(destination_buffer, NOUVEAU_BO_WR, pNv->client); |
From: <im...@ke...> - 2019-01-24 02:17:40
|
src/nouveau_present.c | 5 +---- src/nv_include.h | 1 - 2 files changed, 1 insertion(+), 5 deletions(-) New commits: commit ca13913aaf7e3995c3b49d3d80aad7e6cb33291a Author: Ilia Mirkin <im...@al...> Date: Wed Jan 23 00:29:51 2019 -0500 Revert "wfb: Fix missing init function decls behind FB_ACCESS_WRAPPER" This reverts commit d7ba24fb6e4fce43adc3c73369c5d1035ae080a9. When built and run against Xorg 1.20.3, part way through init, I got an error about wfbPictureInit not existing despite not having wfb_enabled set. Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/nv_include.h b/src/nv_include.h index 6fdeeab..de55570 100644 --- a/src/nv_include.h +++ b/src/nv_include.h @@ -38,7 +38,6 @@ #include "dixstruct.h" #include "scrnintstr.h" -#define FB_ACCESS_WRAPPER #include "fb.h" #include "xf86cmap.h" commit fb2d4d27837ebf3ae2fdcf091495f52d2ad8c822 Author: Ilia Mirkin <im...@al...> Date: Wed Jan 23 00:28:05 2019 -0500 present: rotated crtc's work fine The "pick best" logic takes rotation into account. However flipping a rotated CRTC can't work, so we disable that. Signed-off-by: Ilia Mirkin <im...@al...> diff --git a/src/nouveau_present.c b/src/nouveau_present.c index ebd5fcf..936475e 100644 --- a/src/nouveau_present.c +++ b/src/nouveau_present.c @@ -46,9 +46,6 @@ nouveau_present_crtc(WindowPtr window) if (!crtc) return NULL; - if (crtc->rotatedData) - return NULL; - return crtc->randr_crtc; } @@ -152,7 +149,7 @@ nouveau_present_flip_check(RRCrtcPtr rrcrtc, WindowPtr window, ScrnInfoPtr scrn = xf86ScreenToScrn(window->drawable.pScreen); xf86CrtcPtr crtc = rrcrtc->devPrivate; - if (!scrn->vtSema || !drmmode_crtc_on(crtc)) + if (!scrn->vtSema || !drmmode_crtc_on(crtc) || crtc->rotatedData) return FALSE; return TRUE; |
From: GitLab M. <git...@ke...> - 2023-10-11 20:41:10
|
.gitlab-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) New commits: commit 827f1e2d2b336ea7d65cf1c8117dd9c34e876e7d Author: Alan Coopersmith <ala...@or...> Date: Thu Oct 5 17:10:21 2023 -0700 gitlab CI: ensure libtool is installed in build container Signed-off-by: Alan Coopersmith <ala...@or...> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d2eb310..5c576c3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ # Please see the ci-templates documentation for details: # https://freedesktop.pages.freedesktop.org/ci-templates/ -.templates_sha: &template_sha 34f4ade99434043f88e164933f570301fd18b125 # see https://docs.gitlab.com/ee/ci/yaml/#includefile +.templates_sha: &template_sha 25e8e9f020880aa35fffe3d6b259b933f0f9449f # see https://docs.gitlab.com/ee/ci/yaml/#includefile include: @@ -30,8 +30,8 @@ variables: # The tag should be updated each time the list of packages is updated. # Changing a tag forces the associated image to be rebuilt. # Note: the tag has no meaning, we use a date format purely for readability - FDO_DISTRIBUTION_TAG: '2022-01-22.0' - FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake make xorg-util-macros xorgproto xorg-server-devel pixman libdrm libpciaccess systemd-libs' + FDO_DISTRIBUTION_TAG: '2023-10-05.0' + FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake make libtool xorg-util-macros xorgproto xorg-server-devel pixman libdrm libpciaccess systemd-libs' # commit 9f733098b3c9f65bf5896f248cdf4c3b69ace4e5 Author: Alan Coopersmith <ala...@or...> Date: Thu Jul 28 17:30:21 2022 -0700 gitlab CI: stop requiring Signed-off-by in commits Signed-off-by: Alan Coopersmith <ala...@or...> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee8836d..d2eb310 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -35,14 +35,14 @@ variables: # -# Verify that commit messages are as expected, signed-off, etc. +# Verify that commit messages are as expected # check-commits: extends: - .fdo.ci-fairy stage: prep script: - - ci-fairy check-commits --signed-off-by --junit-xml=results.xml + - ci-fairy check-commits --junit-xml=results.xml except: - master@xorg/driver/xf86-video-nouveau variables: |