nvc0: switch to the proper constants upload path
Makes things suddenly go surprisingly fast.
This commit is contained in:
@@ -80,7 +80,7 @@ struct nvc0_context {
|
||||
uint8_t num_textures[5];
|
||||
uint8_t num_samplers[5];
|
||||
uint16_t scissor;
|
||||
uint8_t uniform_buffer_bound; /* workaround */
|
||||
uint32_t uniform_buffer_bound[5];
|
||||
} state;
|
||||
|
||||
struct nvc0_blend_stateobj *blend;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user