From 17cf542f823331ec7f4079092c87e9908a43885e Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 25 May 2015 10:10:18 +0200 Subject: [PATCH] nvc0: prevent using unvalidated vertex programs Signed-off-by: Samuel Pitoiset --- src/gallium/drivers/nouveau/nvc0/nvc0_shader_state.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_shader_state.c b/src/gallium/drivers/nouveau/nvc0/nvc0_shader_state.c index 516b33b..47edb5b6 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_shader_state.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_shader_state.c @@ -87,15 +87,18 @@ nvc0_vertprog_validate(struct nvc0_context *nvc0) struct nouveau_pushbuf *push = nvc0->base.pushbuf; struct nvc0_program *vp = nvc0->vertprog; - if (!nvc0_program_validate(nvc0, vp)) - return; - nvc0_program_update_context_state(nvc0, vp, 0); + if (vp && nvc0_program_validate(nvc0, vp)) { + BEGIN_NVC0(push, NVC0_3D(SP_SELECT(1)), 2); + PUSH_DATA (push, 0x11); + PUSH_DATA (push, vp->code_base); + BEGIN_NVC0(push, NVC0_3D(SP_GPR_ALLOC(1)), 1); + PUSH_DATA (push, vp->num_gprs); + } else { + BEGIN_NVC0(push, NVC0_3D(SP_SELECT(1)), 1); + PUSH_DATA (push, 0x10); + } - BEGIN_NVC0(push, NVC0_3D(SP_SELECT(1)), 2); - PUSH_DATA (push, 0x11); - PUSH_DATA (push, vp->code_base); - BEGIN_NVC0(push, NVC0_3D(SP_GPR_ALLOC(1)), 1); - PUSH_DATA (push, vp->num_gprs); + nvc0_program_update_context_state(nvc0, vp, 0); // BEGIN_NVC0(push, NVC0_3D_(0x163c), 1); // PUSH_DATA (push, 0); -- 2.4.1