commit 209df22

Michael Forney  ·  2014-01-31 12:14:47 +0000 UTC
parent d324af4
nouveau: Combine nvc0_2d_{src,dst} into nvc0_2d_use_buffer
1 files changed,  +17, -31
+17, -31
 1@@ -391,47 +391,31 @@ bool renderer_set_target(struct wld_renderer * base,
 2     return true;
 3 }
 4 
 5-static inline void nvc0_2d_dst(struct nouveau_renderer * renderer,
 6-                               struct nouveau_buffer * buffer, uint32_t format)
 7+static inline void nvc0_2d_use_buffer(struct nouveau_renderer * renderer,
 8+                                      struct nouveau_buffer * buffer,
 9+                                      uint16_t format_method, uint16_t format)
10 {
11+    uint32_t access = format == NV50_2D_SRC_FORMAT ? NOUVEAU_BO_RD
12+                                                   : NOUVEAU_BO_WR;
13 
14-    if (buffer->bo->config.nvc0.memtype)
15-    {
16-        nvc0_2d(renderer->pushbuf, NV50_2D_DST_FORMAT, 5,
17-                format, 0, buffer->bo->config.nvc0.tile_mode, 1, 0);
18-    }
19-    else
20-    {
21-        nvc0_2d(renderer->pushbuf, NV50_2D_DST_FORMAT, 2, format, 1);
22-        nvc0_2d(renderer->pushbuf, NV50_2D_DST_PITCH, 1, buffer->base.pitch);
23-    }
24+    nvc0_2d_inline(renderer->pushbuf, format_method, format);
25 
26-    nvc0_2d(renderer->pushbuf, NV50_2D_DST_WIDTH, 4,
27-            buffer->base.width, buffer->base.height,
28-            buffer->bo->offset >> 32, buffer->bo->offset);
29-    nouveau_bufctx_refn(renderer->bufctx, 0, buffer->bo,
30-                        NOUVEAU_BO_VRAM | NOUVEAU_BO_WR);
31-}
32-
33-static inline void nvc0_2d_src(struct nouveau_renderer * renderer,
34-                               struct nouveau_buffer * buffer, uint32_t format)
35-{
36     if (buffer->bo->config.nvc0.memtype)
37     {
38-        nvc0_2d(renderer->pushbuf, NV50_2D_SRC_FORMAT, 5,
39-                format, 0, buffer->bo->config.nvc0.tile_mode, 1, 0);
40+        nvc0_2d(renderer->pushbuf, format_method + 0x04, 2,
41+                0, buffer->bo->config.nvc0.tile_mode);
42     }
43     else
44     {
45-        nvc0_2d(renderer->pushbuf, NV50_2D_SRC_FORMAT, 2, format, 1);
46-        nvc0_2d(renderer->pushbuf, NV50_2D_SRC_PITCH, 1, buffer->base.pitch);
47+        nvc0_2d_inline(renderer->pushbuf, format_method + 0x04, 1);
48+        nvc0_2d(renderer->pushbuf, format_method + 0x14, 1, buffer->base.pitch);
49     }
50 
51-    nvc0_2d(renderer->pushbuf, NV50_2D_SRC_WIDTH, 4,
52+    nvc0_2d(renderer->pushbuf, format_method + 0x18, 4,
53             buffer->base.width, buffer->base.height,
54             buffer->bo->offset >> 32, buffer->bo->offset);
55     nouveau_bufctx_refn(renderer->bufctx, 0, buffer->bo,
56-                        NOUVEAU_BO_VRAM | NOUVEAU_BO_RD);
57+                        NOUVEAU_BO_VRAM | access);
58 }
59 
60 void renderer_fill_rectangle(struct wld_renderer * base, uint32_t color,
61@@ -447,7 +431,8 @@ void renderer_fill_rectangle(struct wld_renderer * base, uint32_t color,
62     format = nvc0_format(renderer->target->base.format);
63 
64     nouveau_bufctx_reset(renderer->bufctx, 0);
65-    nvc0_2d_dst(renderer, renderer->target, format);
66+    nvc0_2d_use_buffer(renderer, renderer->target,
67+                       NV50_2D_DST_FORMAT, format);
68     nvc0_2d(renderer->pushbuf, NV50_2D_OPERATION, 1, NV50_2D_OPERATION_SRCCOPY);
69     nvc0_2d(renderer->pushbuf, NV50_2D_DRAW_SHAPE, 3,
70             NV50_2D_DRAW_SHAPE_RECTANGLES, format, color);
71@@ -481,8 +466,9 @@ void renderer_copy_rectangle(struct wld_renderer * base,
72     dst_format = nvc0_format(renderer->target->base.format);
73 
74     nouveau_bufctx_reset(renderer->bufctx, 0);
75-    nvc0_2d_src(renderer, buffer, src_format);
76-    nvc0_2d_dst(renderer, renderer->target, dst_format);
77+    nvc0_2d_use_buffer(renderer, buffer, NV50_2D_SRC_FORMAT, src_format);
78+    nvc0_2d_use_buffer(renderer, renderer->target,
79+                       NV50_2D_DST_FORMAT, dst_format);
80     nvc0_2d(renderer->pushbuf, NV50_2D_OPERATION, 1, NV50_2D_OPERATION_SRCCOPY);
81     nouveau_pushbuf_bufctx(renderer->pushbuf, renderer->bufctx);
82