mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-11 18:00:36 +02:00
nouveau: create linear gart/vram mman in common screen init
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
3a38a4b0a8
commit
cd24fcedec
6 changed files with 19 additions and 14 deletions
|
|
@ -251,6 +251,10 @@ nouveau_screen_init(struct nouveau_screen *screen, struct nouveau_device *dev)
|
|||
|
||||
util_format_s3tc_init();
|
||||
|
||||
screen->mm_GART = nouveau_mm_create(dev,
|
||||
NOUVEAU_BO_GART | NOUVEAU_BO_MAP,
|
||||
0x000);
|
||||
screen->mm_VRAM = nouveau_mm_create(dev, NOUVEAU_BO_VRAM, 0x000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -258,7 +262,12 @@ void
|
|||
nouveau_screen_fini(struct nouveau_screen *screen)
|
||||
{
|
||||
struct pipe_winsys *ws = screen->base.winsys;
|
||||
|
||||
nouveau_mm_destroy(screen->mm_GART);
|
||||
nouveau_mm_destroy(screen->mm_VRAM);
|
||||
|
||||
nouveau_channel_free(&screen->channel);
|
||||
|
||||
if (ws)
|
||||
ws->destroy(ws);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ struct nouveau_screen {
|
|||
void (*emit)(struct pipe_screen *, u32 sequence);
|
||||
u32 (*update)(struct pipe_screen *);
|
||||
} fence;
|
||||
|
||||
struct nouveau_mman *mm_VRAM;
|
||||
struct nouveau_mman *mm_GART;
|
||||
};
|
||||
|
||||
static INLINE struct nouveau_screen *
|
||||
|
|
|
|||
|
|
@ -27,14 +27,14 @@ nv50_buffer_allocate(struct nv50_screen *screen, struct nv50_resource *buf,
|
|||
unsigned domain)
|
||||
{
|
||||
if (domain == NOUVEAU_BO_VRAM) {
|
||||
buf->mm = nouveau_mm_allocate(screen->mm_VRAM, buf->base.width0, &buf->bo,
|
||||
&buf->offset);
|
||||
buf->mm = nouveau_mm_allocate(screen->base.mm_VRAM, buf->base.width0,
|
||||
&buf->bo, &buf->offset);
|
||||
if (!buf->bo)
|
||||
return nv50_buffer_allocate(screen, buf, NOUVEAU_BO_GART);
|
||||
} else
|
||||
if (domain == NOUVEAU_BO_GART) {
|
||||
buf->mm = nouveau_mm_allocate(screen->mm_GART, buf->base.width0, &buf->bo,
|
||||
&buf->offset);
|
||||
buf->mm = nouveau_mm_allocate(screen->base.mm_GART, buf->base.width0,
|
||||
&buf->bo, &buf->offset);
|
||||
if (!buf->bo)
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -101,7 +101,7 @@ nv50_buffer_download(struct nv50_context *nv50, struct nv50_resource *buf,
|
|||
|
||||
assert(buf->domain == NOUVEAU_BO_VRAM);
|
||||
|
||||
mm = nouveau_mm_allocate(nv50->screen->mm_GART, size, &bounce, &offset);
|
||||
mm = nouveau_mm_allocate(nv50->screen->base.mm_GART, size, &bounce, &offset);
|
||||
if (!bounce)
|
||||
return FALSE;
|
||||
|
||||
|
|
@ -136,7 +136,7 @@ nv50_buffer_upload(struct nv50_context *nv50, struct nv50_resource *buf,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
mm = nouveau_mm_allocate(nv50->screen->mm_GART, size, &bounce, &offset);
|
||||
mm = nouveau_mm_allocate(nv50->screen->base.mm_GART, size, &bounce, &offset);
|
||||
if (!bounce)
|
||||
return FALSE;
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ nv50_query_allocate(struct nv50_context *nv50, struct nv50_query *q, int size)
|
|||
}
|
||||
}
|
||||
if (size) {
|
||||
q->mm = nouveau_mm_allocate(screen->mm_GART, size, &q->bo, &q->base);
|
||||
q->mm = nouveau_mm_allocate(screen->base.mm_GART, size, &q->bo, &q->base);
|
||||
if (!q->bo)
|
||||
return FALSE;
|
||||
q->offset = q->base;
|
||||
|
|
|
|||
|
|
@ -229,8 +229,6 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
|
|||
if (screen->tic.entries)
|
||||
FREE(screen->tic.entries);
|
||||
|
||||
nouveau_mm_destroy(screen->mm_GART);
|
||||
nouveau_mm_destroy(screen->mm_VRAM);
|
||||
nouveau_mm_destroy(screen->mm_VRAM_fe0);
|
||||
|
||||
nouveau_grobj_free(&screen->tesla);
|
||||
|
|
@ -586,9 +584,6 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
|
|||
screen->tic.entries = CALLOC(4096, sizeof(void *));
|
||||
screen->tsc.entries = screen->tic.entries + 2048;
|
||||
|
||||
screen->mm_GART = nouveau_mm_create(dev, NOUVEAU_BO_GART | NOUVEAU_BO_MAP,
|
||||
0x000);
|
||||
screen->mm_VRAM = nouveau_mm_create(dev, NOUVEAU_BO_VRAM, 0x000);
|
||||
screen->mm_VRAM_fe0 = nouveau_mm_create(dev, NOUVEAU_BO_VRAM, 0xfe0);
|
||||
|
||||
nouveau_fence_new(&screen->base, &screen->base.fence.current, FALSE);
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@ struct nv50_screen {
|
|||
|
||||
struct nouveau_notifier *sync;
|
||||
|
||||
struct nouveau_mman *mm_GART;
|
||||
struct nouveau_mman *mm_VRAM;
|
||||
struct nouveau_mman *mm_VRAM_fe0;
|
||||
|
||||
struct nouveau_grobj *tesla;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue