gallium: Add pipe_context::draw_vbo and pipe_context::set_index_buffer.

This commit adds a new unified draw_vbo method to pipe_context.  Unlike
other draw methods, draw_vbo treats the index buffer as a state which is
set with set_index_buffer.
This commit is contained in:
Chia-I Wu 2010-07-16 04:02:55 +08:00
parent 7e4e79be6b
commit c5e9d3114a
2 changed files with 41 additions and 0 deletions

View file

@ -102,6 +102,9 @@ struct pipe_context {
unsigned start,
unsigned count);
void (*draw_vbo)( struct pipe_context *pipe,
const struct pipe_draw_info *info );
/**
* Draw the stream output buffer at index 0
*/
@ -249,6 +252,9 @@ struct pipe_context {
unsigned num_buffers,
const struct pipe_vertex_buffer * );
void (*set_index_buffer)( struct pipe_context *pipe,
const struct pipe_index_buffer * );
void (*set_stream_output_buffers)(struct pipe_context *,
struct pipe_resource **buffers,
int *offsets, /*array of offsets

View file

@ -426,6 +426,41 @@ struct pipe_vertex_element
};
/**
* An index buffer. When an index buffer is bound, all indices to vertices
* will be looked up in the buffer.
*/
struct pipe_index_buffer
{
unsigned index_size; /**< size of an index, in bytes */
unsigned offset; /**< offset to start of data in buffer, in bytes */
struct pipe_resource *buffer; /**< the actual buffer */
};
/**
* Information to describe a draw_vbo call.
*/
struct pipe_draw_info
{
boolean indexed; /**< use index buffer */
unsigned mode; /**< the mode of the primitive */
unsigned start; /**< the index of the first vertex */
unsigned count; /**< number of vertices */
unsigned start_instance; /**< first instance id */
unsigned instance_count; /**< number of instances */
/**
* For indexed drawing, these fields apply after index lookup.
*/
int index_bias; /**< a bias to be added to each index */
unsigned min_index; /**< the min index */
unsigned max_index; /**< the max index */
};
#ifdef __cplusplus
}
#endif