[Nouveau] [PATCH 3/3] gk20a: use NOUVEAU_BO_GART as VRAM domain

Ilia Mirkin imirkin at alum.mit.edu
Wed Oct 29 08:29:56 PDT 2014


On Mon, Oct 27, 2014 at 6:34 AM, Alexandre Courbot <acourbot at nvidia.com> wrote:
> 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 at nvidia.com>
> ---
>  src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
> index ac5823e4a8d5..ad143cd9a140 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;

I think you also want to set vidmem_bindings = 0... although
potentially after the |= that's done below. Although I guess that
constbuf + command args buf need to be |='d into the sysmem_bindings
for this to work out well. That said, we don't really handle explicit
migration well right now, and those PIPE_BIND_* are *incredibly*
misleading and don't actually necessarily reflect the current usage.
[I have some patches to improve the situation, but you don't really
have to worry about that.]

> +      break;
> +   default:
> +      break;
> +   }
> +
>     ret = nouveau_screen_init(&screen->base, dev);
>     if (ret) {
>        nvc0_screen_destroy(pscreen);
> --
> 2.1.2
>


More information about the Nouveau mailing list