r600g: rework vertex buffer uploads
[mesa.git] / src / gallium / drivers / r600 / r600_resource.h
index 25aa84682c5aed1b71b4dfc9a41c37926f18b02e..6e302444712677fa835133e11763ffefa15c88a1 100644 (file)
@@ -46,6 +46,7 @@ struct r600_resource {
        struct u_resource               base;
        struct r600_bo                  *bo;
        u32                             size;
+       unsigned                        bo_size;
 };
 
 struct r600_resource_texture {
@@ -61,7 +62,20 @@ struct r600_resource_texture {
        unsigned                        tile_type;
        unsigned                        depth;
        unsigned                        dirty;
-       struct r600_resource_texture    *flushed_depth_texture;
+       struct r600_resource_texture    *flushed_depth_texture;
+};
+
+#define R600_BUFFER_MAGIC 0xabcd1600
+
+struct r600_resource_buffer {
+       struct r600_resource            r;
+       uint32_t                        magic;
+       void                            *user_buffer;
+};
+
+struct r600_surface {
+       struct pipe_surface             base;
+       unsigned                        aligned_height;
 };
 
 void r600_init_screen_resource_functions(struct pipe_screen *screen);
@@ -73,41 +87,22 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen,
                                                const struct pipe_resource *base,
                                                struct winsys_handle *whandle);
 
-#define R600_BUFFER_MAGIC 0xabcd1600
-#define R600_BUFFER_MAX_RANGES 32
-
-struct r600_buffer_range {
-       uint32_t start;
-       uint32_t end;
-};
-
-struct r600_resource_buffer {
-       struct r600_resource r;
-       uint32_t magic;
-       void *user_buffer;
-       struct r600_buffer_range ranges[R600_BUFFER_MAX_RANGES];
-       unsigned num_ranges;
-};
-
 /* r600_buffer */
 static INLINE struct r600_resource_buffer *r600_buffer(struct pipe_resource *buffer)
 {
        if (buffer) {
                assert(((struct r600_resource_buffer *)buffer)->magic == R600_BUFFER_MAGIC);
                return (struct r600_resource_buffer *)buffer;
-    }
-    return NULL;
+       }
+       return NULL;
 }
 
-static INLINE boolean r600_buffer_is_user_buffer(struct pipe_resource *buffer)
+static INLINE boolean r600_is_user_buffer(struct pipe_resource *buffer)
 {
-    return r600_buffer(buffer)->user_buffer ? TRUE : FALSE;
+       return r600_buffer(buffer)->user_buffer ? TRUE : FALSE;
 }
 
-int r600_texture_depth_flush(struct pipe_context *ctx,
-                            struct pipe_resource *texture);
-
-extern int (*r600_blit_uncompress_depth_ptr)(struct pipe_context *ctx, struct r600_resource_texture *texture);
+int r600_texture_depth_flush(struct pipe_context *ctx, struct pipe_resource *texture);
 
 /* r600_texture.c texture transfer functions. */
 struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
@@ -122,9 +117,8 @@ void* r600_texture_transfer_map(struct pipe_context *ctx,
 void r600_texture_transfer_unmap(struct pipe_context *ctx,
                                 struct pipe_transfer* transfer);
 
-struct r600_surface {
-       struct pipe_surface base;
-       unsigned aligned_height;
-};
+struct r600_pipe_context;
+
+void r600_upload_const_buffer(struct r600_pipe_context *rctx, struct r600_resource_buffer **rbuffer, uint32_t *offset);
 
 #endif