nv50: avoid a NULL-ptr dereference when the pipe context changes
PATCH 1/1 nv50: avoid a NULL-ptr dereference when the pipe context changes
- We cannot assume all state objects are present when the pipe context changes.
--- src/gallium/drivers/nv50/nv50_state_validate.c | 27 +++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-)
src/gallium/drivers/nv50/nv50_state_validate.c +26 -1
@@ -148,7 +148,32 @@ nv50_state_emit(struct nv50_context *nv50)struct nouveau_channel *chan = screen->base.channel;if (nv50->pctx_id != screen->cur_pctx) { - nv50->state.dirty |=0xffffffff ; +if (nv50->state.fb) + nv50->state.dirty |=NV50_NEW_FRAMEBUFFER ; +if (nv50->state.blend) + nv50->state.dirty |=NV50_NEW_BLEND ; +if (nv50->state.zsa) + nv50->state.dirty |=NV50_NEW_ZSA ; +if (nv50->state.vertprog) + nv50->state.dirty |=NV50_NEW_VERTPROG ; +if (nv50->state.fragprog) + nv50->state.dirty |=NV50_NEW_FRAGPROG ; +if (nv50->state.rast) + nv50->state.dirty |=NV50_NEW_RASTERIZER ; +if (nv50->state.blend_colour) + nv50->state.dirty |=NV50_NEW_BLEND_COLOUR ; +if (nv50->state.stipple) + nv50->state.dirty |=NV50_NEW_STIPPLE ; +if (nv50->state.scissor) + nv50->state.dirty |=NV50_NEW_SCISSOR ; +if (nv50->state.viewport) + nv50->state.dirty |=NV50_NEW_VIEWPORT ; +if (nv50->state.tsc_upload) + nv50->state.dirty |=NV50_NEW_SAMPLER ; +if (nv50->state.tic_upload) + nv50->state.dirty |=NV50_NEW_TEXTURE ; +if (nv50->state.vtxfmt && nv50->state.vtxbuf) + nv50->state.dirty |=NV50_NEW_ARRAYS ; screen->cur_pctx = nv50->pctx_id; }
Signature · 1 line
1.6.4