s/Tungsten Graphics/VMware/
[mesa.git] / src / gallium / auxiliary / pipebuffer / pb_buffer_malloc.c
index 1bf22a2ec09e5a2ee980b7ed129d033e62aaed75..bf1a538bf79d073b29685793f9a1eeb8edf7aa3b 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
  *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2007 VMware, Inc.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -18,7 +18,7 @@
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  * Implementation of malloc-based buffers to store data that can't be processed
  * by the hardware. 
  * 
- * \author Jose Fonseca <jrfonseca@tungstengraphics.com>
+ * \author Jose Fonseca <jfonseca@vmware.com>
  */
 
 
-#include "pipe/p_debug.h"
+#include "util/u_debug.h"
 #include "util/u_memory.h"
 #include "pb_buffer.h"
 #include "pb_bufmgr.h"
@@ -53,6 +53,8 @@ static INLINE struct malloc_buffer *
 malloc_buffer(struct pb_buffer *buf)
 {
    assert(buf);
+   if (!buf)
+      return NULL;
    assert(buf->vtbl == &malloc_buffer_vtbl);
    return (struct malloc_buffer *)buf;
 }
@@ -68,7 +70,8 @@ malloc_buffer_destroy(struct pb_buffer *buf)
 
 static void *
 malloc_buffer_map(struct pb_buffer *buf, 
-                  unsigned flags)
+                  unsigned flags,
+                 void *flush_ctx)
 {
    return malloc_buffer(buf)->data;
 }
@@ -81,10 +84,28 @@ malloc_buffer_unmap(struct pb_buffer *buf)
 }
 
 
+static enum pipe_error 
+malloc_buffer_validate(struct pb_buffer *buf, 
+                       struct pb_validate *vl,
+                       unsigned flags)
+{
+   assert(0);
+   return PIPE_ERROR;
+}
+
+
+static void
+malloc_buffer_fence(struct pb_buffer *buf, 
+                    struct pipe_fence_handle *fence)
+{
+   assert(0);
+}
+
+
 static void
 malloc_buffer_get_base_buffer(struct pb_buffer *buf,
                               struct pb_buffer **base_buf,
-                              unsigned *offset)
+                              pb_size *offset)
 {
    *base_buf = buf;
    *offset = 0;
@@ -96,12 +117,14 @@ malloc_buffer_vtbl = {
       malloc_buffer_destroy,
       malloc_buffer_map,
       malloc_buffer_unmap,
+      malloc_buffer_validate,
+      malloc_buffer_fence,
       malloc_buffer_get_base_buffer
 };
 
 
 struct pb_buffer *
-pb_malloc_buffer_create(size_t size,
+pb_malloc_buffer_create(pb_size size,
                        const struct pb_desc *desc) 
 {
    struct malloc_buffer *buf;
@@ -112,10 +135,10 @@ pb_malloc_buffer_create(size_t size,
    if(!buf)
       return NULL;
 
-   buf->base.base.refcount = 1;
-   buf->base.base.alignment = desc->alignment;
-   buf->base.base.usage = desc->usage;
-   buf->base.base.size = size;
+   pipe_reference_init(&buf->base.reference, 1);
+   buf->base.usage = desc->usage;
+   buf->base.size = size;
+   buf->base.alignment = desc->alignment;
    buf->base.vtbl = &malloc_buffer_vtbl;
 
    buf->data = align_malloc(size, desc->alignment < sizeof(void*) ? sizeof(void*) : desc->alignment);
@@ -130,7 +153,7 @@ pb_malloc_buffer_create(size_t size,
 
 static struct pb_buffer *
 pb_malloc_bufmgr_create_buffer(struct pb_manager *mgr, 
-                               size_t size,
+                               pb_size size,
                                const struct pb_desc *desc) 
 {
    return pb_malloc_buffer_create(size, desc);
@@ -151,11 +174,20 @@ pb_malloc_bufmgr_destroy(struct pb_manager *mgr)
 }
 
 
+static boolean
+pb_malloc_bufmgr_is_buffer_busy( struct pb_manager *mgr,
+                                 struct pb_buffer *buf )
+{
+   return FALSE;
+}
+
+
 static struct pb_manager 
 pb_malloc_bufmgr = {
    pb_malloc_bufmgr_destroy,
    pb_malloc_bufmgr_create_buffer,
-   pb_malloc_bufmgr_flush
+   pb_malloc_bufmgr_flush,
+   pb_malloc_bufmgr_is_buffer_busy
 };