#include #include #include "nouveau_class.h" #include #include #include "screen.h" #include "object.h" #include "fifo.h" void context_surface_2d_init(void) { struct nouveau_grobj *subchCtxSurf2D = grobj[NvSubCtxSurf2D]; printf("-- Context surface 2D, init\n"); BEGIN_RING(chan, subchCtxSurf2D, NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY, 1); OUT_RING (chan, notifier->handle); BEGIN_RING(chan, subchCtxSurf2D, NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE, 2); OUT_RING (chan, chan->vram->handle); OUT_RING (chan, chan->vram->handle); BEGIN_RING(chan, subchCtxSurf2D, NV04_CONTEXT_SURFACES_2D_FORMAT, 4); OUT_RING (chan, (screen_bpp==32) ? NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8 : NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5 ); OUT_RING (chan, (screen_pitch<<16)|screen_pitch); OUT_RING (chan, screen_offset); /* src */ OUT_RING (chan, screen_offset); /* dst */ FIRE_RING(chan); }