00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "cell_context.h"
00033 #include "cell_state.h"
00034
00035 #include "draw/draw_context.h"
00036
00037
00038 static void
00039 cell_set_vertex_elements(struct pipe_context *pipe,
00040 unsigned count,
00041 const struct pipe_vertex_element *elements)
00042 {
00043 struct cell_context *cell = cell_context(pipe);
00044
00045 assert(count <= PIPE_MAX_ATTRIBS);
00046
00047 memcpy(cell->vertex_element, elements, count * sizeof(elements[0]));
00048 cell->num_vertex_elements = count;
00049
00050 cell->dirty |= CELL_NEW_VERTEX;
00051
00052 draw_set_vertex_elements(cell->draw, count, elements);
00053 }
00054
00055
00056 static void
00057 cell_set_vertex_buffers(struct pipe_context *pipe,
00058 unsigned count,
00059 const struct pipe_vertex_buffer *buffers)
00060 {
00061 struct cell_context *cell = cell_context(pipe);
00062
00063 assert(count <= PIPE_MAX_ATTRIBS);
00064
00065 memcpy(cell->vertex_buffer, buffers, count * sizeof(buffers[0]));
00066 cell->num_vertex_buffers = count;
00067
00068 cell->dirty |= CELL_NEW_VERTEX;
00069
00070 draw_set_vertex_buffers(cell->draw, count, buffers);
00071 }
00072
00073
00074 void
00075 cell_init_vertex_functions(struct cell_context *cell)
00076 {
00077 cell->pipe.set_vertex_buffers = cell_set_vertex_buffers;
00078 cell->pipe.set_vertex_elements = cell_set_vertex_elements;
00079 }