mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 13:54:57 +08:00
drm/nv50: simplify bo moves now that they're all through the vm
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
d550c41e4f
commit
a670478834
@ -497,15 +497,6 @@ nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t
|
|
||||||
nouveau_bo_mem_ctxdma(struct ttm_buffer_object *bo,
|
|
||||||
struct nouveau_channel *chan, struct ttm_mem_reg *mem)
|
|
||||||
{
|
|
||||||
if (mem->mem_type == TTM_PL_TT)
|
|
||||||
return chan->gart_handle;
|
|
||||||
return chan->vram_handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nvc0_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
|
nvc0_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
|
||||||
struct ttm_mem_reg *old_mem, struct ttm_mem_reg *new_mem)
|
struct ttm_mem_reg *old_mem, struct ttm_mem_reg *new_mem)
|
||||||
@ -579,14 +570,6 @@ nv50_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
|
|||||||
else
|
else
|
||||||
dst_offset += dev_priv->gart_info.aper_base;
|
dst_offset += dev_priv->gart_info.aper_base;
|
||||||
|
|
||||||
ret = RING_SPACE(chan, 3);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
BEGIN_RING(chan, NvSubM2MF, 0x0184, 2);
|
|
||||||
OUT_RING (chan, nouveau_bo_mem_ctxdma(bo, chan, old_mem));
|
|
||||||
OUT_RING (chan, nouveau_bo_mem_ctxdma(bo, chan, new_mem));
|
|
||||||
|
|
||||||
while (length) {
|
while (length) {
|
||||||
u32 amount, stride, height;
|
u32 amount, stride, height;
|
||||||
|
|
||||||
@ -666,6 +649,15 @@ nv50_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
nouveau_bo_mem_ctxdma(struct ttm_buffer_object *bo,
|
||||||
|
struct nouveau_channel *chan, struct ttm_mem_reg *mem)
|
||||||
|
{
|
||||||
|
if (mem->mem_type == TTM_PL_TT)
|
||||||
|
return chan->gart_handle;
|
||||||
|
return chan->vram_handle;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nv04_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
|
nv04_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
|
||||||
struct ttm_mem_reg *old_mem, struct ttm_mem_reg *new_mem)
|
struct ttm_mem_reg *old_mem, struct ttm_mem_reg *new_mem)
|
||||||
|
@ -96,13 +96,15 @@ nouveau_dma_init(struct nouveau_channel *chan)
|
|||||||
OUT_RING(chan, 0);
|
OUT_RING(chan, 0);
|
||||||
|
|
||||||
/* Initialise NV_MEMORY_TO_MEMORY_FORMAT */
|
/* Initialise NV_MEMORY_TO_MEMORY_FORMAT */
|
||||||
ret = RING_SPACE(chan, 4);
|
ret = RING_SPACE(chan, 6);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
BEGIN_RING(chan, NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_NAME, 1);
|
BEGIN_RING(chan, NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_NAME, 1);
|
||||||
OUT_RING(chan, NvM2MF);
|
OUT_RING (chan, NvM2MF);
|
||||||
BEGIN_RING(chan, NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1);
|
BEGIN_RING(chan, NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 3);
|
||||||
OUT_RING(chan, NvNotify0);
|
OUT_RING (chan, NvNotify0);
|
||||||
|
OUT_RING (chan, chan->vram_handle);
|
||||||
|
OUT_RING (chan, chan->gart_handle);
|
||||||
|
|
||||||
/* Sit back and pray the channel works.. */
|
/* Sit back and pray the channel works.. */
|
||||||
FIRE_RING(chan);
|
FIRE_RING(chan);
|
||||||
|
Loading…
Reference in New Issue
Block a user