[#1] Jaka jest wydajność Blittera na A1200?
Tak jak w tytule, czy można w przybliżeniu określić wydajność Blittera na A1200. Najlepiej na przykładzie. np.:
- po pierwsze czy można to jakoś wyliczyć żeby wiedzieć na ile można sobie pozwolić?
- czy jest w stanie płynnie przesuwać 20 obiektów wielkości 32x32 px o głębokości 6 bitplananów?
- co z większymi obiektami np. 90x120 - coś ala postać z Mortal Kombat, dwie da rade, a cztery?
- póki co udało mi się poruszać ok. 90 obiektów wielkosci 3x1 px w 3 bitplanach tworzących starffield. Jak dodawałem wiecej to już padało.. to dużo czy mało? czy 200 takich obiektów to już poza możliwościami blittera?
[#2] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #1

blitter jest taki sam jak w a500
[#3] Re: Jaka jest wydajność Blittera na A1200?

@mmarcin2741, post #2

Ale żeś pomógł.
Tak to ja też potrafię.
Blitter w A1200 jest szybszy o 50 % względem A500, bo Amiga 1200 ma szybszy procesor..
[#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.
[#5] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #1

Jeśli programujesz bez systemu to dużo się kręci wokół slotów DMA link. Na przykład przy mniejszym ekranie masz więcej slotów i co za tym idzie więcej czasu dla blittera. Znaczy się inaczej, ekran nie zjada slotów blittera i w tym sensie jest szybciej.

co do wyliczenia to najlepiej sprawdzić na konkretnym przykładzie (przykładach) bo tu zależy w jaki sposób piszesz kod (bądź jaki kod jest generowany przez dany język), szczególnie ma to znaczenie gdy chcesz wycisnąć ile się da.

Jeśli używasz bardzo małych obiektów czyli jak napisałeś 3 x 1 x 3 i blittera, to w sumie ustawienie rejestrów blittera (razem z czekaniem na niego) zajmie więcej czasu niż zrobienie tego procesorem.

Zamiast ruszać 90 obiektami (gwiazdkami) to czy nie szybciej jest ruszać ekranem ? Wtedy na ekranie masz gwiazdek tyle ile ma punktów ekran.
[#6] Re: Jaka jest wydajność Blittera na A1200?

@Kefir_Union, post #4

łoo panie..
[#7] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #6

To można by od razu trochę wyjaśnić po co jest cały zbiór procedur c2p od Kalmsa?
Ztcw to szybciej się wyświetla w trybie c2p???
A może coś bredzę? zombie
[#8] Re: Jaka jest wydajność Blittera na A1200?

@asman, post #5

kurcze, strasznie zagmatwane to Amigowe programowanie jest.. tyle roznych wariantów ze miesza się w głowie..

na razie się bawiłem w blitzu, testowałem sobie te gwiazdki ruszające się z rożną prędkością wiec poruszanie ekranem odpada, jeszcze myślałem zeby potestowac sobie bibliotekę Mildred pod blitza, mówią ze najszybsza do c2p
[#9] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #8

Jak piszesz jakiś bardziej zaawansowany program to naprawdę nie martwisz się o takie niskopoziomowe rzeczy, jakie zaproponowali koledzy.

Przecież obok samej grafiki trzeba dorobić wiele innych elementów i kalkulacje cyklów DMA się nie przydadzą - zresztą są zbędne.

Dogłębną optymalizację zostaw sobie na później. Najpierw zrób działający program.

Jeśli chodzi o wydajność Blittera, to ta zależy w głównej mierze od ilości kanałów. Dla prostych Blitów gdy nanosisz grafikę i nie mieszasz jej z tłem wystarczy jeden kanał A. Wówczas Blitter pracuje najszybciej.

Jak mieszasz grafikę z tłem (obiekty poruszające się) korzystasz z dwóch lub trzech kanałów - A, B i C.

Jak wykorzystasz sprytnie zasoby systemowe, uzyskasz dobry efekt. Generalnie systemowe funkcje rysujące są powolne, ale można je zastąpić, zachowując pełną funkcjonalność, jaką dostarcza system.

Sam w aktualnym silniku gry Magazyn korzystam z szybkiego trybu pracy Blittera, żeby błyskawicznie wypełniać obszary. A korzystam z okienek intuition.library.

Amiga została opracowana jako komputer wieloprogramowy. Więc przejmowanie copperlisty, o ile czasem się przydaje - nie jest zawsze konieczne.

Jeśli chcesz, by Twój program miał priorytet - po prostu nadaj taki komendą SetTaskPri(). Możesz też - co polecam - zainstalować własne serwery przerwań o wysokim priorytecie, dzięki czemu Twój task będzie dostawał aktualizacje informacji w pierwszej kolejności. Możesz pomijać pozostałe serwery.

Narzut systemowy przy odpowiednim użyciu jest nieznaczny, czasami pomijalny.

Jeśli chodzi o wybór - Blitter czy c2p - to zależy od tego co chcesz osiągnąć i na jaką Amigę piszesz. Blitter kopiuje dane bezpośrednio w postaci jaka jest, nie dokonując konwersji.
[#10] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #8

Właśnie. Zbyt pogmatwane a afekty takie sobie.
Nic dziwnego wiele rzeczy jak np blitter nie zmieniło się od roku 1983 kiedy zaprojektowano OCS.
Dlatego najlepiej byłoby amigową grafikę zastąpić czymś lepszym.
Albo przynajmniej dorzucić drugą do klasyka.
gry z c2p będą działały za wolno na wszystkim poniżej 040.
[#11] Re: Jaka jest wydajność Blittera na A1200?

@swinkamor12, post #10

Gdzie jest moderator? Spam się znowu zaczyna!!
[#12] Re: Jaka jest wydajność Blittera na A1200?

@RokiS, post #11

Na EAB uciszyli go dosyć szybko.
[#13] Re: Jaka jest wydajność Blittera na A1200?

@AmiClassic, post #12

Oooo. a masz na to linka?
[#14] Re: Jaka jest wydajność Blittera na A1200?

@ZbyniuR, post #13

W tym wątku: link
[#15] Re: Jaka jest wydajność Blittera na A1200?

@swinkamor12, post #10

Twoja wypowiedź ma niewiele wspólnego z tematem, za to bardzo przypomina trolling. Katarynka Ci się zepsuła? Wszyscy już wiedzą co masz do powiedzenia i że nie podoba Ci się amigowy chipset. A teraz odpuść, brateńku, ten wątek bo się zrobi jeszcze smutniej.
[#16] Re: Jaka jest wydajność Blittera na A1200?

@Kefir_Union, post #4

Jak nastęnym razem ktoś będzie chciał robić gry na Amigę i zapyta mnie o próg wejścia w architekturę, to powiem, że jest pomijalnie niski i pokażę mu twój komentarz

Ostatnia aktualizacja: 26.02.2020 15:43:48 przez _arti
[#17] Re: Jaka jest wydajność Blittera na A1200?

@_arti, post #16

Podstawienie liczby bitplanów i rozmiarów ekranu do wzoru to naprawdę nie jest zbyt skomplikowane zadanie . Poza tym to nie jest konieczne do rozpoczęcia programowania hardware Amigi. Można sobie np. uruchomić kopiowanie bobów i doświadczalnie zbadać ile zajmuje czasu. Wzory są do tego żeby wstępnie oszacować czy to co sobie wymyśliliśmy ma szansę realizacji w ramce. Kolega w poście nr 1 pisze coś o bitplanach więc chyba wie co to jest.

Ostatnia aktualizacja: 26.02.2020 18:02:32 przez Kefir_Union
[#18] Re: Jaka jest wydajność Blittera na A1200?

@_arti, post #16

Wygląda strasznie jak dla starego chłopa, który był w szkole ostatnio 20 lat temu :), ale tylko na początku.
[#19] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #1

Przy 320x256 6 bitplanów 4 kanałach audio bez coppera bez spriteów zostaje 37296 cykli DMA na ramkę.
To nie wystarczy na płynne przesuwanie:
- 20 obiektów wielkości 32x32 px o głębokości 6 bitplananów
- 90x120 - cztery razy coś ala postać z Mortal Kombat

Ostatnia aktualizacja: 26.02.2020 21:20:18 przez swinkamor12
[#20] Re: Jaka jest wydajność Blittera na A1200?

@recedent, post #15

Matematyki nie oszukasz.
[#21] Re: Jaka jest wydajność Blittera na A1200?

@Kefir_Union, post #17

Jest też strona link , wystarczy zmienić parametry początkowe i cieszyć oko wynikami po wciśnięciu run. :)
[#22] Re: Jaka jest wydajność Blittera na A1200?

@asman, post #21

Linię 21 zmianiamy na:

var free_dma_cycles = (226 * 312) - display_dma_cycles/4 - refresh_cycles - audio_cycles - sprite_cycles - copper_cycles;

i od razu wychodzi gigantyczna przewaga AGA nad OCS
[#23] Re: Jaka jest wydajność Blittera na A1200?

@asman, post #21

hmm, jak wrzucalem w Blitzu w petli boby o rozmiarze 3x1 to tak do ok. 100 dawało rade jeszcze, ale powyzej to juz mocno zwalniało a z tych wyliczeń wychodzi ze powinno sie dac 500
[#24] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #23

Obliczenia cykli DMA jakie pozostają dla blittera pozwala ocenić maksymalną wydajność programu. Jeśli nie piszesz w asm to musisz się liczyć z narzutem języka wysokiego poziomu. Samo uruchomienie blittera też trwa, nie opłaca się go używać dla obiektów wielkości piksela bo samo ustawienie rejestrów trwa dłużej niż gdybyś procesorem narysował punkt w pamięci chip.
[#25] Re: Jaka jest wydajność Blittera na A1200?

@mateusz_s, post #23

Przepraszam, że się wtrącam ale początkującemu nie powinno się polecać optymalizacji na niskim poziomie, ze względu na kilka rzeczy:

  • Taka optymalizacja jest nieistotna na poziomie projektowania programu,
  • Uczy to złych nawyków przywiązania do sprzętu. Gra będzie działać zaledwie na jednej konfiguracji sprzętowej, a nawet tylko komputerze programisty. Podczas gdy Amiga występuje w gamie wielu modeli z różną ilością pamięci, chipsetem, procesorem i rozszerzeniami,
  • Niskopoziomowa optymalizacja jest dość skomplikowana.

Nie daj Boże uzależniać program od sztywnej prędkości procesora, co było domeną niektórych gier.

Rozpoczynanie "od końca" może też tylko zniechęcić. Warto też poeksperymentować nawet na jakichś gotowych, choć wolniejszych procedurach, choćby tych dostarczanych przez system. Po pierwsze te funkcje są gotowe i łatwe w użyciu, a po drugie zostawi to spore pole na dalszą optymalizację. Trzeba sobie zostawić pewien zapas.

Poza tym system w wielu sferach radzi sobie dobrze z kompatybilnością i ogólnie lepiej zarządza zasobami komputera. Nie wspominam o takich oczywistościach jak instalacja na twardym dysku.

To moje trzy grosze w tym temacie.

hmm, jak wrzucalem w Blitzu w petli boby o rozmiarze 3x1 to tak do ok. 100 dawało rade jeszcze, ale powyzej to juz mocno zwalniało a z tych wyliczeń wychodzi ze powinno sie dac 500

Nie zawsze siłowe rozwiązanie jest najlepsze. Tak niewielkie BOBy trzeba, jak pisze Kefir - buforować czyli łączyć, ponieważ grafika Amigi jest w formie bitplanów i najlepiej jak dostęp jest nie 1-bitowy ale 16, lub 32-bitowy.

Oznacza to w praktyce, byś kilkanaście gwiazdek leżących w tym samym słowie pamięci malował za pomocą jednej operacji a nie kilkunastu!

Ostatnia aktualizacja: 26.02.2020 23:11:59 przez Hexmage960
[#26] Re: Jaka jest wydajność Blittera na A1200?

@Kefir_Union, post #22

O super!
Rozumiem że dzielimy przez cztery przy fetchmode 4. Dzięki.
[#27] Re: Jaka jest wydajność Blittera na A1200?

@Hexmage960, post #25

Skoro pyta o zagadnienia związane z bitplanami to znaczy że interesuje go optymalizacja pod sprzęt. Gdyby chciał robić pod system to pytanie o to jaka jest szybkość przy konkretnej (sześć) liczbie bitplanów jest bez sensu.
Samo pytanie o blitter już odnosi się do sprzętu. Programując pod systemem nikogo nie obchodzi czy prostokąty kopiuje blitter, procesor czy jeszcze coś innego, po prostu wywołuje funkcję CopyRect.

Ostatnia aktualizacja: 27.02.2020 10:53:11 przez Kefir_Union
[#28] Re: Jaka jest wydajność Blittera na A1200?

@Kefir_Union, post #27

W API AmigaOS nie ma takiej funkcji.
[#29] Re: Jaka jest wydajność Blittera na A1200?

@Kefir_Union, post #27

Programując pod systemem nikogo nie obchodzi czy prostokąty kopiuje blitter, procesor czy jeszcze coś innego, po prostu wywołuje funkcję CopyRect.

Zgadzam się.
[#30] Re: Jaka jest wydajność Blittera na A1200?

@Krashan, post #28

Czyżby ktoś nieświadomie puścił farbę na temat posiadania własnej biblioteki graficznej, tudzież kickstartu?


Ostatnia aktualizacja: 27.02.2020 14:59:27 przez sanjyuubi
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem