Limiti di annidamento dei controlli di 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 shader 2.x supportano un comportamento di controllo del flusso più limitato rispetto ai profili modello shader 4.x e versioni successive.
Numero di profondità per istruzione per vs_2_0
Ogni istruzione viene conteggiato rispetto a uno o più limiti di profondità annidamento. Questa tabella mostra il numero di profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:
Istruzione | Annidamento statico | Annidamento dinamico | annidamento loop/rep | annidamento delle chiamate | Conteggio dei flussi statici |
---|---|---|---|---|---|
se bool - vs | 0 | 0 | 0 | 0 | 1 |
if_comp - vs | n/d | n/d | n/d | n/d | n/d |
se pred - vs | n/d | n/d | n/d | n/d | n/d |
else - vs | 0 | 0 | 0 | 0 | 1(se bool - solo vs ) |
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/d | n/d | n/d | n/d | n/d |
break_comp - vs | n/d | n/d | n/d | n/d | n/d |
breakp - vs | n/d | n/d | n/d | n/d | n/d |
call - vs | 0 | 0 | 0 | 1 | 1 |
callnz bool - vs | 0 | 0 | 0 | 1 | 1 |
callnz pred - vs | n/d | n/d | n/d | n/d | n/d |
ret - vs | 0 | 0 | 0 | -1 | 0 |
setp_comp - vs | n/d | n/d | n/d | n/d | n/d |
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 | Limitato solo dal numero di flussi statici |
Annidamento dinamico | n/d |
annidamento loop/rep | 1 |
annidamento delle chiamate | 1 |
Conteggio dei flussi statici | 16 |
Numero di profondità per istruzione per vs_2_x
Ogni istruzione viene conteggiato rispetto a uno o più limiti di profondità annidamento. Questa tabella mostra il numero di profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:
Istruzione | Annidamento statico | Annidamento dinamico | annidamento loop/rep | annidamento delle chiamate | Conteggio dei flussi statici |
---|---|---|---|---|---|
se bool - vs | 1 | 0 | 0 | 0 | 1 |
if_comp - vs | 0 | 1 | 0 | 0 | 0 |
se pred - vs | 0 | 1 | 0 | 0 | 0 |
else - vs | 0 | 0 | 0 | 0 | 1(se bool - solo vs ) |
endif - vs | -1(if 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 |
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 |
interruzione - 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 |
ret - vs | 0 | -1 (pred callnz - vs) | 0 | -1 | 0 |
setp_comp - vs | 0 | 0 | 0 | 0 | 0 |
Profondità annidamento
La profondità di annidamento definisce il numero di istruzioni che possono essere chiamate 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 |
ciclo/annidamento del repository | Da 1 a 4, vedere D3DCAPS9. VS20Caps.StaticFlowControlDepth |
annidamento delle chiamate | Da 1 a 4, vedere D3DCAPS9. VS20Caps.StaticFlowControlDepth (indipendente dal ciclo/limite di rep) |
Numero di flussi statici | 16 |
Conteggio profondità per istruzione per vs_2_sw
Ogni istruzione conta su uno o più limiti di profondità annidamento. Questa tabella mostra il numero di profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:
Istruzione | Annidamento statico | Annidamento dinamico | ciclo/annidamento del repository | annidamento delle chiamate | Numero di flussi statici |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | n/d |
if_comp - vs | 0 | 1 | 0 | 0 | n/d |
se pred - vs | 0 | 1 | 0 | 0 | n/d |
else - vs | 0 | 0 | 0 | 0 | n/d |
endif - vs | -1(if bool - vs) | -1(se pred - vs o if_comp - vs) | 0 | 0 | n/d |
rep - vs | 0 | 0 | 1 | 0 | n/d |
endrep - vs | 0 | 0 | -1 | 0 | n/d |
ciclo - vs | 0 | 0 | 1 | 0 | n/d |
endloop - vs | 0 | 0 | -1 | 0 | n/d |
interruzione - vs | 0 | 0 | 0 | 0 | n/d |
break_comp - vs | 0 | 1, -1 | 0 | 0 | n/d |
interruzione - vs | 0 | 0 | 0 | 0 | n/d |
chiamata - vs | 0 | 0 | 0 | 1 | n/d |
callnz bool - vs | 0 | 0 | 0 | 1 | n/d |
callnz pred - vs | 0 | 1 | 0 | 1 | n/d |
ret - vs | 0 | -1 (pred callnz - vs) | 0 | -1 | n/d |
setp_comp - vs | 0 | 0 | 0 | 0 | n/d |
Profondità annidamento
La profondità di annidamento definisce il numero di istruzioni che possono essere chiamate tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:
Tipo di istruzione | Massimo |
---|---|
Annidamento statico | 24 |
Annidamento dinamico | 24 |
ciclo/annidamento del repository | 4 |
annidamento delle chiamate | 4 |
Numero di flussi statici | Nessun limite |
Conteggio profondità per istruzione per vs_3_0
Ogni istruzione conta su uno o più limiti di profondità annidamento. Questa tabella mostra il numero di profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:
Istruzione | Annidamento statico | Annidamento dinamico | ciclo/annidamento del repository | annidamento delle chiamate | Numero di flussi statici |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | n/d |
if_comp - vs | 0 | 1 | 0 | 0 | n/d |
se pred - vs | 0 | 1 | 0 | 0 | n/d |
else - vs | 0 | 0 | 0 | 0 | n/d |
endif - vs | -1(if bool - vs) | -1(se pred - vs o if_comp - vs) | 0 | 0 | n/d |
rep - vs | 0 | 0 | 1 | 0 | n/d |
endrep - vs | 0 | 0 | -1 | 0 | n/d |
ciclo - vs | 0 | 0 | 1 | 0 | n/d |
endloop - vs | 0 | 0 | -1 | 0 | n/d |
interruzione - vs | 0 | 0 | 0 | 0 | n/d |
break_comp - vs | 0 | 1, -1 | 0 | 0 | n/d |
interruzione - vs | 0 | 0 | 0 | 0 | n/d |
chiamata - vs | 0 | 0 | 0 | 1 | n/d |
callnz bool - vs | 0 | 0 | 0 | 1 | n/d |
callnz pred - vs | 0 | 1 | 0 | 1 | n/d |
ret - vs | 0 | -1 (pred callnz - vs) | 0 | -1 | n/d |
setp_comp - vs | 0 | 0 | 0 | 0 | n/d |
Profondità annidamento
La profondità di annidamento definisce il numero di istruzioni che possono essere chiamate tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:
Tipo di istruzione | Massimo |
---|---|
Annidamento statico | 24 |
Annidamento dinamico | 24 |
ciclo/annidamento del repository | 4 |
annidamento delle chiamate | 4 |
Numero di flussi statici | Nessun limite |
Conteggio profondità per istruzione per vs_3_sw
Ogni istruzione conta su uno o più limiti di profondità annidamento. Questa tabella mostra il numero di profondità che ogni istruzione aggiunge o sottrae dalla profondità esistente:
Istruzione | Annidamento statico | Annidamento dinamico | ciclo/annidamento del repository | annidamento delle chiamate | Numero di flussi statici |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | n/d |
if_comp - vs | 0 | 1 | 0 | 0 | n/d |
se pred - vs | 0 | 1 | 0 | 0 | n/d |
else - vs | 0 | 0 | 0 | 0 | n/d |
endif - vs | -1(if bool - vs) | -1(se pred - vs o if_comp - vs) | 0 | 0 | n/d |
rep - vs | 0 | 0 | 1 | 0 | n/d |
endrep - vs | 0 | 0 | -1 | 0 | n/d |
ciclo - vs | 0 | 0 | 1 | 0 | n/d |
endloop - vs | 0 | 0 | -1 | 0 | n/d |
interruzione - vs | 0 | 0 | 0 | 0 | n/d |
break_comp - vs | 0 | 1, -1 | 0 | 0 | n/d |
interruzione - vs | 0 | 0 | 0 | 0 | n/d |
chiamata - vs | 0 | 0 | 0 | 1 | n/d |
callnz bool - vs | 0 | 0 | 0 | 1 | n/d |
callnz pred - vs | 0 | 1 | 0 | 1 | n/d |
ret - vs | 0 | -1 (pred callnz - vs) | 0 | -1 | n/d |
setp_comp - vs | 0 | 0 | 0 | 0 | n/d |
Profondità annidamento
La profondità di annidamento definisce il numero di istruzioni che possono essere chiamate tra loro. Ogni tipo di istruzione ha uno o più limiti di annidamento:
Tipo di istruzione | Massimo |
---|---|
Annidamento statico | 24 |
Annidamento dinamico | 24 |
ciclo/annidamento del repository | 4 |
annidamento delle chiamate | 4 |
Numero di flussi statici | Nessun limite |
Argomenti correlati