Limites d’imbrication du contrôle de flux
Les instructions de contrôle de flux du nuanceur de vertex ont deux restrictions spéciales. Les profondeurs d’imbrication limitent le nombre d’instructions qui peuvent être appelées les unes à l’intérieur des autres. En outre, chaque instruction a un nombre d’emplacements d’instructions qui s’applique au nombre maximal d’instructions qu’un nuanceur peut prendre en charge.
Notes
Lorsque vous utilisez les profils de nuanceur *_4_0_level_9_x HLSL, vous utilisez implicitement les profils shader Model 2.x pour prendre en charge le matériel compatible Direct3D 9. Les profils de modèle de nuanceur 2.x prennent en charge un comportement de contrôle de flux plus limité que les profils modèle de nuanceur 4.x et versions ultérieures.
Nombre de profondeurs par instruction pour vs_2_0
Chaque instruction compte par rapport à une ou plusieurs limites de profondeur d’imbrication. Ce tableau montre le nombre de profondeurs que chaque instruction ajoute ou soustrait de la profondeur existante :
Instruction | Imbrication statique | Imbrication dynamique | imbrication de boucles/rep | imbrication des appels | Nombre de flux statiques |
---|---|---|---|---|---|
if bool - vs | 0 | 0 | 0 | 0 | 1 |
if_comp - vs | n/a | n/a | n/a | n/a | n/a |
si pred - vs | n/a | n/a | n/a | n/a | n/a |
else - vs | 0 | 0 | 0 | 0 | 1(si bool - vs uniquement) |
endif - vs | -1 | 0 | 0 | 0 | 0 |
rep - vs | 0 | 0 | 1 | 0 | 1 |
endrep - vs | 0 | 0 | -1 | 0 | 0 |
loop - vs | 0 | 0 | 1 | 0 | 1 |
endloop - vs | 0 | 0 | -1 | 0 | 0 |
break - vs | n/a | n/a | n/a | n/a | n/a |
break_comp - vs | n/a | n/a | n/a | n/a | n/a |
breakp - vs | n/a | n/a | n/a | n/a | n/a |
appel - vs | 0 | 0 | 0 | 1 | 1 |
callnz bool - vs | 0 | 0 | 0 | 1 | 1 |
callnz pred - vs | n/a | n/a | n/a | n/a | n/a |
ret - vs | 0 | 0 | 0 | -1 | 0 |
setp_comp - vs | n/a | n/a | n/a | n/a | n/a |
Profondeur d’imbrication
La profondeur d’imbrication définit le nombre d’instructions qui peuvent être appelées les unes à l’intérieur des autres. Chaque type d’instruction a une ou plusieurs limites d’imbrication :
Type d’instruction | Maximum |
---|---|
Imbrication statique | Limité uniquement par le nombre de flux statiques |
Imbrication dynamique | n/a |
imbrication de boucles/rep | 1 |
imbrication des appels | 1 |
Nombre de flux statiques | 16 |
Nombre de profondeurs par instruction pour vs_2_x
Chaque instruction compte par rapport à une ou plusieurs limites de profondeur d’imbrication. Ce tableau montre le nombre de profondeurs que chaque instruction ajoute ou soustrait de la profondeur existante :
Instruction | Imbrication statique | Imbrication dynamique | imbrication de boucles/rep | imbrication des appels | Nombre de flux statiques |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | 1 |
if_comp - vs | 0 | 1 | 0 | 0 | 0 |
si pred - vs | 0 | 1 | 0 | 0 | 0 |
else - vs | 0 | 0 | 0 | 0 | 1(si bool - vs uniquement) |
endif - vs | -1(si bool - vs) | -1(si pred - vs ou if_comp - vs) | 0 | 0 | 0 |
rep - vs | 0 | 0 | 1 | 0 | 1 |
endrep - vs | 0 | 0 | -1 | 0 | 0 |
loop - vs | 0 | 0 | 1 | 0 | 1 |
endloop - vs | 0 | 0 | -1 | 0 | 0 |
break - vs | 0 | 0 | 0 | 0 | 0 |
break_comp - vs | 0 | 1, -1 | 0 | 0 | 0 |
breakp - vs | 0 | 0 | 0 | 0 | 0 |
appel - vs | 0 | 0 | 0 | 1 | 1 |
callnz bool - vs | 0 | 0 | 0 | 1 | 1 |
callnz pred - vs | 0 | 1 | 0 | 1 | 0 |
ret - vs | 0 | -1 (callnz pred - vs) | 0 | -1 | 0 |
setp_comp - vs | 0 | 0 | 0 | 0 | 0 |
Profondeur d’imbrication
La profondeur d’imbrication définit le nombre d’instructions qui peuvent être appelées les unes à l’intérieur des autres. Chaque type d’instruction a une ou plusieurs limites d’imbrication :
Type d’instruction | Maximum |
---|---|
Imbrication statique | Limité uniquement par le nombre de flux statiques |
Imbrication dynamique | 0 ou 24, consultez D3DCAPS9. VS20Caps.DynamicFlowControlDepth |
imbrication de boucles/rep | 1 à 4, consultez D3DCAPS9. VS20Caps.StaticFlowControlDepth |
imbrication des appels | 1 à 4, consultez D3DCAPS9. VS20Caps.StaticFlowControlDepth (indépendamment de la limite de boucles/rep) |
Nombre de flux statiques | 16 |
Nombre de profondeurs par instruction pour vs_2_sw
Chaque instruction compte par rapport à une ou plusieurs limites de profondeur d’imbrication. Ce tableau montre le nombre de profondeurs que chaque instruction ajoute ou soustrait de la profondeur existante :
Instruction | Imbrication statique | Imbrication dynamique | imbrication de boucles/rep | imbrication des appels | Nombre de flux statiques |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | n/a |
if_comp - vs | 0 | 1 | 0 | 0 | n/a |
si pred - vs | 0 | 1 | 0 | 0 | n/a |
else - vs | 0 | 0 | 0 | 0 | n/a |
endif - vs | -1(si bool - vs) | -1(si pred - vs ou if_comp - vs) | 0 | 0 | n/a |
rep - vs | 0 | 0 | 1 | 0 | n/a |
endrep - vs | 0 | 0 | -1 | 0 | n/a |
boucle - vs | 0 | 0 | 1 | 0 | n/a |
endloop - vs | 0 | 0 | -1 | 0 | n/a |
break - vs | 0 | 0 | 0 | 0 | n/a |
break_comp - vs | 0 | 1, -1 | 0 | 0 | n/a |
breakp - vs | 0 | 0 | 0 | 0 | n/a |
call - vs | 0 | 0 | 0 | 1 | n/a |
callnz bool - vs | 0 | 0 | 0 | 1 | n/a |
callnz pred - vs | 0 | 1 | 0 | 1 | n/a |
ret - vs | 0 | -1 (callnz pred - vs) | 0 | -1 | n/a |
setp_comp - vs | 0 | 0 | 0 | 0 | n/a |
Profondeur d’imbrication
La profondeur d’imbrication définit le nombre d’instructions qui peuvent être appelées les unes à l’intérieur des autres. Chaque type d’instruction a une ou plusieurs limites d’imbrication :
Type d’instruction | Maximum |
---|---|
Imbrication statique | 24 |
Imbrication dynamique | 24 |
imbrication boucle/rep | 4 |
imbrication des appels | 4 |
Nombre de flux statiques | Aucune limite |
Nombre de profondeurs par instruction pour vs_3_0
Chaque instruction est comptabilisée par rapport à une ou plusieurs limites de profondeur d’imbrication. Ce tableau montre le nombre de profondeurs que chaque instruction ajoute ou soustrait de la profondeur existante :
Instruction | Imbrication statique | Imbrication dynamique | imbrication boucle/rep | imbrication des appels | Nombre de flux statiques |
---|---|---|---|---|---|
si bool - vs | 1 | 0 | 0 | 0 | n/a |
if_comp - vs | 0 | 1 | 0 | 0 | n/a |
si pred - vs | 0 | 1 | 0 | 0 | n/a |
else - vs | 0 | 0 | 0 | 0 | n/a |
endif - vs | -1(si bool - vs) | -1(si pred - vs ou if_comp - vs) | 0 | 0 | n/a |
rep - vs | 0 | 0 | 1 | 0 | n/a |
endrep - vs | 0 | 0 | -1 | 0 | n/a |
loop - vs | 0 | 0 | 1 | 0 | n/a |
endloop - vs | 0 | 0 | -1 | 0 | n/a |
break - vs | 0 | 0 | 0 | 0 | n/a |
break_comp - vs | 0 | 1, -1 | 0 | 0 | n/a |
breakp - vs | 0 | 0 | 0 | 0 | n/a |
appel - vs | 0 | 0 | 0 | 1 | n/a |
callnz bool - vs | 0 | 0 | 0 | 1 | n/a |
callnz pred - vs | 0 | 1 | 0 | 1 | n/a |
ret - vs | 0 | -1 (callnz pred - vs) | 0 | -1 | n/a |
setp_comp - vs | 0 | 0 | 0 | 0 | n/a |
Profondeur d’imbrication
La profondeur d’imbrication définit le nombre d’instructions qui peuvent être appelées les unes à l’intérieur des autres. Chaque type d’instruction a une ou plusieurs limites d’imbrication :
Type d’instruction | Maximum |
---|---|
Imbrication statique | 24 |
Imbrication dynamique | 24 |
imbrication boucle/rep | 4 |
imbrication des appels | 4 |
Nombre de flux statiques | Aucune limite |
Nombre de profondeurs par instruction pour vs_3_sw
Chaque instruction est comptabilisée par rapport à une ou plusieurs limites de profondeur d’imbrication. Ce tableau montre le nombre de profondeurs que chaque instruction ajoute ou soustrait de la profondeur existante :
Instruction | Imbrication statique | Imbrication dynamique | imbrication boucle/rep | imbrication des appels | Nombre de flux statiques |
---|---|---|---|---|---|
si bool - vs | 1 | 0 | 0 | 0 | n/a |
if_comp - vs | 0 | 1 | 0 | 0 | n/a |
si préd - vs | 0 | 1 | 0 | 0 | n/a |
else - vs | 0 | 0 | 0 | 0 | n/a |
endif - vs | -1(si bool - vs) | -1(si préd - vs ou if_comp - vs) | 0 | 0 | n/a |
rep - vs | 0 | 0 | 1 | 0 | n/a |
endrep - vs | 0 | 0 | -1 | 0 | n/a |
boucle - vs | 0 | 0 | 1 | 0 | n/a |
endloop - vs | 0 | 0 | -1 | 0 | n/a |
break - vs | 0 | 0 | 0 | 0 | n/a |
break_comp - vs | 0 | 1, -1 | 0 | 0 | n/a |
breakp - vs | 0 | 0 | 0 | 0 | n/a |
call - vs | 0 | 0 | 0 | 1 | n/a |
callnz bool - vs | 0 | 0 | 0 | 1 | n/a |
callnz pred - vs | 0 | 1 | 0 | 1 | n/a |
ret - vs | 0 | -1 (callnz pred - vs) | 0 | -1 | n/a |
setp_comp - vs | 0 | 0 | 0 | 0 | n/a |
Profondeur d’imbrication
La profondeur d’imbrication définit le nombre d’instructions qui peuvent être appelées les unes à l’intérieur des autres. Chaque type d’instruction a une ou plusieurs limites d’imbrication :
Type d’instruction | Maximum |
---|---|
Imbrication statique | 24 |
Imbrication dynamique | 24 |
imbrication de boucles/rep | 4 |
imbrication des appels | 4 |
Nombre de flux statiques | Aucune limite |
Rubriques connexes