callc (sm4 - asm)
有條件地呼叫標記的副程式,其中標籤 l# 會出現在程式中。
callc{_z|_nz} src0.select_component, l# |
---|
項目 | 描述 |
---|---|
src0 |
[in]要測試條件的元件。 |
我# |
[in]副程式標籤。 |
備註
遇到 重試 時,請在呼叫之後將執行傳回指令。
權杖格式包含著色器中對應標籤的位移,方便使用。
下列範例顯示呼叫指示。
...
callc_z r1.y, l3 // if all bits in r0.x are 0, call l3
callc_nz r2.z, l3 // if any bit in r0.x is nonzero, call l3
...
ret
label l3
...
retc_nz r0.x
...
ret
Restrictions
- 副程式可以巢狀 32 深度。
- 傳回位址堆疊會由實作透明地管理。
- 如果傳回位址堆疊上已經有 32 個專案,而且發出呼叫,則會略過 呼叫 。
- 沒有自動參數堆疊。 應用程式可以使用可編制索引的暫存暫存器陣列 (x#[]) 手動實作堆疊。 不過,副程式呼叫傳回位址不會顯示,而且與應用程式完成的任何手動堆疊管理都正交。
- 不允許 l# 參數的索引編制。
- src0所提供的 32 位暫存器會在位層級進行測試。 如果有任何位為非零, callc_nz 會執行呼叫。 如果所有位都是零, callc_z 會執行呼叫。
- 不允許遞迴。
本指示適用于下列著色器階段:
頂點著色器 | 幾何著色器 | 像素著色器 |
---|---|---|
x | x | x |
最小著色器模型
下列著色器模型中支援此函式。
著色器模型 | 支援 |
---|---|
著色器模型 5 | 是 |
著色器模型 4.1 | 是 |
著色器模型 4 | 是 |
著色器模型 3 (DirectX HLSL) | 否 |
著色器模型 2 (DirectX HLSL) | 否 |
著色器模型 1 (DirectX HLSL) | 否 |