nv50: raise constant buffers size to maximum
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Fri, 30 Apr 2010 20:57:23 +0000 (22:57 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Fri, 30 Apr 2010 20:57:23 +0000 (22:57 +0200)
Removed the param heaps, haven't been using them for a long
time now.

src/gallium/drivers/nv50/nv50_program.c
src/gallium/drivers/nv50/nv50_screen.c
src/gallium/drivers/nv50/nv50_screen.h

index 98f60821fc6de1220ae87ff5f786c353cad1f27f..0156ff95ff943f75a45e443147d9ff3a4f3ebdf5 100644 (file)
@@ -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;
index ad17991be9a05ab38e8350432cef8c865ade0d90..2dd10424245ce0564a0548dd68f2b14d4643e9b2 100644 (file)
@@ -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;
        }
index 40ebbee72e2e48e795e0de3e983a7d92dd1a7c2c..fbf15a75967068dd24f2a7cd0419936bad218b28 100644 (file)
@@ -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];