Mesa (master): u_blitter: use PIPE_TRANSFER_DISCARD to prevent cpu/ gpu stall
Marek Olšák
mareko at kemper.freedesktop.org
Thu Nov 25 19:33:28 UTC 2010
Module: Mesa
Branch: master
Commit: 2c1de07ddf9f4de6813f0ed46fc859b2f61db7b2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c1de07ddf9f4de6813f0ed46fc859b2f61db7b2
Author: Marek Olšák <maraeo at gmail.com>
Date: Tue Nov 23 14:09:21 2010 +0100
u_blitter: use PIPE_TRANSFER_DISCARD to prevent cpu/gpu stall
But the driver must be smart here and follow PIPE_TRANSFER_DISCARD,
as it should.
---
src/gallium/auxiliary/util/u_blitter.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index a163f93..31fc75a 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -522,10 +522,13 @@ static void blitter_set_dst_dimensions(struct blitter_context_priv *ctx,
static void blitter_draw_quad(struct blitter_context_priv *ctx)
{
struct pipe_context *pipe = ctx->base.pipe;
+ struct pipe_box box;
/* write vertices and draw them */
- pipe_buffer_write(pipe, ctx->vbuf,
- 0, sizeof(ctx->vertices), ctx->vertices);
+ u_box_1d(0, sizeof(ctx->vertices), &box);
+ pipe->transfer_inline_write(pipe, ctx->vbuf, u_subresource(0,0),
+ PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD,
+ &box, ctx->vertices, sizeof(ctx->vertices), 0);
util_draw_vertex_buffer(pipe, ctx->vbuf, 0, PIPE_PRIM_TRIANGLE_FAN,
4, /* verts */
More information about the mesa-commit
mailing list