В LLVM бэкэнд R600 добавлена поддержка косвенной адресации

Разработчик из AMD Tom Stellard представил патч, добавляющий в бэкэнд на основе LLVM для GPU семейства R600 поддержку косвенной адресации (indirect addressing). Указанный бэкэнд может опционально использоваться для генерации кода шейдеров и кроме этого является необходимым для поддержки OpenCL (произвольных вычислений на GPU).

В частности, отмечается что ранее отсутствие поддержки режима косвенной адресации приводило к неработоспособности шейдеров в играх Unigine и Sauerbraten при использовании LLVM-бэкэнда. Разработчик также отмечает что данный момент этот патч поддерживает только драйвер семейства R600, для видеокарт HD7000 пока отсутствует несколько необходимых callback-ов.

Кроме того, отмечается что для R600 в данный момент поддерживаются только массивы размером до 16 DWORDов, а также не реализована регистроваая упаковка векторных типов (vec4). Для корректной упаковки регистров во всех возможных случаях необходимо реализовать еще 1 проход для определения правильного размера векторов в каждом массиве.

Дополнительно стоит отметить, что LLVM бэкэнд для R600 был удален из MESA в связи с включением данного бэкэнда в апстрим (LLVM). Предположительно, указанные изменения в результате попадут в LLVM версии 3.3.

©  OpenNet