summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2014-02-04 02:30:18 -0500
committerIlia Mirkin <[email protected]>2014-02-06 18:50:19 -0500
commitf76c7ad5b14f5646a56ca3518f0c2e739811f223 (patch)
treeeb6e41d21a0292a916342579037ed6e7e01f0d69
parent364bdd24197e83bc76b0d244271e57ef4334a859 (diff)
nv50: only over-allocate by a page for code
The pre-fetching doesn't go too far. Tested with over-allocating by only a page, and didn't see any errors in dmesg. Saves ~512KB of VRAM. Signed-off-by: Ilia Mirkin <[email protected]> Cc: 10.1 <[email protected]> Reviewed-by: Christoph Bumiller <[email protected]>
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_screen.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
index 2b6ec3a11c0..2144140551a 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
@@ -739,12 +739,13 @@ nv50_screen_create(struct nouveau_device *dev)
goto fail;
}
- /* This over-allocates by a whole code BO. The GP, which would execute at
- * the end of the last page, would trigger faults. The going theory is that
- * it prefetches up to a certain amount. This avoids dmesg spam.
+ /* This over-allocates by a page. The GP, which would execute at the end of
+ * the last page, would trigger faults. The going theory is that it
+ * prefetches up to a certain amount.
*/
ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 1 << 16,
- 4 << NV50_CODE_BO_SIZE_LOG2, NULL, &screen->code);
+ (3 << NV50_CODE_BO_SIZE_LOG2) + 0x1000,
+ NULL, &screen->code);
if (ret) {
NOUVEAU_ERR("Failed to allocate code bo: %d\n", ret);
goto fail;