summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorNeha Bhende <[email protected]>2016-08-11 16:30:14 -0700
committerBrian Paul <[email protected]>2016-08-26 06:19:51 -0600
commit1da538f85bc327f4ae5e1a5b90c15b99f8cf48df (patch)
tree8b56e3ed0053e381a9df31487e58fa4387480bcb /src/gallium/drivers
parenta5fd54f8bf6713312fa5efd7ef5cd125557a0ffe (diff)
svga: add new begin_blit()
Saving all blitter states will be done in begin_blit() so that begin_blit() can be used before performing any blit operation. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Charmaine Lee <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/svga/svga_pipe_clear.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/gallium/drivers/svga/svga_pipe_clear.c b/src/gallium/drivers/svga/svga_pipe_clear.c
index c874726b6da..1eb37579002 100644
--- a/src/gallium/drivers/svga/svga_pipe_clear.c
+++ b/src/gallium/drivers/svga/svga_pipe_clear.c
@@ -35,18 +35,11 @@
/**
- * Clear the whole color buffer(s) by drawing a quad. For VGPU10 we use
- * this when clearing integer render targets. We'll also clear the
- * depth and/or stencil buffers if the clear_buffers mask specifies them.
+ * Saving blitter states before doing any blitter operation
*/
static void
-clear_buffers_with_quad(struct svga_context *svga,
- unsigned clear_buffers,
- const union pipe_color_union *color,
- double depth, unsigned stencil)
+begin_blit(struct svga_context *svga)
{
- const struct pipe_framebuffer_state *fb = &svga->curr.framebuffer;
-
util_blitter_save_vertex_buffer_slot(svga->blitter, svga->curr.vb);
util_blitter_save_vertex_elements(svga->blitter, (void*)svga->curr.velems);
util_blitter_save_vertex_shader(svga->blitter, svga->curr.vs);
@@ -62,7 +55,23 @@ clear_buffers_with_quad(struct svga_context *svga,
(void*)svga->curr.depth);
util_blitter_save_stencil_ref(svga->blitter, &svga->curr.stencil_ref);
util_blitter_save_sample_mask(svga->blitter, svga->curr.sample_mask);
+}
+
+
+/**
+ * Clear the whole color buffer(s) by drawing a quad. For VGPU10 we use
+ * this when clearing integer render targets. We'll also clear the
+ * depth and/or stencil buffers if the clear_buffers mask specifies them.
+ */
+static void
+clear_buffers_with_quad(struct svga_context *svga,
+ unsigned clear_buffers,
+ const union pipe_color_union *color,
+ double depth, unsigned stencil)
+{
+ const struct pipe_framebuffer_state *fb = &svga->curr.framebuffer;
+ begin_blit(svga);
util_blitter_clear(svga->blitter,
fb->width, fb->height,
1, /* num_layers */