1 #include "brw_context.h"
4 static void brw_set_vertex_elements( struct pipe_context
*pipe
,
6 const struct pipe_vertex_element
*elements
)
8 struct brw_context
*brw
= brw_context(pipe
);
10 memcpy(brw
->curr
.vertex_element
, elements
, count
* sizeof(elements
[0]));
11 brw
->curr
.num_vertex_elements
= count
;
13 brw
->state
.dirty
.mesa
|= PIPE_NEW_VERTEX_ELEMENT
;
17 static void brw_set_vertex_buffers(struct pipe_context
*pipe
,
19 const struct pipe_vertex_buffer
*buffers
)
21 struct brw_context
*brw
= brw_context(pipe
);
24 /* Check for no change */
25 if (count
== brw
->curr
.num_vertex_buffers
&&
26 memcmp(brw
->curr
.vertex_buffer
,
28 count
* sizeof buffers
[0]) == 0)
31 /* Adjust refcounts */
32 for (i
= 0; i
< count
; i
++)
33 pipe_buffer_reference(&brw
->curr
.vertex_buffer
[i
].buffer
,
36 for ( ; i
< brw
->curr
.num_vertex_buffers
; i
++)
37 pipe_buffer_reference(&brw
->curr
.vertex_buffer
[i
].buffer
,
40 /* Copy remaining data */
41 memcpy(brw
->curr
.vertex_buffer
, buffers
, count
* sizeof buffers
[0]);
42 brw
->curr
.num_vertex_buffers
= count
;
44 brw
->state
.dirty
.mesa
|= PIPE_NEW_VERTEX_BUFFER
;
49 brw_pipe_vertex_init( struct brw_context
*brw
)
51 brw
->base
.set_vertex_buffers
= brw_set_vertex_buffers
;
52 brw
->base
.set_vertex_elements
= brw_set_vertex_elements
;
57 brw_pipe_vertex_cleanup( struct brw_context
*brw
)
60 /* Release bound pipe vertex_buffers
63 /* Release some other stuff
66 for (i
= 0; i
< PIPE_MAX_ATTRIBS
; i
++) {
67 bo_reference(&brw
->vb
.inputs
[i
].bo
, NULL
);
68 brw
->vb
.inputs
[i
].bo
= NULL
;