gallium/u_blitter: make clearing independent of the colorbuffer format
[mesa.git] / src / gallium / drivers / r300 / r300_render_translate.c
index 76d012d81e6875a94412bff1332bbd1e8f8fc0c2..caeeec059090aa26a46f737a2bc0e59677539a88 100644 (file)
 
 
 void r300_translate_index_buffer(struct r300_context *r300,
-                                 struct pipe_resource **index_buffer,
+                                 struct pipe_index_buffer *ib,
+                                 struct pipe_resource **out_buffer,
                                  unsigned *index_size, unsigned index_offset,
                                  unsigned *start, unsigned count)
 {
-    struct pipe_resource *out_buffer = NULL;
     unsigned out_offset;
     void *ptr;
-    boolean flushed;
 
     switch (*index_size) {
     case 1:
-        u_upload_alloc(r300->upload_ib, 0, count * 2,
-                       &out_offset, &out_buffer, &flushed, &ptr);
+        *out_buffer = NULL;
+        u_upload_alloc(r300->uploader, 0, count * 2,
+                       &out_offset, out_buffer, &ptr);
 
         util_shorten_ubyte_elts_to_userptr(
-                &r300->context, *index_buffer, index_offset,
+                &r300->context, ib, index_offset,
                 *start, count, ptr);
 
-        pipe_resource_reference(index_buffer, out_buffer);
         *index_size = 2;
         *start = out_offset / 2;
-        r300->validate_buffers = TRUE;
         break;
 
     case 2:
         if (index_offset) {
-            u_upload_alloc(r300->upload_ib, 0, count * 2,
-                           &out_offset, &out_buffer, &flushed, &ptr);
+            *out_buffer = NULL;
+            u_upload_alloc(r300->uploader, 0, count * 2,
+                           &out_offset, out_buffer, &ptr);
 
-            util_rebuild_ushort_elts_to_userptr(&r300->context, *index_buffer,
+            util_rebuild_ushort_elts_to_userptr(&r300->context, ib,
                                                 index_offset, *start,
                                                 count, ptr);
 
-            pipe_resource_reference(index_buffer, out_buffer);
             *start = out_offset / 2;
-            r300->validate_buffers = TRUE;
         }
         break;
 
     case 4:
         if (index_offset) {
-            u_upload_alloc(r300->upload_ib, 0, count * 4,
-                           &out_offset, &out_buffer, &flushed, &ptr);
+            *out_buffer = NULL;
+            u_upload_alloc(r300->uploader, 0, count * 4,
+                           &out_offset, out_buffer, &ptr);
 
-            util_rebuild_uint_elts_to_userptr(&r300->context, *index_buffer,
+            util_rebuild_uint_elts_to_userptr(&r300->context, ib,
                                               index_offset, *start,
                                               count, ptr);
 
-            pipe_resource_reference(index_buffer, out_buffer);
             *start = out_offset / 4;
-            r300->validate_buffers = TRUE;
         }
         break;
     }