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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user