diff options
author | Ilia Mirkin <imirkin@alum.mit.edu> | 2016-06-05 19:02:29 -0400 |
---|---|---|
committer | Ilia Mirkin <imirkin@alum.mit.edu> | 2016-06-11 12:18:43 -0400 |
commit | 3f48548a6f65fe90b97956c7be73268917c6f2f9 (patch) | |
tree | e9b0c93ef92187a1b18d2df20e31918430d70808 /src/gallium/drivers/nouveau/nv50/nv50_shader_state.c | |
parent | f47845596bce36aeb84a8a7f6c7e643486ec2185 (diff) | |
download | external_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.c | 1 |
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); |