fcall (sm5 - asm)
Schnittstellenfunktionsaufruf.
| fcall fp # [ arrayIndex ] [ callSite] |
|---|
| Element | Beschreibung |
|---|---|
| Fp# |
[in ] Der Funktionszeiger. |
| Arrayindex |
[in ] Optional. Gibt einen Offset in das Funktionszeigerarray an. Dieser Parameter muss eine literale ganze Zahl ohne Vorzeichen sein, wenn fp # nicht als indizierbar deklariert wurde. Andernfalls kann arrayIndex die Form Literalbasis + Offset aus einem Shaderregister haben. Beispiel: fcall fp1 [ r1.w + 0 ] [ 0 ] . |
| callSite |
[in ] Optional. Ein literaler ganzzahliger Offset ohne Vorzeichen in der ausgewählten Funktionstabelle, der einen auszuführenden Funktionskörper fb # auswählt. |
Hinweise
fp # [ ] [ arrayIndex ] löst in eine bestimmte Funktionstabelle auf, die von der API außerhalb des Shaders aus den Funktionstabellenoptionen ausgewählt wurde, die in der Deklaration von fp aufgeführt sind. #
Die Summe von # in fp # und arrayIndex wählt die Funktionstabelle aus. Wenn eine Schnittstelle beispielsweise als fp4 4 3 (Arraygröße von 4) deklariert ist, sind die folgenden [ ] [ ] fcall-Elemente äquivalent: fcall fp4 [ 2 3 und ] [ ] fp5 [ 1 3 , da ] [ ] 4+2 = 5+1.
Beschränkungen
Wenn arrayIndex die dynamische Indizierung verwendet, ist das Verhalten nicht definiert, wenn arrayIndex bei angrenzenden Shaderaufrufen abweichend ist, was in lockstep ausgeführt werden kann. Der HLSL-Compiler versucht, diesen Fall nicht zu verwenden.
Benachbarte Aufrufe können aufgrund der Flusssteuerung inaktiv sein, da sie die Ausführung von Sperrschritten nicht unterbricht.
Wenn # fp + arrayIndex einen Index ohne Grenzen angibt, ist das Verhalten nicht definiert.
Für die hier beschriebenen nicht definierten Fälle bedeutet dies, dass das Verhalten des aktuellen D3D-Geräts nicht definiert wird, einschließlich der Möglichkeit, dass das Gerät verloren geht. Es wird jedoch nicht auf Arbeitsspeicher außerhalb des aktuellen D3D-Geräts zugegriffen oder als Code ausgeführt.
Diese Anweisung gilt für die folgenden Shaderstufen:
| Scheitelpunkt | Rumpf | Domain | Geometrie | Pixel | Compute |
|---|---|---|---|---|---|
| X | X | X | X | X | X |
Minimales Shadermodell
Diese Anweisung wird in den folgenden Shadermodellen unterstützt:
| Shadermodell | Unterstützt |
|---|---|
| Shadermodell 5 | Ja |
| Shadermodell 4.1 | Nein |
| Shadermodell 4 | Nein |
| Shadermodell 3 (DirectX HLSL) | Nein |
| Shadermodell 2 (DirectX HLSL) | Nein |
| Shadermodell 1 (DirectX HLSL) | Nein |