pipebuffer: Allow asymmetric guard sizes for under/overflow detection.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 24 Feb 2009 15:49:21 +0000 (15:49 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Tue, 24 Feb 2009 15:49:21 +0000 (15:49 +0000)
src/gallium/auxiliary/pipebuffer/pb_bufmgr.h
src/gallium/auxiliary/pipebuffer/pb_bufmgr_debug.c

index fec8db91c7160bed46659c91a89e772b0208403c..74077f82774924dcfec730ba492215e2ca4ea054 100644 (file)
@@ -200,10 +200,11 @@ 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,
+                        size_t underflow_size, size_t overflow_size); 
 
 
 #ifdef __cplusplus
index 070bf3f51736d42151ef9b2037a0d3dd660d1e52..21079b8bfd71669de72163611a0e66220d8380f6 100644 (file)
@@ -78,7 +78,8 @@ struct pb_debug_manager
 
    struct pb_manager *provider;
 
-   size_t band_size;
+   size_t underflow_size;
+   size_t overflow_size;
 };
 
 
@@ -301,7 +302,7 @@ pb_debug_manager_create_buffer(struct pb_manager *_mgr,
    if(!buf)
       return NULL;
    
-   real_size = size + 2*mgr->band_size;
+   real_size = mgr->underflow_size + size + mgr->overflow_size;
    real_desc = *desc;
    real_desc.usage |= PIPE_BUFFER_USAGE_CPU_WRITE;
    real_desc.usage |= PIPE_BUFFER_USAGE_CPU_READ;
@@ -327,7 +328,7 @@ pb_debug_manager_create_buffer(struct pb_manager *_mgr,
    buf->base.vtbl = &pb_debug_buffer_vtbl;
    buf->mgr = mgr;
 
-   buf->underflow_size = mgr->band_size;
+   buf->underflow_size = mgr->underflow_size;
    buf->overflow_size = buf->buffer->base.size - buf->underflow_size - size;
    
    pb_debug_buffer_fill(buf);
@@ -356,7 +357,8 @@ pb_debug_manager_destroy(struct pb_manager *_mgr)
 
 
 struct pb_manager *
-pb_debug_manager_create(struct pb_manager *provider, size_t band_size) 
+pb_debug_manager_create(struct pb_manager *provider, 
+                        size_t underflow_size, size_t overflow_size) 
 {
    struct pb_debug_manager *mgr;
 
@@ -371,7 +373,8 @@ pb_debug_manager_create(struct pb_manager *provider, size_t band_size)
    mgr->base.create_buffer = pb_debug_manager_create_buffer;
    mgr->base.flush = pb_debug_manager_flush;
    mgr->provider = provider;
-   mgr->band_size = band_size;
+   mgr->underflow_size = underflow_size;
+   mgr->overflow_size = overflow_size;
       
    return &mgr->base;
 }
@@ -381,7 +384,8 @@ pb_debug_manager_create(struct pb_manager *provider, size_t band_size)
 
 
 struct pb_manager *
-pb_debug_manager_create(struct pb_manager *provider, size_t band_size) 
+pb_debug_manager_create(struct pb_manager *provider, 
+                        size_t underflow_size, size_t overflow_size) 
 {
    return provider;
 }