@balaton
Quote:
There's something with BlitBitMap that I don't understand and could not find out what could cause this. It seems that smaller blits are faster with ati-vga but larger ones are slower which does not make much sense as sm501 is also using pixman similar to how ati-vga uses it and while ati-vga is a bit more complex it does not depend on size of the blit that is just passed to pixman. Without pixman ati-vga is a bit faster for me but the same slow down for larger areas still happen so it's not pixman related but don't know yet what it may be.
Did you implement all of the BoardInfo->Blit*() functions in your driver?
AFAIK nearly all BoardInfo functions in a P96 driver can be set to NULL on AmigaOS 4.x and a fallback function in graphics.library is used instead. For example for a very simple framebuffer driver. On real hardware with HW acceleration it's usually slower, but for emulation the graphics.library functions might be faster.
IGNOREMASK should be enabled (=YES), no matter if real hardware or emulation, which requires using a matching DEVS:Monitors, or using Kickstart/p96Config (not sure if that's enabled on all systems, or only used on Classic Amigas).
Might also depend on the AllocCardMem() and/or AllocBitMap() functions, which should return at least 32 bit aligned (or more if the (emulated) gfx hardware requires it) memory.
Simple example of the required VRAM for a FullHD Workbench screen:
1920*1080*4(32 bit)*4(4 images, see below)/1024/1024 = nearly 32 MB VRAM.
1st "image": The screen bitmap itself, i.e. the final result displayed on the monitor.
2nd: The Workbench screen backdrop image.
3rd: The Workbench root window image.
4th: The Workbench drawer window images.
Add some more screens of other applications and even without using anything requiring even much more VRAM like 3D or compositing, just using plain old 2D, you can easily exceed the 64 MB VRAM of a R7000 like the onboard one in the Teron Mini/AmigaOne µA1.
Edited by joerg on 2026/4/27 17:14:45