summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2016-06-05 19:02:29 -0400
committerIlia Mirkin <imirkin@alum.mit.edu>2016-06-11 12:18:43 -0400
commit3f48548a6f65fe90b97956c7be73268917c6f2f9 (patch)
treee9b0c93ef92187a1b18d2df20e31918430d70808 /src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
parentf47845596bce36aeb84a8a7f6c7e643486ec2185 (diff)
downloadexternal_mesa3d-3f48548a6f65fe90b97956c7be73268917c6f2f9.zip
external_mesa3d-3f48548a6f65fe90b97956c7be73268917c6f2f9.tar.gz
external_mesa3d-3f48548a6f65fe90b97956c7be73268917c6f2f9.tar.bz2
nv50: reinstate dedicated constbuf push path
This was disabled due to occasionally incorrect behavior when trying to upload data. It later became apparent that nvc0 also had a similar but slightly different issue, which was resolved in commit e50c01d5. This takes the same logic as nvc0 and applies it to nv50 (which has somewhat different interfaces). Unfortunately I did not note down precisely what was broken with UBOs when removing the support from nv50, but I've tested a bunch of local traces, and none of them appear to regress. This should hopefully improve performance when UBOs are used, but this was not directly verified. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Diffstat (limited to 'src/gallium/drivers/nouveau/nv50/nv50_shader_state.c')
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_shader_state.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
index f838d15..2326394 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
@@ -99,6 +99,7 @@ nv50_constbufs_validate(struct nv50_context *nv50)
BCTX_REFN(nv50->bufctx_3d, 3D_CB(s, i), res, RD);
nv50->cb_dirty = 1; /* Force cache flush for UBO. */
+ res->cb_bindings[s] |= 1 << i;
} else {
BEGIN_NV04(push, NV50_3D(SET_PROGRAM_CB), 1);
PUSH_DATA (push, (i << 8) | p | 0);