From 20f190801031b46ecf7732ebf00eb59445f7f248 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Mon, 17 Jan 2005 13:10:02 +0000 Subject: [PATCH] added setting pattern colorspace (DMA) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10795 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../accelerants/nvidia/engine/nv_acc_dma.c | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c b/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c index 06eba35717..44a90e66b9 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c @@ -60,7 +60,7 @@ status_t nv_acc_wait_idle_dma() status_t nv_acc_init_dma() { uint16 cnt; - uint32 depth; + uint32 surf_depth, patt_depth; //fixme: move to shared info: uint32 max; @@ -647,17 +647,21 @@ status_t nv_acc_init_dma() switch(si->dm.space) { case B_CMAP8: - depth = 0x00000001; + surf_depth = 0x00000001; + patt_depth = 0x00000003; break; case B_RGB15_LITTLE: - depth = 0x00000004; + surf_depth = 0x00000004; + patt_depth = 0x00000001; break; case B_RGB16_LITTLE: - depth = 0x00000004; + surf_depth = 0x00000004; + patt_depth = 0x00000001; break; case B_RGB32_LITTLE: case B_RGBA32_LITTLE: - depth = 0x00000006; + surf_depth = 0x00000006; + patt_depth = 0x00000003; break; default: LOG(8,("ACC: init, invalid bit depth\n")); @@ -666,7 +670,7 @@ status_t nv_acc_init_dma() /* now setup 2D surface (writing 5 32bit words) */ nv_acc_cmd_dma(NV4_SURFACE, NV4_SURFACE_FORMAT, 4); - si->engine.dma.cmdbuffer[si->engine.dma.current++] = depth; /* Format */ + si->engine.dma.cmdbuffer[si->engine.dma.current++] = surf_depth; /* Format */ /* setup screen pitch */ si->engine.dma.cmdbuffer[si->engine.dma.current++] = ((si->fbc.bytes_per_row & 0x0000ffff) | (si->fbc.bytes_per_row << 16)); /* Pitch */ @@ -676,6 +680,11 @@ status_t nv_acc_init_dma() si->engine.dma.cmdbuffer[si->engine.dma.current++] = ((uint8*)si->fbc.frame_buffer - (uint8*)si->framebuffer); /* OffsetDest */ + /* set pattern colordepth (writing 2 32bit words) */ + //fixme: switch to NV4_IMAGE_PATTERN from NV_IMAGE_PATTERN??? + nv_acc_cmd_dma(NV_IMAGE_PATTERN, NV_IMAGE_PATTERN_SETCOLORFORMAT, 1); + si->engine.dma.cmdbuffer[si->engine.dma.current++] = patt_depth; /* SetColorFormat */ + /* tell the engine to fetch and execute all (new) commands in the DMA buffer */ nv_start_dma();