Performs a function call to the instruction marked with the provided label.
call l# |
---|
where l# is a label - vs marking the beginning of the subroutine to be called.
Vertex shader versions | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
call | x | x | x | x | x |
This instruction does the following:
In vertex shader 2_0, nesting calls are not allowed.
In vertex shader 2_x, the nesting depth is limited by the StaticFlowControlDepth element of the D3DVSHADERCAPS2_0 structure. For more information, see IDirect3D9::GetDeviceCaps.
In vertex shader 3_0, four levels of call nesting are allowed.
Only forward calls are allowed. This means that the location of the label inside the vertex shader should be after the call instruction referencing it.
If a call instruction is invoked inside loop...endloop block, the value of the Loop Counter Register (aL) is accessible inside the subroutine.
If a subroutine is referencing the Loop Counter Register (aL) located outside of the subroutine, every instance of the call to this subroutine should be surrounded by a loop...endloop block.