[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