Перейти до вмісту

AMD Mantle: детально протестований графічний API

    1650445204

    API, абстракція та мантія: приклад API

    API Mantle від AMD є актуальною темою у світі комп’ютерних ігор. Є багато думок, багато інформації, багато спекуляцій і кілька відомих фактів, які потрібно просіяти. Ми хочемо розповісти всю історію, і ми хочемо зробити це правильно. На жаль, обговорювати цю тему, не вдаючись до промислового жаргону, майже неможливо, тому давайте почнемо з самого початку і викладемо деякі визначення, підготуємо основу, визначимо, де ми були і як сюди потрапили.

    Що таке API?

    Абревіатура API означає інтерфейс прикладного програмування. Ключове слово тут – інтерфейс. API призначений для того, щоб програми могли взаємодіяти або спілкуватися один з одним.

    Чудовим прикладом цього є функція копіювання та вставки в Windows. Коли ви копіюєте абзац тексту зі свого браузера в буфер обміну, а потім вставляєте цей текст у текстовий процесор, ви використовуєте потужність API. Розробники вашого браузера включили підтримку запиту (або виклику) API для копіювання, тоді як програмісти текстового процесора включили підтримку виклику API для вставки. Ці дві програми спілкуються одна з одною через API.

    Перевага API полягає в тому, що розробникам програмного забезпечення не потрібно кодувати конкретну підтримку для кожної можливої ​​програми. Якби не API, все програмне забезпечення для редагування документів у світі мало б містити унікальний код для взаємодії з будь-яким іншим програмним забезпеченням для редагування документів у світі. Цю модель було б неможливо підтримувати.

    Мінус? API не настільки ефективний, як специфічна підтримка кодування для прямого зв’язку між програмним забезпеченням. Ціною зручності є підвищене використання апаратних і процесорних ресурсів. 

     Добре, що таке графічний API?

    Оскільки API існує для забезпечення комунікаційного інтерфейсу між програмами, графічний API зв’язується між програмою та драйвером відеокарти.

    Назва гри тут – сумісність. Замість того, щоб кодувати ігровий движок для підтримки кількох шляхів взаємодії з певними драйверами відеокарти, розробники ігор можуть зосередитися на зв’язку з API. Потім API викликає графічний драйвер, який реалізує свої інструкції до графічної карти. Таким чином, графічні API можна вважати одним із рівнів абстракції між ОС і апаратним забезпеченням.

    Якщо метою графічного API є простота та зручність, чому існує більше одного API?

    OpenGL сягає своїм корінням у власний Iris GL SGI, який був випущений на початку 1980-х років. Несподіваним кроком компанія видала його як відкритий стандарт під назвою OpenGL (Open Graphics Library) API. Конкуренти SGI отримали доступ в обмін на розподіл тягаря підтримки та оновлення коду.

    Microsoft навіть була членом Ради з огляду архітектури OpenGL до 2003 року, коли компанія припинила підтримку на користь свого власного DirectX API, який зараз є більш плідним. Наразі DirectX використовується в Windows і Xboxes, тому виправдати вибір API Microsoft з точки зору розробника, який хоче отримати максимальну віддачу від доступних ресурсів, легко виправдати.

    Сказавши це, Джон Кармак — відомий захисник, який, як ми бачили, доводить, що OpenGL все ще можна використовувати для запуску високоякісних комп’ютерних ігор (наприклад, Rage). Крім того, OpenGL важливий, оскільки його можна використовувати на різних платформах: Windows, Mac і Linux. Android, Windows Phone та iPhone використовують OpenGL ES (Open GL для вбудованих систем). Оскільки ігри на мобільних пристроях набувають популярності, OpenGL стає все більш популярним.

    Що не так з DirectX 11 і OpenGL? Чому світу потрібен інший графічний API?

    Два суперечливі стандарти досить погані. Здається нерозумним додавати ще один. Отже, як існуючі API не відповідають очікуванням розробників?

    І DirectX, і OpenGL були створені в попередньому тисячолітті. Це був час, коли багатоядерні процесори в основних пристроях були можливими. Нещодавно деякі розробники висловлювали занепокоєння, що вони роздуті, схильні до нестабільності та погано масштабуються (або взагалі не масштабуються) на платформах із добре потоковими програмами. Крім того, жоден API не є ідеальним. Чи доводилося вам коли-небудь оновлювати графічний драйвер, щоб гра працювала належним чином? Кожен раз, коли це трапляється, графічний API не виконує свою роль рівня абстракції.

    Крім цього, ходили чутки, що Microsoft розглядала можливість зупинити розробку DirectX у 2013 році. В інтерв’ю c’t Рой Тейлор з AMD сказав: «Новий DirectX знову і знову оновлював галузь, нові відеокарти потребують більше процесори і більше оперативної пам’яті. Але DirectX 12 не прийшов. Ось і все. Наскільки відомо, DirectX 12 не планується”. Крім того, в електронній пошті Microsoft, що протікає, повідомляється, що кросплатформна платформа розробки XNA Game Studio не перебуває в активній розробці, і що DirectX більше не розвивається як технологія. Пізніше Microsoft відмовилася від цього і стверджувала, що це була неправильна комунікація, але без опублікованих планів щодо DirectX 12 спільнота розробників стала дратівливою.

    Microsoft Xbox One

    Sony Playstation 4

    AMD стверджує, що була підштовхнута до створення нового API, який би вирішував ці проблеми за вказівкою розробників, розчарованих станом DirectX і OpenGL. Крім того, оскільки APU та графічні процесори AMD керують Xbox One, PlayStation 4 та багатьма ПК, компанія має унікальне положення, щоб запропонувати API, який потенційно можна використовувати на кількох платформах.

    Як Mantle нібито покращується порівняно з OpenGL і DirectX?

    Мантія асоціюється зі словосполученнями «низький рівень» і «ближче до металу». Але що це насправді означає? Простіше кажучи, відповідь – мінімалізм. Він менший, простіший і, отже, швидше, ніж DirectX 11 і OpenGL. Новий API AMD нібито робить менше припущень про те, як розробники хочуть відтворити певну сцену. Це передає більше контролю над ресурсами в руки розробника, а не API, що дозволяє краще оптимізувати.

    У цьому світлі Mantle може бути більш ефективним. Крім того, Mantle може виконувати повністю паралельні подання на розіграш, щоб розподілити робоче навантаження на кілька виконавчих блоків ЦП. Якщо API здатний ефективно використовувати більше ресурсів обробки, повільніші ЦП з кількома виконавчими блоками можуть бути менш вузьким місцем.

    Простіше кажучи, AMD стверджує, що Mantle має потенціал для підвищення продуктивності в системах з повільнішими багатоядерними процесорами. Там, де центральний процесор не є вузьким місцем, Mantle може навіть знизити енергоспоживання графічного процесора.  

    AMD стверджує, що є великим прихильником відкритого коду. Чи є Mantle API з відкритим кодом?

    Mantle не є відкритим кодом, і AMD не стверджує, що коли-небудь буде відкритим вихідним кодом у майбутньому. Однак компанія стверджує, що до кінця 2014 року вона зробить Mantle SDK доступним будь-кому без ліцензійної плати чи обмежень після завершення програми закритого бета-тестування.

    Щоб уточнити, доступ до SDK не те саме, що відкритий вихідний код. Але це означає, що теоретично Nvidia і Intel можуть написати драйвер, сумісний з Mantle. Реально, я думаю, що це малоймовірно. Але я збережу свій аналіз ситуації для нашого висновку. Справа в тому, що AMD хоче зберегти контроль над Mantle, щоб оптимізувати його для архітектури GCN і дозволити розробникам швидко прийняти нові апаратні функції, що непрактично для загальних API, таких як DirectX і OpenGL.

    Гаразд, я думаю, що я знаю основи Mantle. Що тепер?

    Ну, ми хочемо перевірити Mantle і точно побачити, на що він здатний. Хоча AMD обіцяє, що ряд розробників працює над підтримкою Mantle для майбутніх ігор, таких як Civilization: Beyond Earth, Star Citizen і Dragon Age: Inquisition, на момент написання цього матеріалу на ринку є лише три ігри, які підтримують API AMD. : Battlefield 4, Thief і Plants vs. Zombies: Garden Warfare. Оскільки Plants vs. Zombies: Garden Warfare не має доступної функціональності для тесту Mantle, і вона використовує той самий механізм Frostbite, що і Battlefield 4, ми зосередимося на перших двох іграх з підтримкою Mantle.

    0 0 голосів
    Rating post
    Підписатися
    Сповістити про
    guest
    0 comments
    Вбудовані Відгуки
    Переглянути всі коментарі
    0
    Ми любимо ваші думки, будь ласка, прокоментуйте.x