gallium: Add pipe cap for primitive restart with fixed index
[mesa.git] / src / gallium / drivers / r300 / r300_context.c
index 02af5d7f2f841196fd874c117fe2108d1953fb4b..114f74ead24656cff1a3b82463d1a11b31916633 100644 (file)
@@ -26,7 +26,7 @@
 #include "util/u_sampler.h"
 #include "util/simple_list.h"
 #include "util/u_upload_mgr.h"
-#include "os/os_time.h"
+#include "util/os_time.h"
 #include "vl/vl_decoder.h"
 #include "vl/vl_video_buffer.h"
 
@@ -63,7 +63,7 @@ static void r300_release_referenced_objects(struct r300_context *r300)
     }
 
     /* Manually-created vertex buffers. */
-    pipe_resource_reference(&r300->dummy_vb.buffer, NULL);
+    pipe_vertex_buffer_unreference(&r300->dummy_vb);
     pb_reference(&r300->vbo, NULL);
 
     r300->context.delete_depth_stencil_alpha_state(&r300->context,
@@ -88,6 +88,8 @@ static void r300_destroy_context(struct pipe_context* context)
 
     if (r300->uploader)
         u_upload_destroy(r300->uploader);
+    if (r300->context.stream_uploader)
+        u_upload_destroy(r300->context.stream_uploader);
 
     /* XXX: This function assumes r300->query_list was initialized */
     r300_release_referenced_objects(r300);
@@ -260,7 +262,7 @@ static boolean r300_setup_atoms(struct r300_context* r300)
     return TRUE;
 }
 
-/* Not every state tracker calls every driver function before the first draw
+/* Not every gallium frontend calls every driver function before the first draw
  * call and we must initialize the command buffers somehow. */
 static void r300_init_states(struct pipe_context *pipe)
 {
@@ -391,7 +393,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
     if (!r300->ctx)
         goto fail;
 
-    r300->cs = rws->cs_create(r300->ctx, RING_GFX, r300_flush_callback, r300);
+    r300->cs = rws->cs_create(r300->ctx, RING_GFX, r300_flush_callback, r300, false);
     if (r300->cs == NULL)
         goto fail;
 
@@ -424,10 +426,11 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
     r300->context.create_video_codec = vl_create_decoder;
     r300->context.create_video_buffer = vl_video_buffer_create;
 
-    r300->uploader = u_upload_create(&r300->context, 1024 * 1024,
-                                     PIPE_BIND_CUSTOM, PIPE_USAGE_STREAM);
-    r300->context.stream_uploader = r300->uploader;
-    r300->context.const_uploader = r300->uploader;
+    r300->uploader = u_upload_create(&r300->context, 128 * 1024,
+                                     PIPE_BIND_CUSTOM, PIPE_USAGE_STREAM, 0);
+    r300->context.stream_uploader = u_upload_create(&r300->context, 1024 * 1024,
+                                                    0, PIPE_USAGE_STREAM, 0);
+    r300->context.const_uploader = r300->context.stream_uploader;
 
     r300->blitter = util_blitter_create(&r300->context);
     if (r300->blitter == NULL)
@@ -468,7 +471,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
         vb.height0 = 1;
         vb.depth0 = 1;
 
-        r300->dummy_vb.buffer = screen->resource_create(screen, &vb);
+        r300->dummy_vb.buffer.resource = screen->resource_create(screen, &vb);
         r300->context.set_vertex_buffers(&r300->context, 0, 1, &r300->dummy_vb);
     }