flat assembler
Message board for the users of flat assembler.
![]() Goto page Previous 1, 2 |
Author |
|
neville 28 Aug 2008, 22:33
vid wrote: What's the deal with banked/nonbanked??? Everything real uses at least one backbuffer anyway, and copying backbuffer to banked buffer is primitively easy. The deal is banked = paged video buffer access, non-banked = linear buffer access. Paged access adds significantly more overhead because you have to always check if you need to change the page every time you write a pixel. So it always makes the video update slower to execute. Of course if you don't check, and always set the page every time you write a pixel the code would be v-e-r-y slow. How slow depends on the page granularity of the video buffer, but some video cards use a buffer as small as 4K which is ridiculously slow. Most cards have 64K buffers, but even they are slow enough because, for example, one 1024x768x24-bit image would require at least 36 buffers (page changes) just to update one screen!! A card with a 4K buffer would require 576 page changes for each screen update!! Linear access avoids all this and allows for direct video RAM access at maximum speed, giving far superior performance. This argument is similar to the argument for and against "virtual memory" which I have raised previously ... To me, there is no longer any excuse why any operating system should use paged main memory access ... FAMOS doesn't, of course ![]() _________________ FAMOS - the first memory operating system |
|||
![]() |
|
neville 28 Aug 2008, 22:40
revolution wrote:
Quote: Actually I was referring to the server disk space. It also goes towards your quota of 5MB on this board. OK thanks, but now I've used up even more of my quota ![]() What happens if you use up your 5MB quota? No more uploads? Can you disable/delete previous uploads to regain some quota? _________________ FAMOS - the first memory operating system |
|||
![]() |
|
revolution 28 Aug 2008, 22:47
neville wrote: Can you disable/delete previous uploads to regain some quota? See you profile page: http://board.flatassembler.net/profile.php?mode=viewprofile&u=3145 At the bottom there is a link to the User Attachment Control Panel (UACP). |
|||
![]() |
|
LocoDelAssembly 28 Aug 2008, 22:49
neville, have you tried http://board.flatassembler.net/topic.php?p=55374#55374 for banked VESA yet?
Quote:
Yes, you can edit your post and remove the attachment by pressing the edit button and when you are in editing mode you will have extra controls to add/update/remove attachments. |
|||
![]() |
|
sinsi 29 Aug 2008, 04:38
neville wrote:
Nowadays, with long mode, you don't have a choice... |
|||
![]() |
|
Shahada 29 Aug 2008, 05:25
neville wrote: How slow depends on the page granularity of the video buffer, but some video cards use a buffer as small as 4K which is ridiculously slow. Most cards have 64K buffers, but even they are slow enough because, for example, one 1024x768x24-bit image would require at least 36 buffers (page changes) just to update one screen!! A card with a 4K buffer would require 576 page changes for each screen update!! neville, you make a confusion between window size and window granularity. Window size is 64K in all implementations , only window granularity could vary, so the number of page changes is the same. The difference would be for example that in case of 64K granularity for writting at video memory offset 65536 you have to set bank 1 and in case of 4K granularity you have to set bank 16, so you will have to set banks 0,16,32 etc. in place of 0,1,2 etc. when blitting a screen buffer, but the blitting is done in 64K chunks also. Last edited by Shahada on 29 Aug 2008, 10:31; edited 1 time in total |
|||
![]() |
|
sinsi 29 Aug 2008, 06:07
Window size is 64K in 99.9% of cases - there was a card or two that were 128k (A000-BFFF), although I never saw one.
If granularity is 64K then the window maps one page at A000. If granularity is 4K and you select page 0 then the window is filled with page 0..15 - the whole 64K. That's why I use a var which holds pages per window - it saves unneeded page selecting. |
|||
![]() |
|
neville 29 Aug 2008, 11:26
Shahada wrote:
Quote: neville, you make a confusion between window size and window granularity. Window size is 64K in all implementations , only window granularity could vary, so the number of page changes is the same. The difference would be for example that in case of 64K granularity for writting at video memory offset 65536 you have to set bank 1 and in case of 4K granularity you have to set bank 16, so you will have to set banks 0,16,32 etc. in place of 0,1,2 etc. when blitting a screen buffer, but the blitting is done in 64K chunks also. Actually I was trying to clear up the confusion, maybe not very successfully ![]() You see, I don't mention "window size" or "window granularity"; I only use "page granularity" and "buffer size", which is specific to paged VESA video modes. (I think the "window" you and Sinsi refer to is from the original PC memory map which ALL video cards must implement - graphics memory starts at 0:A0000, monochrome text at B0000, colour text at B8000 etc. Of course video memory MUST stop at BFFFF because video BIOS code starts at C0000.) The VESA documentation I have uses "page" and "window" for the same thing, but does not use "bank". Maybe "bank" is used in translations from languages other than English? Sorry, I'm not sure I understand your point about page changes, but I know what I've said is true because I've done it. If you get to page 16, then you have to go through pages 0...15 do you not? With 4K granularity page 16 is video offset 65536 (10000h). With 64K granularity, page 16 would be video offset 1048576 (100000h) etc. Sorry, also I don't understand what is "blitting" please? Sinsi, did you post some code that calls the VESA BIOS fast Set Window/Page function? I'd like to try that one day... I hope you can see from my code how I've done it. And about long mode - yes I'm very disappointed there is no Flat Real Long Mode (yet... ![]() Shahada, I've also done this code in 24/32-bit paged VESA modes which works fine in FAMOS, but I just ported it to DOS and it crashes. Some debugging required... revolution, LocoDelAssembly thanks. Loco your link is about SMSW, not banked/paged/windowed VESA? _________________ FAMOS - the first memory operating system |
|||
![]() |
|
Shahada 29 Aug 2008, 12:03
neville wrote: You see, I don't mention "window size" or "window granularity"; I only use "page granularity" and "buffer size", which is specific to paged VESA video modes. (I think the "window" you and Sinsi refer to is from the original PC memory map which ALL video cards must implement - graphics memory starts at 0:A0000, monochrome text at B0000, colour text at B8000 etc. Of course video memory MUST stop at BFFFF because video BIOS code starts at C0000.) The VESA documentation I have uses "page" and "window" for the same thing, but does not use "bank". Maybe "bank" is used in translations from languages other than English? Sorry, my English is very bad, you know that ![]() |
|||
![]() |
|
revolution 29 Aug 2008, 12:30
neville wrote: Sorry, also I don't understand what is "blitting" please? |
|||
![]() |
|
LocoDelAssembly 29 Aug 2008, 14:16
Quote:
Mostly, but in the explanation there is also "described" a trick to emulate LFB on banked VESA. ![]() |
|||
![]() |
|
neville 29 Aug 2008, 20:09
Shahada, thanks your explanation is perfectly correct. If you are new to programming you are learning very fast
![]() ![]() Maybe my VESA "page-changing" code could be more efficient? I never really wanted to implement paged VESA because as you know I think LFB mode is infinitely better. But to ensure FAMOS would boot on most machines, I had to make paged mode the default ![]() I discovered that the BIOS page changing code INT 10/AX=4F05 is very slow, affecting the GUI performance. If you look at my code you will see that I always set Page "0", never any other page number. Maybe incrementing the page number could speed it up, but not according to my experiments. One day I might try the WinFuncPtr (fast direct call) at dword[0CH] in the VBE ModeInfoBlock... Loco, no FAMOS definitely does not use "paged" memory, other than in paged VRAM. Thanks, maybe LFB emulation would make me feel better, but personally I would much prefer the real thing ![]() _________________ FAMOS - the first memory operating system |
|||
![]() |
|
Goto page Previous 1, 2 < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.