summaryrefslogtreecommitdiff
path: root/context_surface_2d.c
diff options
context:
space:
mode:
authorPatrice Mandin <pmandin@caramail.com>2008-08-26 22:25:23 +0200
committerPatrice Mandin <pmandin@caramail.com>2008-08-26 22:25:23 +0200
commit4dbe6cfa1aca9ba81a3285975ce47e3ead21fc84 (patch)
tree87badf519b486db38f5ed5e757fe491e0209ca83 /context_surface_2d.c
parente1520747d8a8cdacfdefdd212da285f36403f493 (diff)
Add more objects
Diffstat (limited to 'context_surface_2d.c')
-rw-r--r--context_surface_2d.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/context_surface_2d.c b/context_surface_2d.c
new file mode 100644
index 0000000..accc6f1
--- /dev/null
+++ b/context_surface_2d.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+
+#include "screen.h"
+#include "object.h"
+#include "fifo.h"
+#include "nouveau_class.h"
+
+void context_surface_2d_init(void)
+{
+ printf("-- Context surface 2D, init\n");
+
+ SetSubchannel(NvSubCtxSurf2D, NvCtxSurf2D);
+
+ BEGIN_RING(NvSubCtxSurf2D, NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY, 1);
+ OUT_RING (NvSyncNotify);
+
+ BEGIN_RING(NvSubCtxSurf2D, NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE, 2);
+ OUT_RING (NvDmaFB);
+ OUT_RING (NvDmaFB);
+
+ BEGIN_RING(NvSubCtxSurf2D, NV04_CONTEXT_SURFACES_2D_FORMAT, 4);
+ OUT_RING( (screen_bpp==32)
+ ? NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8
+ : NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5
+ );
+ OUT_RING ((screen_pitch<<16)|screen_pitch);
+ OUT_RING (screen_offset); /* src */
+ OUT_RING (screen_offset); /* dst */
+
+ FIRE_RING();
+}