summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrice Mandin <pmandin@caramail.com>2008-09-21 14:12:04 +0200
committerPatrice Mandin <pmandin@caramail.com>2008-09-21 14:12:04 +0200
commitda85a94d99cfbd8f094a475fb2272efb4e87b9a9 (patch)
treedff4dbf01dbdba9e5095c9afaffd04d1b2e0d0e0
parent70071484d95bed8c2c932d1c79e20230bcdbc1dc (diff)
nouveau: init scaled_image_from_memory object for swizzled surface upload
-rw-r--r--src/gallium/winsys/drm/nouveau/nv04_surface.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gallium/winsys/drm/nouveau/nv04_surface.c b/src/gallium/winsys/drm/nouveau/nv04_surface.c
index 8fa3d106c..36c913a73 100644
--- a/src/gallium/winsys/drm/nouveau/nv04_surface.c
+++ b/src/gallium/winsys/drm/nouveau/nv04_surface.c
@@ -298,6 +298,22 @@ nouveau_surface_channel_create_nv04(struct nouveau_channel_context *nvc)
}
BIND_RING (chan, nvc->NvSIFM, nvc->next_subchannel++);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY, 1);
+ OUT_RING (chan, 0);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE, 1);
+ OUT_RING (chan, nvc->channel->vram->handle);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE, 1);
+ OUT_RING (chan, nvc->NvSwzSurf);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_PATTERN, 1);
+ OUT_RING (chan, 0);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_ROP, 1);
+ OUT_RING (chan, 0);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_BETA1, 1);
+ OUT_RING (chan, 0);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_BETA4, 1);
+ OUT_RING (chan, 0);
+ BEGIN_RING(chan, nvc->NvSIFM, NV04_SCALED_IMAGE_FROM_MEMORY_OPERATION, 1);
+ OUT_RING (chan, NV04_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY);
return 0;
}