@Hexmage960, post #30
W Amiga OS (już od 1) nie trzeba tykać bitmapy, należy tylko podpiąć wskaźnik pod RastPort
Mi chodziło o RastPort
W oficjalnej dokumentacji jest wyraźnie napisane, że struktura Screen->BitMap nie powinna być używana, w zamian powinno się używać Screen->RastPort, bo liczba bitplanów może wzrosnąć.
W dokumentacji jest wyszczególnione, które funkcje są niskopoziomowymi.
OwnBlitter() stanowi systemowy semafor na Blitter, konieczny ze względu na wielozadaniowość. I znowu, ta funkcja należy do niskopoziomowych.
@kiero, post #31
@Hexmage960, post #32
Programy takie po prostu nie będą akcelerowane przez nowsze kości graficzne. Ale będą działać poprawnie na nowych kościach o ile stosują funkcje korzystające z RastPortu jako interfejsu do takiej BitMapy
RastPort robi za abstrakcję i ma akcesory typu SetAPen(), zatem jest to struktura prywatna
Te akcesory mogą patrzeć na pole BitMap na swój sposób.
@kiero, post #33
@Hexmage960, post #34
OK. Wyobraź sobie sytuację, gdy piszą nową wersję Amiga OS z obsługą trybów RTG.
Tak się szczęśliwie składa, że BitMapa ma pole Flags z wieloma wolnymi polami oraz pole Depth oraz na sztywno określone 8 pól Planes. Funkcja AllocBitMap() mogłaby w nowej odsłonie pobierać nową flagę i tworzyć odpowiednią strukturę BitMap (rozszerzoną - nic nie wiemy o rozmiarze tej struktury).
Pierwsze 8 planów w zasadzie nie musi być wtedy nawet wypełnionych buforami planarnymi, ponieważ funkcje nowego Amiga OS zawsze rozpoznają z jaką BitMapą mają do czynienia.
Gdybyśmy jednak potrzebowali używać takiej BitMapy ze starymi funkcjami, albo programami, które grzebią w bitmapie bezpośrednio, to oczywiście te pola musiałyby być również zaalokowane celem pełnej kompatybilności ze starszymi programami. InitBitMap() oczywiście nie ustawiałoby naszej flagi.
Być może można to rozwiązać w ten sposób, że zamiast kombinować z rozszerzaniem struktury BitMap, po prostu wprowadzić nową strukturę typu BitMap Chunky off-screen i dodać nowe funkcje do graphics.library. Wtedy z przyśpieszenia sprzętowego chunky korzystałyby wybrane programy.
Programiści Commodore jednak radzili sobie i z takimi problemami wprowadzając rozszerzenia struktur (ViewExtra, ViewPortExtra) oraz obiekty (BOOPSI, Datatypy).
@kiero, post #35