[Mesa-dev] [PATCH 2/3] i965: Split merge_inputs and clear_buffers.

Chris Wilson chris at chris-wilson.co.uk
Sat Jun 2 08:02:36 UTC 2018


Quoting Mathias.Froehlich at gmx.net (2018-05-17 07:38:27)
> From: Mathias Fröhlich <mathias.froehlich at web.de>
> 
> The merge_inputs function handles that part that changes when the
> inputs change. The clear_buffers function triggers when we may need
> a new upload. Thus the merge_inputs can be limited to be once
> per brw_draw_prims.
> 
> Signed-off-by: Mathias Fröhlich <Mathias.Froehlich at web.de>
> ---
>  src/mesa/drivers/dri/i965/brw_draw.c | 30 ++++++++++++++++++++++--------
>  1 file changed, 22 insertions(+), 8 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
> index ae3b7be2dd..2a7562a684 100644
> --- a/src/mesa/drivers/dri/i965/brw_draw.c
> +++ b/src/mesa/drivers/dri/i965/brw_draw.c
> @@ -278,21 +278,34 @@ brw_emit_prim(struct brw_context *brw,
>  
>  
>  static void
> -brw_merge_inputs(struct brw_context *brw)
> +brw_clear_buffers(struct brw_context *brw)
>  {
> -   const struct gen_device_info *devinfo = &brw->screen->devinfo;
> -   const struct gl_context *ctx = &brw->ctx;
> -   GLuint i;
> -
> -   for (i = 0; i < brw->vb.nr_buffers; i++) {
> +   for (unsigned i = 0; i < brw->vb.nr_buffers; ++i) {
>        brw_bo_unreference(brw->vb.buffers[i].bo);
>        brw->vb.buffers[i].bo = NULL;
>     }
>     brw->vb.nr_buffers = 0;
>  
> +   for (unsigned i = 0; i < brw->vb.nr_enabled; ++i) {
> +      brw->vb.enabled[i]->buffer = -1;
> +   }

Hmm, can we have an enabled buffer that is not in the set of
brw->vb.buffers[]?
-Chris


More information about the mesa-dev mailing list