32
32
#include "cell_context.h"
33
33
#include "cell_state.h"
35
#include "util/u_memory.h"
35
36
#include "draw/draw_context.h"
40
cell_create_vertex_elements_state(struct pipe_context *pipe,
42
const struct pipe_vertex_element *attribs)
44
struct cell_velems_state *velems;
45
assert(count <= PIPE_MAX_ATTRIBS);
46
velems = (struct cell_velems_state *) MALLOC(sizeof(struct cell_velems_state));
48
velems->count = count;
49
memcpy(velems->velem, attribs, sizeof(*attribs) * count);
39
cell_set_vertex_elements(struct pipe_context *pipe,
41
const struct pipe_vertex_element *elements)
55
cell_bind_vertex_elements_state(struct pipe_context *pipe,
43
58
struct cell_context *cell = cell_context(pipe);
45
assert(count <= PIPE_MAX_ATTRIBS);
47
memcpy(cell->vertex_element, elements, count * sizeof(elements[0]));
48
cell->num_vertex_elements = count;
59
struct cell_velems_state *cell_velems = (struct cell_velems_state *) velems;
61
cell->velems = cell_velems;
50
63
cell->dirty |= CELL_NEW_VERTEX;
52
draw_set_vertex_elements(cell->draw, count, elements);
66
draw_set_vertex_elements(cell->draw, cell_velems->count, cell_velems->velem);
70
cell_delete_vertex_elements_state(struct pipe_context *pipe, void *velems)
95
cell_set_index_buffer(struct pipe_context *pipe,
96
const struct pipe_index_buffer *ib)
98
struct cell_context *cell = cell_context(pipe);
101
memcpy(&cell->index_buffer, ib, sizeof(cell->index_buffer));
103
memset(&cell->index_buffer, 0, sizeof(cell->index_buffer));
105
draw_set_index_buffer(cell->draw, ib);
75
110
cell_init_vertex_functions(struct cell_context *cell)
77
112
cell->pipe.set_vertex_buffers = cell_set_vertex_buffers;
78
cell->pipe.set_vertex_elements = cell_set_vertex_elements;
113
cell->pipe.set_index_buffer = cell_set_index_buffer;
114
cell->pipe.create_vertex_elements_state = cell_create_vertex_elements_state;
115
cell->pipe.bind_vertex_elements_state = cell_bind_vertex_elements_state;
116
cell->pipe.delete_vertex_elements_state = cell_delete_vertex_elements_state;