r300g: don't share u_upload_mgr with u_vbuf, create its own
authorMarek Olšák <maraeo@gmail.com>
Wed, 11 Apr 2012 14:00:09 +0000 (16:00 +0200)
committerMarek Olšák <maraeo@gmail.com>
Mon, 23 Apr 2012 23:39:22 +0000 (01:39 +0200)
src/gallium/drivers/r300/r300_context.c
src/gallium/drivers/r300/r300_context.h
src/gallium/drivers/r300/r300_render_translate.c
src/gallium/drivers/r300/r300_screen_buffer.c

index fd464f32afd8a698e778f6a416ba8f7ec2e9f08a..cb8cef151346c7de97643c32729b494ad871d498 100644 (file)
@@ -103,6 +103,8 @@ static void r300_destroy_context(struct pipe_context* context)
     if (r300->vbuf_mgr)
         u_vbuf_destroy(r300->vbuf_mgr);
 
+    u_upload_destroy(r300->uploader);
+
     /* XXX: This function assumes r300->query_list was initialized */
     r300_release_referenced_objects(r300);
 
@@ -440,6 +442,9 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
             goto fail;
     }
 
+    r300->uploader = u_upload_create(&r300->context, 256 * 1024, 16,
+                                     PIPE_BIND_INDEX_BUFFER);
+
     r300->blitter = util_blitter_create(&r300->context);
     if (r300->blitter == NULL)
         goto fail;
index 29f2717707723edcd203ec5ea1019bcfe7a834f6..8f125d19c1667c85625944eb6242b35dfb4b446f 100644 (file)
@@ -580,6 +580,7 @@ struct r300_context {
     struct pipe_index_buffer index_buffer;
     struct pipe_vertex_buffer vertex_buffer[PIPE_MAX_ATTRIBS];
     unsigned nr_vertex_buffers;
+    struct u_upload_mgr *uploader;
 
     struct util_slab_mempool pool_transfers;
 
index c2eb3c547f4615fc70207ba2317b16929b5eabe4..022e8a7fc7044adbbac18746708233f269eea9d7 100644 (file)
@@ -36,7 +36,7 @@ void r300_translate_index_buffer(struct r300_context *r300,
 
     switch (*index_size) {
     case 1:
-        u_upload_alloc(r300->vbuf_mgr->uploader, 0, count * 2,
+        u_upload_alloc(r300->uploader, 0, count * 2,
                        &out_offset, &out_buffer, &ptr);
 
         util_shorten_ubyte_elts_to_userptr(
@@ -51,7 +51,7 @@ void r300_translate_index_buffer(struct r300_context *r300,
 
     case 2:
         if (index_offset) {
-            u_upload_alloc(r300->vbuf_mgr->uploader, 0, count * 2,
+            u_upload_alloc(r300->uploader, 0, count * 2,
                            &out_offset, &out_buffer, &ptr);
 
             util_rebuild_ushort_elts_to_userptr(&r300->context, *index_buffer,
@@ -66,7 +66,7 @@ void r300_translate_index_buffer(struct r300_context *r300,
 
     case 4:
         if (index_offset) {
-            u_upload_alloc(r300->vbuf_mgr->uploader, 0, count * 4,
+            u_upload_alloc(r300->uploader, 0, count * 4,
                            &out_offset, &out_buffer, &ptr);
 
             util_rebuild_uint_elts_to_userptr(&r300->context, *index_buffer,
index c92b83146c0b0ed6eae19691c14fde3d71311e57..d89ccebbe7370d48b9481cb36d6d3ef532d5d0cf 100644 (file)
@@ -41,7 +41,7 @@ void r300_upload_index_buffer(struct r300_context *r300,
 
     *index_buffer = NULL;
 
-    u_upload_data(r300->vbuf_mgr->uploader,
+    u_upload_data(r300->uploader,
                   0, count * index_size,
                   ptr + (*start * index_size),
                   &index_offset,