32
32
#include "sp_context.h"
33
33
#include "sp_state.h"
35
#include "util/u_memory.h"
35
36
#include "draw/draw_context.h"
40
softpipe_create_vertex_elements_state(struct pipe_context *pipe,
42
const struct pipe_vertex_element *attribs)
44
struct sp_velems_state *velems;
45
assert(count <= PIPE_MAX_ATTRIBS);
46
velems = (struct sp_velems_state *) MALLOC(sizeof(struct sp_velems_state));
48
velems->count = count;
49
memcpy(velems->velem, attribs, sizeof(*attribs) * count);
39
softpipe_set_vertex_elements(struct pipe_context *pipe,
41
const struct pipe_vertex_element *attribs)
55
softpipe_bind_vertex_elements_state(struct pipe_context *pipe,
43
58
struct softpipe_context *softpipe = softpipe_context(pipe);
45
assert(count <= PIPE_MAX_ATTRIBS);
47
memcpy(softpipe->vertex_element, attribs,
48
count * sizeof(struct pipe_vertex_element));
49
softpipe->num_vertex_elements = count;
59
struct sp_velems_state *sp_velems = (struct sp_velems_state *) velems;
61
softpipe->velems = sp_velems;
51
63
softpipe->dirty |= SP_NEW_VERTEX;
53
draw_set_vertex_elements(softpipe->draw, count, attribs);
66
draw_set_vertex_elements(softpipe->draw, sp_velems->count, sp_velems->velem);
70
softpipe_delete_vertex_elements_state(struct pipe_context *pipe, void *velems)
58
76
softpipe_set_vertex_buffers(struct pipe_context *pipe,
71
89
draw_set_vertex_buffers(softpipe->draw, count, buffers);
93
softpipe_set_index_buffer(struct pipe_context *pipe,
94
const struct pipe_index_buffer *ib)
96
struct softpipe_context *softpipe = softpipe_context(pipe);
99
memcpy(&softpipe->index_buffer, ib, sizeof(softpipe->index_buffer));
101
memset(&softpipe->index_buffer, 0, sizeof(softpipe->index_buffer));
103
draw_set_index_buffer(softpipe->draw, ib);