nvc0: point vertex runout at a valid address
Reviewed-by: Christoph Bumiller <e0425955@student.tuwien.ac.at> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
d53bbabe61
commit
c47a01c29c
|
@ -589,7 +589,7 @@ nvc0_screen_create(struct nouveau_device *dev)
|
||||||
|
|
||||||
for (i = 0; i < 5; ++i) {
|
for (i = 0; i < 5; ++i) {
|
||||||
/* TIC and TSC entries for each unit (nve4+ only) */
|
/* TIC and TSC entries for each unit (nve4+ only) */
|
||||||
/* auxiliary constants (6 user clip planes, base instance id */
|
/* auxiliary constants (6 user clip planes, base instance id) */
|
||||||
BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
|
BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
|
||||||
PUSH_DATA (push, 512);
|
PUSH_DATA (push, 512);
|
||||||
PUSH_DATAh(push, screen->uniform_bo->offset + (5 << 16) + (i << 9));
|
PUSH_DATAh(push, screen->uniform_bo->offset + (5 << 16) + (i << 9));
|
||||||
|
@ -610,6 +610,21 @@ nvc0_screen_create(struct nouveau_device *dev)
|
||||||
BEGIN_NVC0(push, NVC0_3D(LINKED_TSC), 1);
|
BEGIN_NVC0(push, NVC0_3D(LINKED_TSC), 1);
|
||||||
PUSH_DATA (push, 0);
|
PUSH_DATA (push, 0);
|
||||||
|
|
||||||
|
/* return { 0.0, 0.0, 0.0, 0.0 } for out-of-bounds vtxbuf access */
|
||||||
|
BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
|
||||||
|
PUSH_DATA (push, 256);
|
||||||
|
PUSH_DATAh(push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||||
|
PUSH_DATA (push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||||
|
BEGIN_1IC0(push, NVC0_3D(CB_POS), 5);
|
||||||
|
PUSH_DATA (push, 0);
|
||||||
|
PUSH_DATAf(push, 0.0f);
|
||||||
|
PUSH_DATAf(push, 0.0f);
|
||||||
|
PUSH_DATAf(push, 0.0f);
|
||||||
|
PUSH_DATAf(push, 0.0f);
|
||||||
|
BEGIN_NVC0(push, NVC0_3D(VERTEX_RUNOUT_ADDRESS_HIGH), 2);
|
||||||
|
PUSH_DATAh(push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||||
|
PUSH_DATA (push, screen->uniform_bo->offset + (5 << 16) + (6 << 9));
|
||||||
|
|
||||||
/* max MPs * max warps per MP (TODO: ask kernel) */
|
/* max MPs * max warps per MP (TODO: ask kernel) */
|
||||||
if (screen->eng3d->oclass >= NVE4_3D_CLASS)
|
if (screen->eng3d->oclass >= NVE4_3D_CLASS)
|
||||||
screen->tls_size = 8 * 64;
|
screen->tls_size = 8 * 64;
|
||||||
|
@ -734,10 +749,6 @@ nvc0_screen_create(struct nouveau_device *dev)
|
||||||
|
|
||||||
IMMED_NVC0(push, NVC0_3D(EDGEFLAG), 1);
|
IMMED_NVC0(push, NVC0_3D(EDGEFLAG), 1);
|
||||||
|
|
||||||
BEGIN_NVC0(push, NVC0_3D(VERTEX_RUNOUT_ADDRESS_HIGH), 2);
|
|
||||||
PUSH_DATA (push, 0xab);
|
|
||||||
PUSH_DATA (push, 0x00000000);
|
|
||||||
|
|
||||||
PUSH_KICK (push);
|
PUSH_KICK (push);
|
||||||
|
|
||||||
screen->tic.entries = CALLOC(4096, sizeof(void *));
|
screen->tic.entries = CALLOC(4096, sizeof(void *));
|
||||||
|
|
Loading…
Reference in New Issue