Condividi tramite


Limiti di annidamento del controllo del flusso

Le istruzioni di controllo del flusso del vertex shader hanno due restrizioni speciali. Le profondità di annidamento limitano il numero di istruzioni che possono essere chiamate tra loro. Inoltre, ogni istruzione ha un numero di slot di istruzioni che si applica al numero massimo di istruzioni che un shader può supportare.

Nota

Quando si usano i profili shader *_4_0_level_9_x HLSL, si usano in modo implicito i profili shader Model 2.x per supportare l'hardware compatibile con Direct3D 9. I profili del modello di shader 2.x supportano un comportamento di controllo del flusso più limitato rispetto ai profili Modello shader 4. x 4.x e versioni successive.

 

Depth Count per Instruction for vs_2_0

Ogni istruzione viene conteggiato rispetto a uno o più limiti di profondità annidamento. Questa tabella mostra il conteggio della profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:

Istruzione Annidamento statico Annidamento dinamico annidamento di cicli/rep annidamento delle chiamate Conteggio dei flussi statici
se bool - vs 0 0 0 0 1
if_comp - confronto tra n/a n/a n/a n/a n/a
se pred - vs n/a n/a n/a n/a n/a
else - vs 0 0 0 0 1(se bool - vs solo)
endif - vs -1 0 0 0 0
rep - vs 0 0 1 0 1
endrep - vs 0 0 -1 0 0
ciclo e 0 0 1 0 1
endloop - vs 0 0 -1 0 0
interruzione - confronto tra n/a n/a n/a n/a n/a
break_comp - confronto tra n/a n/a n/a n/a n/a
breakp - vs n/a n/a n/a n/a n/a
chiamata - 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
0 0 0 -1 0
setp_comp - confronto tra n/a n/a n/a n/a n/a

 

Profondità annidamento

La profondità di annidamento definisce il numero di istruzioni che è possibile chiamare tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:

Tipo di istruzione Massimo
Annidamento statico Solo limitato dal numero di flussi statici
Annidamento dinamico n/a
annidamento di cicli/rep 1
annidamento delle chiamate 1
Conteggio dei flussi statici 16

 

Depth Count per Instruction for vs_2_x

Ogni istruzione viene conteggiato rispetto a uno o più limiti di profondità annidamento. Questa tabella mostra il conteggio della profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:

Istruzione Annidamento statico Annidamento dinamico annidamento di cicli/rep annidamento delle chiamate Conteggio dei flussi statici
se bool - vs 1 0 0 0 1
if_comp - confronto tra 0 1 0 0 0
se pred - vs 0 1 0 0 0
else - vs 0 0 0 0 1(se bool - vs solo)
endif - vs -1(se bool - vs) -1(se pred - vs o if_comp - vs) 0 0 0
rep - vs 0 0 1 0 1
endrep - vs 0 0 -1 0 0
ciclo e 0 0 1 0 1
endloop - vs 0 0 -1 0 0
interruzione - confronto tra 0 0 0 0 0
break_comp - confronto tra 0 1, -1 0 0 0
breakp - vs 0 0 0 0 0
chiamata - vs 0 0 0 1 1
callnz bool - vs 0 0 0 1 1
callnz pred - vs 0 1 0 1 0
0 -1 (callnz pred - vs) 0 -1 0
setp_comp - confronto tra 0 0 0 0 0

 

Profondità annidamento

La profondità di annidamento definisce il numero di istruzioni che è possibile chiamare tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:

Tipo di istruzione Massimo
Annidamento statico Solo limitato dal numero di flussi statici
Annidamento dinamico 0 o 24, vedere D3DCAPS9. VS20Caps.DynamicFlowControlDepth
annidamento di cicli/rep Da 1 a 4, vedere D3DCAPS9. VS20Caps.StaticFlowControlDepth
annidamento delle chiamate Da 1 a 4, vedere D3DCAPS9. VS20Caps.StaticFlowControlDepth (indipendente dal limite di cicli/rep)
Conteggio dei flussi statici 16

 

Depth Count per Instruction for vs_2_sw

Ogni istruzione viene conteggiato rispetto a uno o più limiti di profondità annidamento. Questa tabella mostra il conteggio della profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:

Istruzione Annidamento statico Annidamento dinamico annidamento di cicli/rep annidamento delle chiamate Conteggio dei flussi statici
se bool - vs 1 0 0 0 n/a
if_comp - confronto tra 0 1 0 0 n/a
se pred - vs 0 1 0 0 n/a
else - vs 0 0 0 0 n/a
endif - vs -1(se bool - vs) -1(se pred - vs o if_comp - vs) 0 0 n/a
rep - vs 0 0 1 0 n/a
endrep - vs 0 0 -1 0 n/a
ciclo e 0 0 1 0 n/a
endloop - vs 0 0 -1 0 n/a
interruzione - confronto tra 0 0 0 0 n/a
break_comp - confronto tra 0 1, -1 0 0 n/a
breakp - vs 0 0 0 0 n/a
chiamata - 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
0 -1 (callnz pred - vs) 0 -1 n/a
setp_comp - confronto tra 0 0 0 0 n/a

 

Profondità annidamento

La profondità di annidamento definisce il numero di istruzioni che è possibile chiamare tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:

Tipo di istruzione Massimo
Annidamento statico 24
Annidamento dinamico 24
annidamento di cicli/rep 4
annidamento delle chiamate 4
Conteggio dei flussi statici Nessun limite

 

Depth Count per Instruction for vs_3_0

Ogni istruzione viene conteggiato rispetto a uno o più limiti di profondità annidamento. Questa tabella mostra il conteggio della profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:

Istruzione Annidamento statico Annidamento dinamico annidamento di cicli/rep annidamento delle chiamate Conteggio dei flussi statici
se bool - vs 1 0 0 0 n/a
if_comp - confronto tra 0 1 0 0 n/a
se pred - vs 0 1 0 0 n/a
else - vs 0 0 0 0 n/a
endif - vs -1(se bool - vs) -1(se pred - vs o if_comp - vs) 0 0 n/a
rep - vs 0 0 1 0 n/a
endrep - vs 0 0 -1 0 n/a
ciclo e 0 0 1 0 n/a
endloop - vs 0 0 -1 0 n/a
interruzione - confronto tra 0 0 0 0 n/a
break_comp - confronto tra 0 1, -1 0 0 n/a
breakp - vs 0 0 0 0 n/a
chiamata - 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
0 -1 (callnz pred - vs) 0 -1 n/a
setp_comp - confronto tra 0 0 0 0 n/a

 

Profondità annidamento

La profondità di annidamento definisce il numero di istruzioni che è possibile chiamare tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:

Tipo di istruzione Massimo
Annidamento statico 24
Annidamento dinamico 24
annidamento di cicli/rep 4
annidamento delle chiamate 4
Conteggio dei flussi statici Nessun limite

 

Depth Count per Instruction for vs_3_sw

Ogni istruzione viene conteggiato rispetto a uno o più limiti di profondità annidamento. Questa tabella mostra il conteggio della profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:

Istruzione Annidamento statico Annidamento dinamico annidamento di cicli/rep annidamento delle chiamate Conteggio dei flussi statici
se bool - vs 1 0 0 0 n/a
if_comp - confronto tra 0 1 0 0 n/a
se pred - vs 0 1 0 0 n/a
else - vs 0 0 0 0 n/a
endif - vs -1(se bool - vs) -1(se pred - vs o if_comp - vs) 0 0 n/a
rep - vs 0 0 1 0 n/a
endrep - vs 0 0 -1 0 n/a
ciclo e 0 0 1 0 n/a
endloop - vs 0 0 -1 0 n/a
interruzione - confronto tra 0 0 0 0 n/a
break_comp - confronto tra 0 1, -1 0 0 n/a
breakp - vs 0 0 0 0 n/a
chiamata - 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
0 -1 (callnz pred - vs) 0 -1 n/a
setp_comp - confronto tra 0 0 0 0 n/a

 

Profondità annidamento

La profondità di annidamento definisce il numero di istruzioni che è possibile chiamare tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:

Tipo di istruzione Massimo
Annidamento statico 24
Annidamento dinamico 24
annidamento di cicli/rep 4
annidamento delle chiamate 4
Conteggio dei flussi statici Nessun limite

 

istruzioni per vertex shader