nv50,nvc0: implement blit
[mesa.git] / src / gallium / drivers / r600 / r600_translate.c
index 7482d15e12fb629a5cd152fa096bfaa27a3d8646..c054c865e02a9b5ffec69d2e3afbe5490479988f 100644 (file)
  * Authors: Dave Airlie <airlied@redhat.com>
  */
 
-#include <util/u_index_modify.h>
-#include "util/u_inlines.h"
-#include "util/u_upload_mgr.h"
 #include "r600_pipe.h"
+#include "util/u_index_modify.h"
+#include "util/u_upload_mgr.h"
 
 
-void r600_translate_index_buffer(struct r600_pipe_context *r600,
-                                struct pipe_resource **index_buffer,
-                                unsigned *index_size,
-                                unsigned *start, unsigned count)
+void r600_translate_index_buffer(struct r600_context *r600,
+                                struct pipe_index_buffer *ib,
+                                unsigned count)
 {
        struct pipe_resource *out_buffer = NULL;
        unsigned out_offset;
        void *ptr;
-       boolean flushed;
 
-       switch (*index_size) {
+       switch (ib->index_size) {
        case 1:
-               u_upload_alloc(r600->vbuf_mgr->uploader, 0, count * 2,
-                              &out_offset, &out_buffer, &flushed, &ptr);
+               u_upload_alloc(r600->uploader, 0, count * 2,
+                              &out_offset, &out_buffer, &ptr);
 
                util_shorten_ubyte_elts_to_userptr(
-                               &r600->context, *index_buffer, 0, *start, count, ptr);
+                               &r600->context, ib, 0, ib->offset, count, ptr);
 
-               pipe_resource_reference(index_buffer, out_buffer);
-               *index_size = 2;
-               *start = out_offset / 2;
+               pipe_resource_reference(&ib->buffer, NULL);
+               ib->buffer = out_buffer;
+               ib->offset = out_offset;
+               ib->index_size = 2;
                break;
        }
 }