svga: pass tobind_flags to svga_buffer_handle
[mesa.git] / src / gallium / drivers / svga / svga_resource_buffer.h
index 0591f8960b9d720f227b436cdd206873f646c695..2096a9821cc574a97206136355ebfed2b380d9ab 100644 (file)
@@ -192,17 +192,26 @@ struct svga_buffer
    unsigned size;  /**< Approximate size in bytes */
 
    boolean dirty;  /**< Need to do a readback before mapping? */
+
+   /** In some cases we try to keep the results of the translate_indices()
+    * function from svga_draw_elements.c
+    */
+   struct {
+      enum pipe_prim_type orig_prim, new_prim;
+      struct pipe_resource *buffer;
+      unsigned index_size;
+      unsigned offset;  /**< first index */
+      unsigned count;   /**< num indices */
+   } translated_indices;
 };
 
 
 static inline struct svga_buffer *
-svga_buffer(struct pipe_resource *buffer)
+svga_buffer(struct pipe_resource *resource)
 {
-   if (buffer) {
-      assert(((struct svga_buffer *)buffer)->b.vtbl == &svga_buffer_vtbl);
-      return (struct svga_buffer *)buffer;
-   }
-   return NULL;
+   struct svga_buffer *buf = (struct svga_buffer *) resource;
+   assert(buf == NULL || buf->b.vtbl == &svga_buffer_vtbl);
+   return buf;
 }
 
 
@@ -246,6 +255,7 @@ svga_buffer_has_hw_storage(struct svga_buffer *sbuf)
 
 /**
  * Map the hardware storage of a buffer.
+ * \param flags  bitmask of PIPE_TRANSFER_* flags
  */
 static inline void *
 svga_buffer_hw_storage_map(struct svga_context *svga,
@@ -254,7 +264,7 @@ svga_buffer_hw_storage_map(struct svga_context *svga,
 {
    struct svga_winsys_screen *sws = svga_buffer_winsys_screen(sbuf);
 
-   svga->hud.num_resources_mapped++;
+   svga->hud.num_buffers_mapped++;
 
    if (sws->have_gb_objects) {
       return svga->swc->surface_map(svga->swc, sbuf->handle, flags, retry);
@@ -315,7 +325,8 @@ svga_buffer_create(struct pipe_screen *screen,
  */
 struct svga_winsys_surface *
 svga_buffer_handle(struct svga_context *svga,
-                   struct pipe_resource *buf);
+                   struct pipe_resource *buf,
+                   unsigned tobind_flags);
 
 void
 svga_context_flush_buffers(struct svga_context *svga);