mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
nv50: raise constant buffers size to maximum
Removed the param heaps, haven't been using them for a long time now.
This commit is contained in:
parent
75ee309ca9
commit
f5a4d70189
3 changed files with 10 additions and 15 deletions
|
|
@ -4163,7 +4163,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
|
|||
struct pipe_transfer *transfer;
|
||||
|
||||
if (!p->data[0] && p->immd_nr) {
|
||||
struct nouveau_resource *heap = nv50->screen->immd_heap[0];
|
||||
struct nouveau_resource *heap = nv50->screen->immd_heap;
|
||||
|
||||
if (nouveau_resource_alloc(heap, p->immd_nr, p, &p->data[0])) {
|
||||
while (heap->next && heap->size < p->immd_nr) {
|
||||
|
|
@ -4181,7 +4181,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
|
|||
p->immd_nr, NV50_CB_PMISC);
|
||||
}
|
||||
|
||||
assert(p->param_nr <= 512);
|
||||
assert(p->param_nr <= 16384);
|
||||
|
||||
if (p->param_nr) {
|
||||
unsigned cb;
|
||||
|
|
|
|||
|
|
@ -190,9 +190,7 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
|
|||
nouveau_grobj_free(&screen->tesla);
|
||||
nouveau_grobj_free(&screen->eng2d);
|
||||
nouveau_grobj_free(&screen->m2mf);
|
||||
nouveau_resource_destroy(&screen->immd_heap[0]);
|
||||
nouveau_resource_destroy(&screen->parm_heap[0]);
|
||||
nouveau_resource_destroy(&screen->parm_heap[1]);
|
||||
nouveau_resource_destroy(&screen->immd_heap);
|
||||
nouveau_screen_fini(&screen->base);
|
||||
FREE(screen);
|
||||
}
|
||||
|
|
@ -242,7 +240,7 @@ nv50_screen_relocs(struct nv50_screen *screen)
|
|||
OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl);
|
||||
OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl);
|
||||
OUT_RELOC (chan, screen->constbuf_parm[i],
|
||||
((NV50_CB_PVP + i) << 16) | 0x0800, rl, 0, 0);
|
||||
((NV50_CB_PVP + i) << 16) | 0x0000, rl, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -411,7 +409,7 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
|
|||
OUT_RING (chan, (NV50_CB_AUX << 16) | 0x0200);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (256 * 4) * 4,
|
||||
ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (4096 * 4) * 4,
|
||||
&screen->constbuf_parm[i]);
|
||||
if (ret) {
|
||||
nv50_screen_destroy(pscreen);
|
||||
|
|
@ -420,14 +418,12 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
|
|||
BEGIN_RING(chan, screen->tesla, NV50TCL_CB_DEF_ADDRESS_HIGH, 3);
|
||||
OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl);
|
||||
OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl);
|
||||
OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0800);
|
||||
/* CB_DEF_SET_SIZE value of 0x0000 means 65536 */
|
||||
OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0000);
|
||||
}
|
||||
|
||||
if (nouveau_resource_init(&screen->immd_heap[0], 0, 128) ||
|
||||
nouveau_resource_init(&screen->parm_heap[0], 0, 512) ||
|
||||
nouveau_resource_init(&screen->parm_heap[1], 0, 512))
|
||||
{
|
||||
NOUVEAU_ERR("Error initialising constant buffers.\n");
|
||||
if (nouveau_resource_init(&screen->immd_heap, 0, 128)) {
|
||||
NOUVEAU_ERR("Error initialising shader immediates heap.\n");
|
||||
nv50_screen_destroy(pscreen);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,8 +20,7 @@ struct nv50_screen {
|
|||
struct nouveau_bo *constbuf_misc[1];
|
||||
struct nouveau_bo *constbuf_parm[PIPE_SHADER_TYPES];
|
||||
|
||||
struct nouveau_resource *immd_heap[1];
|
||||
struct nouveau_resource *parm_heap[PIPE_SHADER_TYPES];
|
||||
struct nouveau_resource *immd_heap;
|
||||
|
||||
struct pipe_resource *strm_vbuf[16];
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue