From d56a3adc30c19c8f00cb7dc585e86babfd3a79a7 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 10 Sep 2007 16:29:23 -0600 Subject: More work on vertex feedback / glRasterPos. Basic rasterpos works now. --- src/mesa/pipe/softpipe/sp_draw_arrays.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/mesa/pipe/softpipe/sp_draw_arrays.c') diff --git a/src/mesa/pipe/softpipe/sp_draw_arrays.c b/src/mesa/pipe/softpipe/sp_draw_arrays.c index 5198a493da..7ea29a0a26 100644 --- a/src/mesa/pipe/softpipe/sp_draw_arrays.c +++ b/src/mesa/pipe/softpipe/sp_draw_arrays.c @@ -135,6 +135,19 @@ softpipe_draw_elements(struct pipe_context *pipe, draw_set_mapped_element_buffer(draw, 0, NULL); } + /* Map feedback buffers if enabled */ + if (sp->feedback.enabled) { + const uint n = sp->feedback.interleaved ? 1 : sp->feedback.num_attribs; + for (i = 0; i < n; i++) { + void *ptr = pipe->winsys->buffer_map(pipe->winsys, + sp->feedback_buffer[i].buffer, + PIPE_BUFFER_FLAG_WRITE); + draw_set_mapped_feedback_buffer(draw, i, ptr, + sp->feedback_buffer[i].size); + } + } + + /* draw! */ draw_arrays(draw, mode, start, count); @@ -152,6 +165,17 @@ softpipe_draw_elements(struct pipe_context *pipe, draw_set_mapped_element_buffer(draw, 0, NULL); } + /* Unmap feedback buffers if enabled */ + if (sp->feedback.enabled) { + const uint n = sp->feedback.interleaved ? 1 : sp->feedback.num_attribs; + for (i = 0; i < n; i++) { + pipe->winsys->buffer_unmap(pipe->winsys, + sp->feedback_buffer[i].buffer); + draw_set_mapped_feedback_buffer(draw, i, NULL, 0); + } + } + + softpipe_unmap_surfaces(sp); softpipe_unmap_constant_buffers(sp); -- cgit v1.2.3