O co chodzi w Mantle?
Odkąd pierwszy raz usłyszeliśmy o interfejsie programowania Mantle, pojawiło się wiele pytań i mało odpowiedzi – na te drugie mieliśmy czekać do APU13. Johann Anderson z DICE poprowadził sporą prezentację na temat Mantle, która co nieco wyjaśniła.
Przede wszystkim Mantle ma być metodą odsłaniania przed oprogramowaniem sposobu działania procesora graficznego. To, co w DirectX i OpenGL jest ukryte za rozbudowaną warstwą abstrakcji, w Mantle jest bezpośrednio dostępne dla programistów, co wiąże się z kilkoma korzyściami.
Po pierwsze, programiści mają większą kontrolę nad pamięcią i zasobami GPU, mogą zatem optymalizować kod tak, żeby wycisnąć jeszcze więcej wydajności z procesora graficznego. Często większa kontrola wiąże się, oczywiście, z większą odpowiedzialnością: trzeba pilnować poprawności procedur, skoro DirectX i OpenGL nie robią tego za programistę. Między innymi dlatego Mantle ułatwi programowanie i zmniejszy nakład pracy tylko w przypadku bardzo zaawansowanych silników graficznych – tam i tak trzeba sporo optymalizować, więc lepiej mieć do tego zaawansowane narzędzie. Prostsze i mniej wymagające gry nie skorzystają zbytnio z niskopoziomowego API.
Po drugie, Mantle umożliwia dowolne rozdzielanie zadań między rdzenie procesora. Dzięki pozbyciu się narzutu wysokopoziomowego API oraz sterownika zajmującego sporo czasu procesora można rozdzielić obliczenia związane z renderowaniem na większą liczbę wątków niż dwa lub trzy, a wydajność będzie rosnąć.

Wielordzeniowe procesory bardziej niż dotychczas pomogą w renderowaniu, podobnie jak to robią w konsolach. Najwyższy czas – w końcu co najmniej cztery wątki to już powinna być norma w maszynach do grania... Ponieważ wiele obliczeń można wykonać równolegle, a nie jedno po drugim, często wykorzystanie Mantle skróci całkowity czas między rozpoczęciem renderowania klatki a jej wyświetleniem, co szczególnie ma się przydać w symulacjach wirtualnej rzeczywistości (tam błyskawiczna reakcja na ruchy użytkownika jest bardzo ważna).
Po trzecie, Mantle pozwala programistom tworzyć oddzielne kolejki zadań dla każdego typu jednostek wykonawczych, jakie składają się na GPU. To pozwala wykonać mnóstwo operacji asynchronicznie, równocześnie z innymi, i produktywnie wykorzystać większą część procesora graficznego. Na przykład w czasie renderowania wielokątów można jednocześnie wykonywać obliczenia fizyczne, jeśli kolejka obliczeń jest pusta i są jakieś wolne procesory strumieniowe. Co więcej, system z kilkoma procesorami graficznymi (na przykład w trybie CrossFire) może zostać potraktowany po prostu jako większy zbiór kolejek. Obliczenia związane z jedną klatką można łatwo rozłożyć pomiędzy dwa lub więcej GPU i tak pozbyć się systemu AFR, w którym kolejne GPU generują na przemian kolejne klatki (i wprowadzają mikrozacięcia). Warto zauważyć, że GPU pracujące nad jednym obrazem nie muszą mieć podobnej wydajności, więc oddzielna karta graficzna pokroju Radeona R9 może dzięki Mantle współpracować ze zintegrowanym układem graficznym w APU. Można też renderować jeden obraz z użyciem więcej niż czterech GPU, choć taki scenariusz użytkowania został wspomniany tylko w odniesieniu do stacji roboczych i pewnie nie da się zastosować w grach.
Mantle na kartach Nvidii – dlaczego nie!
Powtórzmy: Mantle ma być przede wszystkim metodą odsłaniania przed oprogramowaniem sposobu działania procesora graficznego. W związku z tym interfejs ma być naturalnie kompatybilny nie tylko z procesorami graficznymi GCN, ale też z każdą nadchodzącą architekturą AMD. Ponieważ koncepcje działania GPU poszczególnych producentów są bardzo podobne, Mantle można by z powodzeniem użyć także z GPU Intela i Nvidii – o ile udostępnią stosowny sterownik. Znając awersję Nvidii do otwartych standardów, a Intela – do jakichkolwiek innych niż własne, możemy przypuszczać, że obie firmy nie zrobią żadnego kroku w tym kierunku, dopóki Mantle nie stanie się bardzo popularne wśród twórców oprogramowania.
Windows, Linux, Mac i... Android?
Na początku sterownik Mantle będzie dostępny tylko dla systemów Windows, ale niebawem mają się pojawić wersje dla Linuxa i komputerów Apple. Najbardziej pożądana jest ta pierwsza, bo Mantle może umożliwić łatwe przenoszenie gier konsolowych i windowsowych na Linuxa. Wykorzystanie go w grach przeznaczonych do SteamOS też byłoby z korzyścią dla Steam Machines i samych graczy. Niestety, nie podano żadnych terminów udostępnienia sterowników – to wszystko na razie obietnice.
Potencjalny wzrost wydajności i zakresu kontroli nad sprzętem, jaki umożliwia Mantle, wydaje się bardzo atrakcyjną perspektywą również w świecie mobilnym. W końcu małe procesory graficzne i tak mają ograniczoną wydajność, więc pozbycie się każdego zbędnego narzutu jest pożądane. Układy graficzne AMD nie są powszechne na tym rynku, więc ewentualne wykorzystanie Mantle w telefonach i tabletach będzie zależało od współpracy Google, Imagination Technologies i ARM. Przedstawiciele Imagination wypowiadali się entuzjastycznie o Mantle, ale nie zapowiedzieli żadnych konkretnych działań.
Na APU13 zabrakło tylko kilku oczekiwanych informacji. Oprócz gier Electronic Arts wykorzystujących silnik Frostbite nie zapowiedziano żadnych, które obsługiwałyby Mantle. Nie podano też konkretnych, podpartych liczbami przykładów wzrostu wydajności lub jakości grafiki osiągniętego dzięki Mantle. To drugie sami niedługo sprawdzimy, gdy tylko Battlefield 4 dostanie łatkę z obsługą Mantle, a na to pierwsze znowu musimy czekać...
