Поделиться через


fcall (sm5 - asm)

Вызов функции интерфейса.

fcall fp#[arrayIndex][callSite]
Элемент Описание
Fp #
[in] Указатель функции.
arrayIndex
[в] Необязательно. Задает смещение массива указателей функции. Этот параметр должен быть литеральным целым числом без знака, если fp# не был объявлен как индексируемый. В противном случае arrayIndex может иметь вид литерала base + offset от регистра шейдера. Например, fcall fp1[r1.w + 0][0] .
callSite
[в] Необязательно. Литеральное смещение целочисленного числа без знака в выбранной таблице функций, выбрав текст функции fb# для выполнения.

Комментарии

fp#[arrayIndex][] разрешается в определенную таблицу функций, выбранную из API за пределами шейдера из вариантов таблицы функций, перечисленных в объявлении fp#.

Сумма значений # в fp# и arrayIndex выбирает таблицу функций. Например, если интерфейс объявлен как fp4[4][3] (размер массива 4), следующие falls эквивалентны: fcall fp4[2][3] и fp5[1][3], так как 4+2 = 5+1.

Ограничения

  • Если arrayIndex использует динамическое индексирование, поведение не определено, если arrayIndex расходится в смежных вызовах шейдера, которые могут выполняться в режиме блокировки. Компилятор HLSL попытается запретить этот случай.

    Смежные вызовы могут быть неактивными из-за управления потоком, так как они не прерывают выполнение блокировок.

  • Если fp# + arrayIndex указывает индекс вне границ, поведение не определено.

  • Для неопределенных случаев, описанных здесь, это означает, что поведение текущего устройства D3D становится неопределенным, включая возможность потери устройства. Однако доступ к памяти за пределами текущего устройства D3D не будет осуществляться в виде кода.

Эта инструкция применяется к следующим этапам шейдера:

Вершина Корпуса Домен Geometry Пиксель Вычисления
X X X X X X

Минимальная модель шейдера

Эта инструкция поддерживается в следующих моделях шейдеров:

Модель шейдера Поддерживается
Модель шейдера 5 да
Модель шейдера 4.1 нет
Модель шейдера 4 нет
Модель шейдера 3 (DirectX HLSL) нет
Модель шейдера 2 (DirectX HLSL) нет
Модель шейдера 1 (DirectX HLSL) нет

Сборка модели шейдера 5 (DirectX HLSL)