From 1252f57f6134a4a8b546dc42b06a847ebc310066 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Thu, 12 May 2005 13:39:50 +0000 Subject: [PATCH] added DMA surface cmd's colorspace dependant programming. These commands were still down at last 3D test, but already the Teapot is spinning at 300fps in DMA mode ona TNT2 over here!! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12641 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../accelerants/nvidia/engine/nv_acc_dma.c | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) 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 269a5b05d6..949d9d1f87 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_acc_dma.c @@ -463,6 +463,76 @@ status_t nv_acc_init_dma() ACCW(PR_CTX2_10, (ACCR(PR_CTX2_C) + (((uint32)((uint8 *)(si->framebuffer_pci))) & 0xfffff000))); } + +//dma 3D test: + switch(si->dm.space) + { + case B_CMAP8: + /* PRAMIN */ + ACCW(PR_CTX1_9, 0x00000302); /* format is X24Y8, LSB mono */ + ACCW(PR_CTX2_9, 0x00000302); /* dma_instance 0 valid, instance 1 invalid */ + ACCW(PR_CTX1_B, 0x00000000); /* format is invalid */ + ACCW(PR_CTX1_C, 0x00000000); /* format is invalid */ + if (si->ps.card_arch == NV04A) + { + ACCW(PR_CTX1_D, 0x00000302); /* format is X24Y8, LSB mono */ + } + else + { + ACCW(PR_CTX1_D, 0x00000000); /* format is invalid */ + ACCW(PR_CTX1_E, 0x00000302); /* format is X24Y8, LSB mono */ + } + break; + case B_RGB15_LITTLE: + /* PRAMIN */ + ACCW(PR_CTX1_9, 0x00000902); /* format is X17RGB15, LSB mono */ + ACCW(PR_CTX2_9, 0x00000902); /* dma_instance 0 valid, instance 1 invalid */ + if (si->ps.card_arch == NV04A) + { + ACCW(PR_CTX1_B, 0x00000702); /* format is X1RGB15, LSB mono */ + ACCW(PR_CTX1_C, 0x00000702); /* format is X1RGB15, LSB mono */ + } + else + { + ACCW(PR_CTX1_B, 0x00000902); /* format is X17RGB15, LSB mono */ + ACCW(PR_CTX1_C, 0x00000902); /* format is X17RGB15, LSB mono */ + ACCW(PR_CTX1_E, 0x00000902); /* format is X17RGB15, LSB mono */ + } + ACCW(PR_CTX1_D, 0x00000902); /* format is X17RGB15, LSB mono */ + break; + case B_RGB16_LITTLE: + /* PRAMIN */ + ACCW(PR_CTX1_9, 0x00000c02); /* format is X16RGB16, LSB mono */ + ACCW(PR_CTX2_9, 0x00000c02); /* dma_instance 0 valid, instance 1 invalid */ + if (si->ps.card_arch == NV04A) + { + ACCW(PR_CTX1_B, 0x00000702); /* format is X1RGB15, LSB mono */ + ACCW(PR_CTX1_C, 0x00000702); /* format is X1RGB15, LSB mono */ + } + else + { + ACCW(PR_CTX1_B, 0x00000c02); /* format is X16RGB16, LSB mono */ + ACCW(PR_CTX1_C, 0x00000c02); /* format is X16RGB16, LSB mono */ + ACCW(PR_CTX1_E, 0x00000c02); /* format is X16RGB16, LSB mono */ + } + ACCW(PR_CTX1_D, 0x00000c02); /* format is X16RGB16, LSB mono */ + break; + case B_RGB32_LITTLE: + case B_RGBA32_LITTLE: + /* PRAMIN */ + ACCW(PR_CTX1_9, 0x00000e02); /* format is X8RGB24, LSB mono */ + ACCW(PR_CTX2_9, 0x00000e02); /* dma_instance 0 valid, instance 1 invalid */ + ACCW(PR_CTX1_B, 0x00000e02); /* format is X8RGB24, LSB mono */ + ACCW(PR_CTX1_C, 0x00000e02); /* format is X8RGB24, LSB mono */ + ACCW(PR_CTX1_D, 0x00000e02); /* format is X8RGB24, LSB mono */ + if (si->ps.card_arch >= NV10A) + ACCW(PR_CTX1_E, 0x00000e02); /* format is X8RGB24, LSB mono */ + break; + default: + LOG(8,("ACC: init, invalid bit depth\n")); + return B_ERROR; + } +//end dma tst. } if (si->ps.card_arch == NV04A)