static bool nv50_compute_state_validate(struct nv50_context *nv50) { if (!nv50_compute_validate_program(nv50)) return false; if (nv50->dirty_cp & NV50_NEW_CP_GLOBALS) nv50_compute_validate_globals(nv50); /* TODO: validate textures, samplers, surfaces */ nv50_bufctx_fence(nv50->bufctx_cp, false); nouveau_pushbuf_bufctx(nv50->base.pushbuf, nv50->bufctx_cp); if (unlikely(nouveau_pushbuf_validate(nv50->base.pushbuf))) return false; if (unlikely(nv50->state.flushed)) nv50_bufctx_fence(nv50->bufctx_cp, true); return true; }
static bool nv50_state_validate_cp(struct nv50_context *nv50, uint32_t mask) { bool ret; /* TODO: validate textures, samplers, surfaces */ ret = nv50_state_validate(nv50, mask, validate_list_cp, ARRAY_SIZE(validate_list_cp), &nv50->dirty_cp, nv50->bufctx_cp); if (unlikely(nv50->state.flushed)) nv50_bufctx_fence(nv50->bufctx_cp, true); return ret; }