X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fauxiliary%2Fvl%2Fvl_vertex_buffers.h;h=dae80fa767bfc8c07bb353ddbba0b68eda81c60c;hb=0b749d6dcb537472771d6fe6e454aafc916ab3fe;hp=fa4ec1dedd8f5e6dafb99bc68a82db6bdb871251;hpb=9af3c243d958dd5b9802dda321ab980c83cb8cb8;p=mesa.git diff --git a/src/gallium/auxiliary/vl/vl_vertex_buffers.h b/src/gallium/auxiliary/vl/vl_vertex_buffers.h index fa4ec1dedd8..dae80fa767b 100644 --- a/src/gallium/auxiliary/vl/vl_vertex_buffers.h +++ b/src/gallium/auxiliary/vl/vl_vertex_buffers.h @@ -33,28 +33,38 @@ 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);