diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2014-10-17 15:06:44 +0900 |
---|---|---|
committer | James Thomas <james.thomas@codethink.co.uk> | 2015-04-27 10:57:16 +0000 |
commit | 285536570423effc4a65a2abfb1ccf00473b09fb (patch) | |
tree | 4953ada83a8b550077cad03c30f698a0e58a362a | |
parent | 2c8b52b97998a865a43acbb2502e53cff9056681 (diff) | |
download | mesa-285536570423effc4a65a2abfb1ccf00473b09fb.tar.gz |
gk20a: use NOUVEAU_BO_GART as VRAM domain
GK20A does not have dedicated VRAM, therefore allocating in VRAM can be
sub-optimal and sometimes even harmful. Set its VRAM domain to
NOUVEAU_BO_GART so all objects are allocated in system memory.
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
-rw-r--r-- | src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c index 97e167639b0..a9e3dc42564 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c @@ -620,6 +620,16 @@ nvc0_screen_create(struct nouveau_device *dev) return NULL; pscreen = &screen->base.base; + /* Recognize chipsets with no VRAM */ + switch (dev->chipset) { + /* GK20A */ + case 0xea: + screen->base.vram_domain = NOUVEAU_BO_GART; + break; + default: + break; + } + ret = nouveau_screen_init(&screen->base, dev); if (ret) { nvc0_screen_destroy(pscreen); @@ -636,6 +646,11 @@ nvc0_screen_create(struct nouveau_device *dev) screen->base.sysmem_bindings |= PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER; + if (screen->base.vram_domain & NOUVEAU_BO_GART) { + screen->base.sysmem_bindings |= screen->base.vidmem_bindings; + screen->base.vidmem_bindings = 0; + } + pscreen->destroy = nvc0_screen_destroy; pscreen->context_create = nvc0_create; pscreen->is_format_supported = nvc0_screen_is_format_supported; |