diff options
Diffstat (limited to 'src/gallium/drivers/nvc0/nvc0_state_validate.c')
-rw-r--r-- | src/gallium/drivers/nvc0/nvc0_state_validate.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gallium/drivers/nvc0/nvc0_state_validate.c b/src/gallium/drivers/nvc0/nvc0_state_validate.c index ded461b9c5..fe40d493d9 100644 --- a/src/gallium/drivers/nvc0/nvc0_state_validate.c +++ b/src/gallium/drivers/nvc0/nvc0_state_validate.c @@ -263,7 +263,7 @@ nvc0_constbufs_validate(struct nvc0_context *nvc0) BEGIN_RING(chan, RING_3D(CB_BIND(s)), 1); OUT_RING (chan, (i << 4) | 0); if (i == 0) - nvc0->state.uniform_buffer_bound &= ~(1 << s); + nvc0->state.uniform_buffer_bound[s] = 0; continue; } @@ -272,14 +272,15 @@ nvc0_constbufs_validate(struct nvc0_context *nvc0) base = s << 16; bo = nvc0->screen->uniforms; - if (nvc0->state.uniform_buffer_bound & (1 << s)) + if (nvc0->state.uniform_buffer_bound[s] >= res->base.width0) rebind = FALSE; else - nvc0->state.uniform_buffer_bound |= (1 << s); + nvc0->state.uniform_buffer_bound[s] = + align(res->base.width0, 0x100); } else { bo = res->bo; } -#if 1 +#if 0 nvc0_m2mf_push_linear(nvc0, bo, NOUVEAU_BO_VRAM, base, res->base.width0, res->data); BEGIN_RING(chan, RING_3D_(0x021c), 1); @@ -290,7 +291,7 @@ nvc0_constbufs_validate(struct nvc0_context *nvc0) } else { bo = res->bo; if (i == 0) - nvc0->state.uniform_buffer_bound &= ~(1 << s); + nvc0->state.uniform_buffer_bound[s] = 0; } if (bo != nvc0->screen->uniforms) |