summaryrefslogtreecommitdiff
path: root/source/x/mesa/patches/mesa-7.9-libdrm-2.4.23-nouveau-api.patch
blob: d0ce04d2682ae7a630c1baae061920c23bf12502 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
diff -ur a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c
--- a/src/gallium/drivers/nouveau/nouveau_screen.c	2010-10-02 00:51:28.000000000 +0200
+++ b/src/gallium/drivers/nouveau/nouveau_screen.c	2010-12-11 18:18:20.527000045 +0100
@@ -236,7 +236,7 @@
 	int ret;
 
 	ret = nouveau_channel_alloc(dev, 0xbeef0201, 0xbeef0202,
-				    &screen->channel);
+				    512*1024, &screen->channel);
 	if (ret)
 		return ret;
 	screen->device = dev;
diff -ur a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.c	2010-10-05 03:58:00.000000000 +0200
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c	2010-12-11 18:18:20.528000045 +0100
@@ -129,7 +129,7 @@
 
 	/* Allocate a hardware channel. */
 	ret = nouveau_channel_alloc(context_dev(ctx), 0xbeef0201, 0xbeef0202,
-				    &nctx->hw.chan);
+				    512*1024, &nctx->hw.chan);
 	if (ret) {
 		nouveau_error("Error initializing the FIFO.\n");
 		return GL_FALSE;
Nur in b/src/mesa/drivers/dri/nouveau: nouveau_context.c.orig.
diff -ur a/src/mesa/drivers/dri/nouveau/nouveau_surface.c b/src/mesa/drivers/dri/nouveau/nouveau_surface.c
--- a/src/mesa/drivers/dri/nouveau/nouveau_surface.c	2010-04-27 23:41:21.000000000 +0200
+++ b/src/mesa/drivers/dri/nouveau/nouveau_surface.c	2010-12-11 18:09:19.750000046 +0100
@@ -34,8 +34,8 @@
 		      unsigned flags, unsigned format,
 		      unsigned width, unsigned height)
 {
-	unsigned tile_mode, cpp = _mesa_get_format_bytes(format);
-	int ret;
+	unsigned tile_mode = 0, tile_flags = 0;
+	int ret, cpp = _mesa_get_format_bytes(format);
 
 	nouveau_bo_ref(NULL, &s->bo);
 
@@ -51,13 +51,21 @@
 	if (layout == TILED) {
 		s->pitch = align(s->pitch, 256);
 		tile_mode = s->pitch;
+
+		if (cpp == 4)
+			tile_flags = NOUVEAU_BO_TILE_32BPP;
+		else if (cpp == 2)
+			tile_flags = NOUVEAU_BO_TILE_16BPP;
+
+		if (_mesa_get_format_bits(format, GL_DEPTH_BITS))
+			tile_flags |= NOUVEAU_BO_TILE_ZETA;
+
 	} else {
 		s->pitch = align(s->pitch, 64);
-		tile_mode = 0;
 	}
 
 	ret = nouveau_bo_new_tile(context_dev(ctx), flags, 0, s->pitch * height,
-				  tile_mode, 0, &s->bo);
+				  tile_mode, tile_flags, &s->bo);
 	assert(!ret);
 }
 
diff -ur a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c
--- a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c	2010-10-05 03:58:00.000000000 +0200
+++ b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c	2010-12-11 18:18:20.528000045 +0100
@@ -32,7 +32,7 @@
 
 /* Arbitrary pushbuf length we can assume we can get with a single
  * WAIT_RING. */
-#define PUSHBUF_DWORDS 2048
+#define PUSHBUF_DWORDS 65536
 
 /* Functions to set up struct nouveau_array_state from something like
  * a GL array or index buffer. */
diff -ur a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
--- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c	2010-10-05 03:58:00.000000000 +0200
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c	2010-12-11 18:15:17.756000046 +0100
@@ -64,8 +64,8 @@
 
 	if (!nfb->lma_bo || nfb->lma_bo->size != size) {
 		nouveau_bo_ref(NULL, &nfb->lma_bo);
-		nouveau_bo_new(context_dev(ctx), NOUVEAU_BO_VRAM, 0, size,
-			       &nfb->lma_bo);
+		nouveau_bo_new_tile(context_dev(ctx), NOUVEAU_BO_VRAM, 0, size,
+				    0, NOUVEAU_BO_TILE_ZETA, &nfb->lma_bo);
 	}
 
 	nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET,