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

 

Instructions sur le nuanceur de vertex