[#4]
Re: Jaka jest wydajność Blittera na A1200?
@mateusz_s,
post #1
Wydajność blittera A1200 jest taka sama jak w A500
Najpierw policz sobie ile cykli DMA masz do dyspozycji na ramkę.
Na OCS i AGA korzystasz z tego samego wzoru:
DMA_cycles_left = (226*312)-display_dma_cycles-refresh_cycles-audio_cycles-sprite_cyces-copper_cycles
display_dma_cycles = (display_width/16)*display_height*number_of_planes
refresh_cycles = 312*4
audio_cycles = 312*audio_channels_playing
sprite_cycles = display_height*number_of_sprites*2
copper_cycles = (copper_moves*2)+(copper_waits*3) (liczba instrukcji na coperliście)
Jak widać, zmniejszenie liczby wyświetlanych bitplanów, wyłączenie sprajtów i muzyki zostawia więcej czasu dla blittera. Warto też nie wpisywać co ramkę na copperliście wszystkiego od nowa np. całej palety 256 kolorów bo to ze 2kb przerzucania danych.
W przypadku AGA jedyne co się zmienia to display_dma możesz podzielić przez dwa lub cztery w zależności od ustawionego FMODE (Memory Fetch Mode $dff1fc) . Można też ustawić FMODE dla sprajtów ale to nie zmniejsza liczby cykli potrzebnych do obsługi sprajta tylko pozwala zwiększyć jego szerokość do 32 lub 64 pikseli.
Następnie policz ile cykli zajmuje operacja blittera którą zamierzasz wykonać, to zależy od tego ilu używasz źródeł i jaki jest rozmiar w słowach kopiowanego obszaru. Jeżeli obliczona wartość jest mniejsza niż to co wyszło z wzorów wyżej to znaczy że wyrobi się w ramce. Do tego musisz założyć pewien margines na przygotowanie i uruchomienie blittera.