Xref: news2.mv.net comp.os.msdos.djgpp:4092 From: Arash Newsgroups: comp.os.msdos.djgpp Subject: SVGA direct memory access: why so slow??? Date: 20 May 1996 14:56:44 GMT Organization: Chalmers University of Technology Lines: 80 Message-ID: <4nq17c$2a2@nyheter.chalmers.se> NNTP-Posting-Host: sv31977.ios.chalmers.se Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Hi' I'm trying to copy a linear bitamp to a 640x400x256 screen. Everything works just fine, the only problem is the slow paging function which (i think) is the most time-consuming routine here since it uses an external interrupt (video, int 0x10). I just get the "SVGA programmers guide" 1600 pages :( but i don't think there are many PMODE-code in it... I think i should use vga-resgister insted of an interrupt, or write to all pages without page switching (like mode X 320x240), but i don't know how to do it... I'll send you some code just so you can see how slow everything goes... -- cut here -- #include #include #include #include char *Buffer; void SetupX(void){ __dpmi_regs R; R.x.ax = 0x4f02; R.x.bx = 0x100; __dpmi_int(0x10,&R); } void Page(int page){ __dpmi_regs R; R.x.ax = 0x4f05; R.x.bx = 0; R.x.dx = page; __dpmi_int(0x10,&R); } void CopyBuffer(void){ Page(0); dosmemput(Buffer,1L << 16, 0xa0000); Page(1); dosmemput(Buffer + (1L << 16),1L << 16, 0xa0000); Page(2); dosmemput(Buffer + (1L << 17),1L << 16, 0xa0000); Page(3); dosmemput(Buffer + (1L << 17) + (1L << 16), 59392, 0xa0000); } void main(void){ Buffer = (char *)malloc(640 * 400); if(Buffer){ SetupX(); for(int a = 0; a < 10; a++){ for(long i = 0; i < 640 * 400; i++) Buffer[i] = i + a; CopyBuffer(); } free(Buffer); } else printf("malloc failed\n"); } -- cut here -- Thanx for any help -- Arash _____ |\/\/\/| / \ ____________ | | _______________ \/\/ | | net sux... \ | | | way too much | | (c)(c) | he he cool..| | (o)(o) | MTV dad! | C .---_) | __________/ S _) \ ____________| | |.___| / / | ,___| __/ / | \__/ <__/ | / <____/