r600g: Make the buffer and texture vbtls static const.
authorHenri Verbeet <hverbeet@gmail.com>
Thu, 3 Feb 2011 20:10:50 +0000 (21:10 +0100)
committerHenri Verbeet <hverbeet@gmail.com>
Thu, 3 Feb 2011 20:13:12 +0000 (21:13 +0100)
src/gallium/drivers/r600/r600_buffer.c
src/gallium/drivers/r600/r600_texture.c

index 2e2258609060105dc5e4638f325bda3f8f37db43..045e883cfcff143add10630b4718cbe40df3a5ff 100644 (file)
 #include "r600.h"
 #include "r600_pipe.h"
 
-extern struct u_resource_vtbl r600_buffer_vtbl;
+static void r600_buffer_destroy(struct pipe_screen *screen,
+                               struct pipe_resource *buf)
+{
+       struct r600_resource_buffer *rbuffer = r600_buffer(buf);
+
+       if (rbuffer->r.bo) {
+               r600_bo_reference((struct radeon*)screen->winsys, &rbuffer->r.bo, NULL);
+       }
+       rbuffer->r.bo = NULL;
+       FREE(rbuffer);
+}
+
+static void *r600_buffer_transfer_map(struct pipe_context *pipe,
+                                     struct pipe_transfer *transfer)
+{
+       struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
+       int write = 0;
+       uint8_t *data;
+
+       if (rbuffer->user_buffer)
+               return (uint8_t*)rbuffer->user_buffer + transfer->box.x;
+
+       if (transfer->usage & PIPE_TRANSFER_DONTBLOCK) {
+               /* FIXME */
+       }
+       if (transfer->usage & PIPE_TRANSFER_WRITE) {
+               write = 1;
+       }
+       data = r600_bo_map((struct radeon*)pipe->winsys, rbuffer->r.bo, transfer->usage, pipe);
+       if (!data)
+               return NULL;
+
+       return (uint8_t*)data + transfer->box.x;
+}
+
+static void r600_buffer_transfer_unmap(struct pipe_context *pipe,
+                                       struct pipe_transfer *transfer)
+{
+       struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
+
+       if (rbuffer->user_buffer)
+               return;
+
+       if (rbuffer->r.bo)
+               r600_bo_unmap((struct radeon*)pipe->winsys, rbuffer->r.bo);
+}
+
+static void r600_buffer_transfer_flush_region(struct pipe_context *pipe,
+                                               struct pipe_transfer *transfer,
+                                               const struct pipe_box *box)
+{
+}
+
+static const struct u_resource_vtbl r600_buffer_vtbl =
+{
+       u_default_resource_get_handle,          /* get_handle */
+       r600_buffer_destroy,                    /* resource_destroy */
+       r600_buffer_is_referenced_by_cs,        /* is_buffer_referenced */
+       u_default_get_transfer,                 /* get_transfer */
+       u_default_transfer_destroy,             /* transfer_destroy */
+       r600_buffer_transfer_map,               /* transfer_map */
+       r600_buffer_transfer_flush_region,      /* transfer_flush_region */
+       r600_buffer_transfer_unmap,             /* transfer_unmap */
+       u_default_transfer_inline_write         /* transfer_inline_write */
+};
 
 struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
                                         const struct pipe_resource *templ)
@@ -99,59 +163,6 @@ struct pipe_resource *r600_user_buffer_create(struct pipe_screen *screen,
        return &rbuffer->r.base.b;
 }
 
-static void r600_buffer_destroy(struct pipe_screen *screen,
-                               struct pipe_resource *buf)
-{
-       struct r600_resource_buffer *rbuffer = r600_buffer(buf);
-
-       if (rbuffer->r.bo) {
-               r600_bo_reference((struct radeon*)screen->winsys, &rbuffer->r.bo, NULL);
-       }
-       rbuffer->r.bo = NULL;
-       FREE(rbuffer);
-}
-
-static void *r600_buffer_transfer_map(struct pipe_context *pipe,
-                                     struct pipe_transfer *transfer)
-{
-       struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
-       int write = 0;
-       uint8_t *data;
-
-       if (rbuffer->user_buffer)
-               return (uint8_t*)rbuffer->user_buffer + transfer->box.x;
-
-       if (transfer->usage & PIPE_TRANSFER_DONTBLOCK) {
-               /* FIXME */
-       }
-       if (transfer->usage & PIPE_TRANSFER_WRITE) {
-               write = 1;
-       }
-       data = r600_bo_map((struct radeon*)pipe->winsys, rbuffer->r.bo, transfer->usage, pipe);
-       if (!data)
-               return NULL;
-
-       return (uint8_t*)data + transfer->box.x;
-}
-
-static void r600_buffer_transfer_unmap(struct pipe_context *pipe,
-                                       struct pipe_transfer *transfer)
-{
-       struct r600_resource_buffer *rbuffer = r600_buffer(transfer->resource);
-
-       if (rbuffer->user_buffer)
-               return;
-
-       if (rbuffer->r.bo)
-               r600_bo_unmap((struct radeon*)pipe->winsys, rbuffer->r.bo);
-}
-
-static void r600_buffer_transfer_flush_region(struct pipe_context *pipe,
-                                               struct pipe_transfer *transfer,
-                                               const struct pipe_box *box)
-{
-}
-
 unsigned r600_buffer_is_referenced_by_cs(struct pipe_context *context,
                                         struct pipe_resource *buf,
                                         unsigned level, int layer)
@@ -186,19 +197,6 @@ struct pipe_resource *r600_buffer_from_handle(struct pipe_screen *screen,
        return &rbuffer->base.b;
 }
 
-struct u_resource_vtbl r600_buffer_vtbl =
-{
-       u_default_resource_get_handle,          /* get_handle */
-       r600_buffer_destroy,                    /* resource_destroy */
-       r600_buffer_is_referenced_by_cs,        /* is_buffer_referenced */
-       u_default_get_transfer,                 /* get_transfer */
-       u_default_transfer_destroy,             /* transfer_destroy */
-       r600_buffer_transfer_map,               /* transfer_map */
-       r600_buffer_transfer_flush_region,      /* transfer_flush_region */
-       r600_buffer_transfer_unmap,             /* transfer_unmap */
-       u_default_transfer_inline_write         /* transfer_inline_write */
-};
-
 void r600_upload_index_buffer(struct r600_pipe_context *rctx, struct r600_drawl *draw)
 {
        struct r600_resource_buffer *rbuffer = r600_buffer(draw->index_buffer);
index eac40965243d03e2fdd967b3247b2807caa71cd5..c32e541eb50a1bc24a2da49bd9f79397346fb99e 100644 (file)
@@ -38,8 +38,6 @@
 #include "r600d.h"
 #include "r600_formats.h"
 
-extern struct u_resource_vtbl r600_texture_vtbl;
-
 /* Copy from a full GPU texture to a transfer's staging one. */
 static void r600_copy_to_staging_texture(struct pipe_context *ctx, struct r600_transfer *rtransfer)
 {
@@ -308,6 +306,55 @@ static boolean permit_hardware_blit(struct pipe_screen *screen,
        return TRUE;
 }
 
+static boolean r600_texture_get_handle(struct pipe_screen* screen,
+                                       struct pipe_resource *ptex,
+                                       struct winsys_handle *whandle)
+{
+       struct r600_resource_texture *rtex = (struct r600_resource_texture*)ptex;
+       struct r600_resource *resource = &rtex->resource;
+       struct radeon *radeon = (struct radeon *)screen->winsys;
+
+       return r600_bo_get_winsys_handle(radeon, resource->bo,
+                       rtex->pitch_in_bytes[0], whandle);
+}
+
+static void r600_texture_destroy(struct pipe_screen *screen,
+                                struct pipe_resource *ptex)
+{
+       struct r600_resource_texture *rtex = (struct r600_resource_texture*)ptex;
+       struct r600_resource *resource = &rtex->resource;
+       struct radeon *radeon = (struct radeon *)screen->winsys;
+
+       if (rtex->flushed_depth_texture)
+               pipe_resource_reference((struct pipe_resource **)&rtex->flushed_depth_texture, NULL);
+
+       if (resource->bo) {
+               r600_bo_reference(radeon, &resource->bo, NULL);
+       }
+       FREE(rtex);
+}
+
+static unsigned int r600_texture_is_referenced(struct pipe_context *context,
+                                               struct pipe_resource *texture,
+                                               unsigned level, int layer)
+{
+       /* FIXME */
+       return PIPE_REFERENCED_FOR_READ | PIPE_REFERENCED_FOR_WRITE;
+}
+
+static const struct u_resource_vtbl r600_texture_vtbl =
+{
+       r600_texture_get_handle,        /* get_handle */
+       r600_texture_destroy,           /* resource_destroy */
+       r600_texture_is_referenced,     /* is_resource_referenced */
+       r600_texture_get_transfer,      /* get_transfer */
+       r600_texture_transfer_destroy,  /* transfer_destroy */
+       r600_texture_transfer_map,      /* transfer_map */
+       u_default_transfer_flush_region,/* transfer_flush_region */
+       r600_texture_transfer_unmap,    /* transfer_unmap */
+       u_default_transfer_inline_write /* transfer_inline_write */
+};
+
 static struct r600_resource_texture *
 r600_texture_create_object(struct pipe_screen *screen,
                           const struct pipe_resource *base,
@@ -377,34 +424,6 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
 
 }
 
-static void r600_texture_destroy(struct pipe_screen *screen,
-                                struct pipe_resource *ptex)
-{
-       struct r600_resource_texture *rtex = (struct r600_resource_texture*)ptex;
-       struct r600_resource *resource = &rtex->resource;
-       struct radeon *radeon = (struct radeon *)screen->winsys;
-
-       if (rtex->flushed_depth_texture)
-               pipe_resource_reference((struct pipe_resource **)&rtex->flushed_depth_texture, NULL);
-
-       if (resource->bo) {
-               r600_bo_reference(radeon, &resource->bo, NULL);
-       }
-       FREE(rtex);
-}
-
-static boolean r600_texture_get_handle(struct pipe_screen* screen,
-                                       struct pipe_resource *ptex,
-                                       struct winsys_handle *whandle)
-{
-       struct r600_resource_texture *rtex = (struct r600_resource_texture*)ptex;
-       struct r600_resource *resource = &rtex->resource;
-       struct radeon *radeon = (struct radeon *)screen->winsys;
-
-       return r600_bo_get_winsys_handle(radeon, resource->bo,
-                       rtex->pitch_in_bytes[0], whandle);
-}
-
 static struct pipe_surface *r600_create_surface(struct pipe_context *pipe,
                                                struct pipe_resource *texture,
                                                const struct pipe_surface *surf_tmpl)
@@ -468,14 +487,6 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen,
                                                                  bo);
 }
 
-static unsigned int r600_texture_is_referenced(struct pipe_context *context,
-                                               struct pipe_resource *texture,
-                                               unsigned level, int layer)
-{
-       /* FIXME */
-       return PIPE_REFERENCED_FOR_READ | PIPE_REFERENCED_FOR_WRITE;
-}
-
 int r600_texture_depth_flush(struct pipe_context *ctx,
                             struct pipe_resource *texture)
 {
@@ -726,19 +737,6 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx,
        r600_bo_unmap(radeon, bo);
 }
 
-struct u_resource_vtbl r600_texture_vtbl =
-{
-       r600_texture_get_handle,        /* get_handle */
-       r600_texture_destroy,           /* resource_destroy */
-       r600_texture_is_referenced,     /* is_resource_referenced */
-       r600_texture_get_transfer,      /* get_transfer */
-       r600_texture_transfer_destroy,  /* transfer_destroy */
-       r600_texture_transfer_map,      /* transfer_map */
-       u_default_transfer_flush_region,/* transfer_flush_region */
-       r600_texture_transfer_unmap,    /* transfer_unmap */
-       u_default_transfer_inline_write /* transfer_inline_write */
-};
-
 void r600_init_surface_functions(struct r600_pipe_context *r600)
 {
        r600->context.create_surface = r600_create_surface;