Mesa (master): r300g: inline some of the pipe_buffer_map/unmap calls

Marek Olšák mareko at kemper.freedesktop.org
Tue Feb 15 00:20:18 UTC 2011


Module: Mesa
Branch: master
Commit: 56029ce52bafbc51b5b6660383767257b7770cd7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=56029ce52bafbc51b5b6660383767257b7770cd7

Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Feb 15 01:17:29 2011 +0100

r300g: inline some of the pipe_buffer_map/unmap calls

---

 src/gallium/drivers/r300/r300_render.c |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index efad9fa..cdca74e 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -389,9 +389,8 @@ static void r300_draw_arrays_immediate(struct r300_context *r300,
     unsigned stride[PIPE_MAX_ATTRIBS];
 
     /* Mapped vertex buffers. */
-    uint32_t* map[PIPE_MAX_ATTRIBS];
+    uint32_t* map[PIPE_MAX_ATTRIBS] = {0};
     uint32_t* mapelem[PIPE_MAX_ATTRIBS];
-    struct pipe_transfer* transfer[PIPE_MAX_ATTRIBS] = {0};
 
     CS_LOCALS(r300);
 
@@ -408,12 +407,10 @@ static void r300_draw_arrays_immediate(struct r300_context *r300,
         stride[i] = vbuf->stride / 4;
 
         /* Map the buffer. */
-        if (!transfer[vbi]) {
-            map[vbi] = (uint32_t*)pipe_buffer_map(&r300->context,
-                                                  r300->vbuf_mgr->real_vertex_buffer[vbi],
-                                                  PIPE_TRANSFER_READ |
-                                                  PIPE_TRANSFER_UNSYNCHRONIZED,
-						  &transfer[vbi]);
+        if (!map[vbi]) {
+            map[vbi] = (uint32_t*)r300->rws->buffer_map(
+                r300_resource(r300->vbuf_mgr->real_vertex_buffer[vbi])->buf,
+                r300->cs, PIPE_TRANSFER_READ | PIPE_TRANSFER_UNSYNCHRONIZED);
             map[vbi] += (vbuf->buffer_offset / 4) + stride[i] * start;
         }
         mapelem[i] = map[vbi] + (velem->src_offset / 4);
@@ -439,9 +436,9 @@ static void r300_draw_arrays_immediate(struct r300_context *r300,
     for (i = 0; i < vertex_element_count; i++) {
         vbi = r300->velems->velem[i].vertex_buffer_index;
 
-        if (transfer[vbi]) {
-            pipe_buffer_unmap(&r300->context, transfer[vbi]);
-            transfer[vbi] = NULL;
+        if (map[vbi]) {
+            r300->rws->buffer_unmap(r300_resource(r300->vbuf_mgr->real_vertex_buffer[vbi])->buf);
+            map[vbi] = NULL;
         }
     }
 }
@@ -658,12 +655,11 @@ static void r300_draw_elements(struct r300_context *r300, int indexBias,
     /* Fallback for misaligned ushort indices. */
     if (indexSize == 2 && (start & 1) &&
         !r300_resource(indexBuffer)->b.user_ptr) {
-        struct pipe_transfer *transfer;
-
-        uint16_t *ptr = pipe_buffer_map(&r300->context, indexBuffer,
-                                        PIPE_TRANSFER_READ |
-                                        PIPE_TRANSFER_UNSYNCHRONIZED,
-                                        &transfer);
+        /* If we got here, then orgIndexBuffer == indexBuffer. */
+        uint16_t *ptr = r300->rws->buffer_map(r300_resource(orgIndexBuffer)->buf,
+                                              r300->cs,
+                                              PIPE_TRANSFER_READ |
+                                              PIPE_TRANSFER_UNSYNCHRONIZED);
 
         if (mode == PIPE_PRIM_TRIANGLES) {
            memcpy(indices3, ptr + start, 6);
@@ -674,7 +670,7 @@ static void r300_draw_elements(struct r300_context *r300, int indexBias,
             r300_upload_index_buffer(r300, &indexBuffer, indexSize, &start,
                                      count, (uint8_t*)ptr);
         }
-        pipe_buffer_unmap(&r300->context, transfer);
+        r300->rws->buffer_unmap(r300_resource(orgIndexBuffer)->buf);
     } else {
         if (r300_resource(indexBuffer)->b.user_ptr)
             r300_upload_index_buffer(r300, &indexBuffer, indexSize,




More information about the mesa-commit mailing list