[g3dvl] split idct code into state and buffers
[mesa.git] / src / gallium / auxiliary / vl / vl_vertex_buffers.h
index fa4ec1dedd8f5e6dafb99bc68a82db6bdb871251..dae80fa767bfc8c07bb353ddbba0b68eda81c60c 100644 (file)
 
 struct vl_vertex_buffer
 {
-   unsigned num_blocks;
-   struct quadf *blocks;
+   unsigned num_verts;
+   unsigned num_elements;
+   float *buffer;
 };
 
 struct pipe_vertex_buffer vl_vb_upload_quads(struct pipe_context *pipe, unsigned max_blocks);
 
-bool vl_vb_init(struct vl_vertex_buffer *buffer, unsigned max_blocks);
+struct pipe_vertex_element vl_vb_get_quad_vertex_element();
+
+struct pipe_vertex_buffer vl_vb_create_buffer(struct pipe_context *pipe, unsigned max_blocks, unsigned stride);
+
+unsigned vl_vb_element_helper(struct pipe_vertex_element* elements, unsigned num_elements,
+                              unsigned vertex_buffer_index);
+
+bool vl_vb_init(struct vl_vertex_buffer *buffer, unsigned max_blocks, unsigned num_elements);
 
 static inline void
-vl_vb_add_block(struct vl_vertex_buffer *buffer, signed x, signed y)
+vl_vb_add_block(struct vl_vertex_buffer *buffer, float *elements)
 {
-   struct quadf *quad;
+   float *pos;
+   unsigned i;
 
    assert(buffer);
 
-   quad = buffer->blocks + buffer->num_blocks;
-   quad->bl.x = quad->tl.x = quad->tr.x = quad->br.x = x;
-   quad->bl.y = quad->tl.y = quad->tr.y = quad->br.y = y;
-   buffer->num_blocks++;
+   for(i = 0; i < 4; ++i) {
+      pos = buffer->buffer + buffer->num_verts * buffer->num_elements;
+      memcpy(pos, elements, sizeof(float) * buffer->num_elements);
+      buffer->num_verts++;
+   }
 }
 
-unsigned vl_vb_upload(struct vl_vertex_buffer *buffer, struct quadf *dst);
+unsigned vl_vb_upload(struct vl_vertex_buffer *buffer, void *dst);
 
 void vl_vb_cleanup(struct vl_vertex_buffer *buffer);