Yes, but I've since rebased it out on my 'cts' branch.
On Mon, Jun 26, 2017 at 4:02 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > Looks like the patch is based on your bindless branch. :) > > Reviewed-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > > > On 06/24/2017 07:24 PM, Ilia Mirkin wrote: >> >> The idxbuf could linger, and when a clear happened, which also uses the >> 3d bufctx, we could get an error trying to access it. >> >> This fixes spurious crashes/errors in CTS tests. >> >> Fixes: 61d8f3387d ("nv50,nvc0: clear index buffer bufctx bin >> unconditionally") >> Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> >> Cc: mesa-sta...@lists.freedesktop.org >> --- >> src/gallium/drivers/nouveau/nv50/nv50_vbo.c | 9 +++++---- >> src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c | 9 +++++---- >> 2 files changed, 10 insertions(+), 8 deletions(-) >> >> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c >> b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c >> index ac7d8267861..ed041121a26 100644 >> --- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c >> +++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c >> @@ -770,7 +770,6 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct >> pipe_draw_info *info) >> bool tex_dirty = false; >> int s; >> - nouveau_bufctx_reset(nv50->bufctx_3d, NV50_BIND_3D_INDEX); >> if (info->index_size && !info->has_user_indices) >> BCTX_REFN(nv50->bufctx_3d, 3D_INDEX, >> nv04_resource(info->index.resource), RD); >> @@ -838,9 +837,7 @@ nv50_draw_vbo(struct pipe_context *pipe, const >> struct pipe_draw_info *info) >> if (nv50->vbo_fifo) { >> nv50_push_vbo(nv50, info); >> - push->kick_notify = nv50_default_kick_notify; >> - nouveau_pushbuf_bufctx(push, NULL); >> - return; >> + goto cleanup; >> } >> if (nv50->state.instance_base != info->start_instance) { >> @@ -894,9 +891,13 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct >> pipe_draw_info *info) >> info->mode, info->start, info->count, >> info->instance_count); >> } >> + >> +cleanup: >> push->kick_notify = nv50_default_kick_notify; >> nv50_release_user_vbufs(nv50); >> nouveau_pushbuf_bufctx(push, NULL); >> + >> + nouveau_bufctx_reset(nv50->bufctx_3d, NV50_BIND_3D_INDEX); >> } >> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c >> b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c >> index 2856b4c6096..a5671ca09ac 100644 >> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c >> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c >> @@ -921,7 +921,6 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct >> pipe_draw_info *info) >> struct nvc0_screen *screen = nvc0->screen; >> int s; >> - nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_IDX); >> nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_BINDLESS); >> /* NOTE: caller must ensure that (min_index + index_bias) is >= 0 >> */ >> @@ -1040,9 +1039,7 @@ nvc0_draw_vbo(struct pipe_context *pipe, const >> struct pipe_draw_info *info) >> if (nvc0->state.vbo_mode) { >> nvc0_push_vbo(nvc0, info); >> - push->kick_notify = nvc0_default_kick_notify; >> - nouveau_pushbuf_bufctx(push, NULL); >> - return; >> + goto cleanup; >> } >> /* space for base instance, flush, and prim restart */ >> @@ -1089,9 +1086,13 @@ nvc0_draw_vbo(struct pipe_context *pipe, const >> struct pipe_draw_info *info) >> info->mode, info->start, info->count, >> info->instance_count); >> } >> + >> +cleanup: >> push->kick_notify = nvc0_default_kick_notify; >> nvc0_release_user_vbufs(nvc0); >> nouveau_pushbuf_bufctx(push, NULL); >> + >> + nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_3D_IDX); >> } >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev