Blitter
Blitter (anglicky BLock Image Transfer) je v informačních technologiích označení pro specializovaný obvod (někdy koprocesor), který nezávisle na CPU velmi rychle přesunuje data v paměti počítače. Typicky slouží jako akcelerace pro přesun části obrazu (bitmapy) zobrazené na monitoru počítače.
Důvod vzniku blitteru
U prvních počítačů s rastrovou grafikou byl obraz uložen ve zvláštní části operační paměti (framebuffer), jehož obsah přímo měnil proces (běžící programu) pomocí hlavního procesoru počítače (CPU). Pro mnoho jednoduchých grafických úkonů, jako podpora spritů, bylo potřeba vykonat mnoho strojových instrukcí, které obsah framebufferu měnily (tj. ve smyčkách prováděné přesuny dat, bitové posuvy, maskování). Pro CPU bez paměti cache byly tyto úkony velmi náročné.
Blitter v domácích počítačích
Mnoho domácích počítačů vyrobených v 80. letech 20. století mělo pro zvýšení výkonu v práci s grafikou specializovaný grafický koprocesor (GPU), který obsahoval blitter.
Commodore Amiga byl první osobní počítač, který měl plnohodnotný blitter. Commodore také získal první americký patent na blitter. Kromě schopnosti manipulovat s velkými oblastmi grafických dat obsahoval blitter Amigy také hardware pro kreslení čar a výplně oblastí („vybarvení“). Tyto vlastnosti učinily Amigu velmi populární u programátorů demoverzí pro ukazování možností nových technologií. Pozdější modely Atari ST také měly blitter koprocesor (pojmenovaný BLITTER). První řady tento koprocesor neobsahovaly pravděpodobně kvůli zdržení výroby těchto čipů oproti Atari ST. Další teorií, proč Atari zavedlo blitter až později, je ten, že firma reagovala na velký úspěch Amigy. Atari mělo v plánu dovolit domontování BLITTERů u prodejců, ale od plánu upustilo a BLITTER se objevil u série MEGA a u pozdějších systémů.
Jiné přístupy
Hardwarové sprity byly mnohem častějším systémem pro pohyb grafiky u herních zařízení, které používaly dvě rozdílné grafické cesty pro kreslení obrazů, a pak byly zkombinovány na displeji do jednoho obrazu. Sprite byly malé bitmapy, které se umisťovaly na obrazovce nezávisle na normální bitmapě pozadí, dovolující jim být přesunuty pomocí změny hodnot několika časovačů. Grafický obvod začal sprity vykreslovat po vypršení těchto nastavení, umožňující jim být zobrazeny bez manipulace paměti. Sprite systémy byly více efektivní v přesouvání obrazů, protože spotřebovaly jen 1/3 cyklů paměti oproti běžnému postupu.[zdroj?]
Sprity byly běžně spojovány s indexovanými „znaky“ pozadí, známé také jako „dlaždice“, v porovnání s více obecnými, paměťově náročnými, lineárními framebuffery, které jsou všudepřítomné dnes. Byly používány také pro zobrazování textu, kde se stránky mohly rychle obnovovat a posouvat pouhým nahrazením mřížky znaku, za cenu omezené přesnosti. Znaky byly často fonty uložené v ROM na ne-herních systémech, jako je IBM PC. Sprity mohou být také použity jako hardware kurzory v grafickém uživatelském rozhraní.
Některé sprite systémy mohou být použity jako „blitter v přestrojení“, například blitter pracující s jednoúčelovou paměťovou cestou pro framebuffery a zdroje obrazů. Některé optimalizované Amiga hry používaly mix blittingu a hardwarových sprite. Sprite se používal pro zobrazování unikátních barev odlišných od pozadí nebo pro zobrazovaní střel (velké množství malých pohybujících se objektů), zatímco blitter měnil velké oblasti obrazu. Hardwarové posouvání umožnilo měnit celé pozadí bez manipulace hlavní pamětí.
Operace blitteru
Program uloží informace do registrů popisujících, jaký přenos dat je potřeba vykonat a jaké logické operace aplikovat na data, posléze zadá příkaz na spuštění blitteru. Poté má CPU prostor pro jiné operace a mezitím blitter zpracovává přiřazené úkony.
Cílem přenosu dat je převážně framebuffer. Blitter může být také použit pro činnosti, které se netýkají grafiky. Například blitter dokáže rychleji naplnit část operační paměti nulami, než je schopen CPU. Dále pak dokáže pracovat se základními matematickými operacemi.
Obrázek vpravo pomáhá ukázat jak blitter může použít masku pro rozhodnutí jaké pixely přesune a jaké ponechá. Maska pracuje jako šablona ukazující jaké pixely budou zapsány do cílové paměti. Logická operace by byla Cíl = ((Pozadí) AND (Maska)) OR (Sprite)
.
Současná technologie
Blitter byl v současnosti nahrazen moderními grafickými procesory. Ty jsou navrženy primárně pro práci s počítačovou 3D grafikou a přidaly možnost upravit bitmapy pomocí pokročilých matematických operací, umožňujících libovolné transformace obrazu, dekomprese textur a filtrování, stínování pro osvětlené objekty a vytváření hloubky obrazu (z-buffering).