[Mesa-dev] [PATCH 09/10] gallium/u_blit: don't release vertex buffer at end of frame / in glFlush
Jose Fonseca
jfonseca at vmware.com
Wed Apr 18 08:06:49 PDT 2012
Marek,
Sorry for not noticing earlier ( I haven't been able to keep up with mesa traffic lately), but I'm afraid this and the 10/10 are not ok, as on several operating systems, namely, Windows WDDM, it is illegal to flush a command buffer with a buffer mapped.
Jose
----- Original Message -----
> There's no reason to do that. The buffer being used for rendering is
> always
> mapped as unsynchronized.
> ---
> src/gallium/auxiliary/util/u_blit.c | 17 ++++-------------
> src/gallium/auxiliary/util/u_blit.h | 5 -----
> src/mesa/state_tracker/st_cb_flush.c | 1 -
> 3 files changed, 4 insertions(+), 19 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_blit.c
> b/src/gallium/auxiliary/util/u_blit.c
> index 1279733..e5b97f7 100644
> --- a/src/gallium/auxiliary/util/u_blit.c
> +++ b/src/gallium/auxiliary/util/u_blit.c
> @@ -232,8 +232,10 @@ get_next_slot( struct blit_state *ctx )
> {
> const unsigned max_slots = 4096 / sizeof ctx->vertices;
>
> - if (ctx->vbuf_slot >= max_slots)
> - util_blit_flush( ctx );
> + if (ctx->vbuf_slot >= max_slots) {
> + pipe_resource_reference(&ctx->vbuf, NULL);
> + ctx->vbuf_slot = 0;
> + }
>
> if (!ctx->vbuf) {
> ctx->vbuf = pipe_buffer_create(ctx->pipe->screen,
> @@ -674,17 +676,6 @@ util_blit_pixels(struct blit_state *ctx,
> }
>
>
> -/* Release vertex buffer at end of frame to avoid synchronous
> - * rendering.
> - */
> -void util_blit_flush( struct blit_state *ctx )
> -{
> - pipe_resource_reference(&ctx->vbuf, NULL);
> - ctx->vbuf_slot = 0;
> -}
> -
> -
> -
> /**
> * Copy pixel block from src texture to dst surface.
> * The sampler view's first_level field indicates the source
> diff --git a/src/gallium/auxiliary/util/u_blit.h
> b/src/gallium/auxiliary/util/u_blit.h
> index 3009e25..810d01b 100644
> --- a/src/gallium/auxiliary/util/u_blit.h
> +++ b/src/gallium/auxiliary/util/u_blit.h
> @@ -86,11 +86,6 @@ util_blit_pixels_tex(struct blit_state *ctx,
> int dstX1, int dstY1,
> float z, uint filter);
>
> -/* Call at end of frame to avoid synchronous rendering.
> - */
> -extern void
> -util_blit_flush( struct blit_state *ctx );
> -
> #ifdef __cplusplus
> }
> #endif
> diff --git a/src/mesa/state_tracker/st_cb_flush.c
> b/src/mesa/state_tracker/st_cb_flush.c
> index 724bc19..4cde84a 100644
> --- a/src/mesa/state_tracker/st_cb_flush.c
> +++ b/src/mesa/state_tracker/st_cb_flush.c
> @@ -85,7 +85,6 @@ void st_flush( struct st_context *st,
> * successive frames:
> */
> st_flush_bitmap(st);
> - util_blit_flush(st->blit);
> util_gen_mipmap_flush(st->gen_mipmap);
>
> st->pipe->flush( st->pipe, fence );
> --
> 1.7.5.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list