> > > > AMD отказалась от отдельного пути в драйвере для шейдеров примитивов (Primitive Shaders) (обновление 2)

AMD отказалась от отдельного пути в драйвере для шейдеров примитивов (Primitive Shaders) (обновление 2)

Опубликовано:

radeon-vega-frontier-editionУже несколько дней упорно ходят слухи, что поддержка шейдеров примитивов архитектуры Vega так и не появится в финальной версии соответствующего драйвера. Более подробно функциональность шейдеров примитивов мы опишем позже.

Но сейчас вернемся к слуху, который подтвердил наш коллега Марк Сотер (Marc Sauter) с ресурса Golem.de на форуме 3D Center. Если верить утверждению AMD, которое было сделано во время дискуссии на CES Tech Day в начале января, от альтернативного пути в драйвере для шейдеров примитивов было решено отказаться. Вместе этого шейдеры примитивов будут доступны разработчикам через API. Но AMD пока не дает информацию о том, как будет выглядеть реализация.

Впрочем, если быть честным, AMD никогда и не обещала неявное использование (implicit mode) шейдеров примитивов. До сих пор говорилось только об использовании через API.

Таким образом, поддержка шейдеров примитивов должна быть явно прописана разработчиками (explicit). В коде движка или игры должны быть соответствующие процедуры. Хотя явная поддержка режима CrossFire под DirectX 12, например, сейчас прописана только в Ashes of the Singularity. Неявная поддержка шейдеров примитивов могла бы увеличить производительность в некоторых играх. Хотя явная поддержка позволяет разработчикам поддержать Primitive Shaders намного эффективнее, что позволит сильнее раскрыть потенциал производительности. Но, опять же, потребует дополнительных усилий со стороны разработчиков.

Как работают шейдеры примитивов

Из новшеств конвейера геометрии архитектуры Vega можно назвать то, что вершинные и геометрические шейдеры больше не обрабатываются по-отдельности. Вместо них используются шейдеры примитивов. Они могут включать в себя расчеты вершин и геометрии, также новые шейдеры позволяют лучше распределить нагрузку по доступным аппаратным ресурсам благодаря улучшенному блоку Load Balancer. В результате потоковые процессоры будут нагружаться более эффективно. GPU постоянно отслеживает нагрузку, пытаясь достичь идеального распределения.

Идея заключалась в том, что драйвер сам будет компоновать шейдеры примитивов, к которым он будет привязывать расчеты вершин и геометрии. Вероятно, в этом и заключался альтернативный путь драйвера, разработка которого была прекращена.

Пока не совсем понятно, насколько сильно шейдеры примитивов будут влиять на производительность. Конечно, многие покупатели Radeon RX Vega надеялись на прирост производительности после активации шейдеров примитивов.

Пока что AMD не высказала свое мнение по данному вопросу, также и причины прекращения разработки не совсем понятны. Мы отправили запрос AMD.

Обновление:

Мы получили два слайда AMD с мероприятия Tech Day на CES 2018. Оба слайда AMD посвящены расширенной поддержке инициативы GPUOpen. Как можно видеть по второму слайду, поддержка шейдеров примитивов была запланирована только в явном виде, когда разработчики добавляют соответствующий код. Также поддержка требует изменений в API. Вероятно, это и привело к тому, что AMD отказалась от неявной поддержки.

Распределение вычислений вершин и геометрии уже выполняется в том или ином виде в новом пути Geometry Path. Шейдеры примитивов - просто еще один шаг в данной схеме. Игра Wolfenstein 2: The New Colossus, например, использует вычислительные шейдеры для расчета геометрии.

Также на слайдах говорится о расширенной поддержке Draw Stream Binning Rasterizer (DSBR). Относительно High Bandwidth Cache Controller (HBCC) новостей пока нет. Rapid Packed Math уже поддерживается в некоторых играх.

Обновление 2:

Стоит вернутся к самому началу, поскольку спор зашел о том, что обещала AMD, а что - нет. Первое: шейдеры примитивов (Primitive Shader) должны работать в неявном режиме (implicit mode), то есть они теоретически должны поддерживаться в любой игре. Второе: шейдеры примитивов поддерживаются только в явном режиме (explicit mode), то есть разработчики должны добавлять соответствующий код в игру.

AMD ссылается на приведенный выше слайд, который упоминает лишь об API для разработчиков. Но летом AMD говорила о неявной поддержке: "The driver takes care of it for you. Just render as normal.". И теперь подобная поддержка со стороны драйвера официально убрана.

Полное обсуждение можно прочитать на Twitter.

Но что все это значит? Если разработчик игры или движка захочет воспользоваться Primitive Shader, ему придется прописывать код напрямую. Это приводит к дополнительным усилиям со стороны разработчиков, на которые большинство вряд ли пойдет. Также API еще не существует. Пока только идут разговоры о том, какие изменения в графическом API следует внести. Но пройдут годы, прежде чем DirectX или Vulkan сделают шаг в данном направлении или будут добавлены новые функции.

Таким образом, для видеокарт Vega поддержка Primitive Shader оказалась "мыльным пузырем". Но шейдеры примитивов наверняка сыграют роль в поколении Navi, поэтому мы вернемся к данному вопросу в 2019.

У контроллера High Bandwidth Memory Controller (HBCC) схожая судьба. Режим можно активировать через драйвер, по умолчанию он отключен. Влияние на производительность зависит от геймплея и остальных компонентов системы. Ситуация непростая, и довольно сложно составить список игр и выявить зависимость от аппаратной конфигурации. Сложно сказать, как много пользователей Radeon RX Vega активируют режим HBCC. Но если данная тема вас не интересует, лучше оставить настройки по умолчанию.

По крайней мере, по Rapid Packed Math и Vulkan позиция у AMD лучше. В каких-то играх поддержка уже появилась, в некоторых она будет добавлена позднее, после обновления.