Merge branch '7.8'
[mesa.git] / src / gallium / auxiliary / pipebuffer / pb_bufmgr.h
index cafbee045ae0cf54cb8583e4e324db5e9234e2de..cec2524da2bdefc31bcc8612ab39002b5ae2383a 100644 (file)
@@ -43,7 +43,7 @@
  * - the fenced buffer manager, which will delay buffer destruction until the 
  * the moment the card finishing processing it. 
  * 
- * \author José Fonseca <jrfonseca@tungstengraphics.com>
+ * \author Jose Fonseca <jrfonseca@tungstengraphics.com>
  */
 
 #ifndef PB_BUFMGR_H_
@@ -51,7 +51,7 @@
 
 
 #include "pipe/p_compiler.h"
-#include "pipe/p_error.h"
+#include "pipe/p_defines.h"
 
 
 #ifdef __cplusplus
@@ -60,8 +60,6 @@ extern "C" {
 
 
 struct pb_desc;
-struct pipe_buffer;
-struct pipe_winsys;
 
 
 /** 
@@ -74,7 +72,7 @@ struct pb_manager
 
    struct pb_buffer *
    (*create_buffer)( struct pb_manager *mgr, 
-                    size_t size,
+                    pb_size size,
                     const struct pb_desc *desc);
 
    /**
@@ -107,7 +105,7 @@ pb_malloc_bufmgr_create(void);
  */
 struct pb_manager *
 pool_bufmgr_create(struct pb_manager *provider, 
-                   size_t n, size_t size,
+                   pb_size n, pb_size size,
                    const struct pb_desc *desc);
 
 
@@ -120,7 +118,7 @@ pool_bufmgr_create(struct pb_manager *provider,
  */
 struct pb_manager *
 mm_bufmgr_create(struct pb_manager *provider, 
-                 size_t size, size_t align2);
+                 pb_size size, pb_size align2);
 
 /**
  * Same as mm_bufmgr_create.
@@ -129,7 +127,7 @@ mm_bufmgr_create(struct pb_manager *provider,
  */
 struct pb_manager *
 mm_bufmgr_create_from_buffer(struct pb_buffer *buffer, 
-                             size_t size, size_t align2);
+                             pb_size size, pb_size align2);
 
 
 /**
@@ -137,8 +135,8 @@ mm_bufmgr_create_from_buffer(struct pb_buffer *buffer,
  */
 struct pb_manager *
 pb_slab_manager_create(struct pb_manager *provider,
-                       size_t bufSize,
-                       size_t slabSize,
+                       pb_size bufSize,
+                       pb_size slabSize,
                        const struct pb_desc *desc);
 
 /**
@@ -147,9 +145,9 @@ pb_slab_manager_create(struct pb_manager *provider,
  */
 struct pb_manager *
 pb_slab_range_manager_create(struct pb_manager *provider,
-                             size_t minBufSize,
-                             size_t maxBufSize,
-                             size_t slabSize,
+                             pb_size minBufSize,
+                             pb_size maxBufSize,
+                             pb_size slabSize,
                              const struct pb_desc *desc);
 
 
@@ -163,6 +161,8 @@ pb_cache_manager_create(struct pb_manager *provider,
                        unsigned usecs); 
 
 
+struct pb_fence_ops;
+
 /** 
  * Fenced buffer manager.
  *
@@ -174,7 +174,9 @@ pb_cache_manager_create(struct pb_manager *provider,
  */
 struct pb_manager *
 fenced_bufmgr_create(struct pb_manager *provider,
-                     struct pipe_winsys *winsys);
+                     struct pb_fence_ops *ops,
+                     pb_size max_buffer_size,
+                     pb_size max_cpu_total_size);
 
 
 struct pb_manager *
@@ -182,13 +184,28 @@ pb_alt_manager_create(struct pb_manager *provider1,
                       struct pb_manager *provider2);
 
 
+/** 
+ * Ondemand buffer manager.
+ * 
+ * Buffers are created in malloc'ed memory (fast and cached), and the constents
+ * is transfered to a buffer from the provider (typically in slow uncached 
+ * memory) when there is an attempt to validate the buffer.
+ * 
+ * Ideal for situations where one does not know before hand whether a given
+ * buffer will effectively be used by the hardware or not. 
+ */
+struct pb_manager *
+pb_ondemand_manager_create(struct pb_manager *provider); 
+
+
 /** 
  * Debug buffer manager to detect buffer under- and overflows.
  *
- * Band size should be a multiple of the largest alignment
+ * Under/overflow sizes should be a multiple of the largest alignment
  */
 struct pb_manager *
-pb_debug_manager_create(struct pb_manager *provider, size_t band_size); 
+pb_debug_manager_create(struct pb_manager *provider,
+                        pb_size underflow_size, pb_size overflow_size); 
 
 
 #ifdef __cplusplus