Límites de anidamiento del control de flujo
Las instrucciones de control de flujo del sombreador de vértices tienen dos restricciones especiales. Las profundidades de anidamiento restringen el número de instrucciones que se pueden llamar entre sí. Además, cada instrucción tiene un recuento de ranuras de instrucción que se aplica al número máximo de instrucciones que un sombreador puede admitir.
Nota
Cuando se usan los perfiles de sombreador *_4_0_level_9_x HLSL, se usan implícitamente los perfiles del modelo de sombreador 2.x para admitir hardware compatible con Direct3D 9. Los perfiles del modelo de sombreador 2.x admiten un comportamiento de control de flujo más limitado que los perfiles del modelo de sombreador 4.x y versiones posteriores.
Recuento de profundidad por instrucción para vs_2_0
Cada instrucción cuenta con uno o varios límites de profundidad de anidamiento. En esta tabla se muestra el recuento de profundidad que cada instrucción agrega o resta de la profundidad existente:
Instrucción | Anidamiento estático | Anidamiento dinámico | anidamiento de bucles o rep | anidamiento de llamadas | Recuento de flujos estáticos |
---|---|---|---|---|---|
if bool - vs | 0 | 0 | 0 | 0 | 1 |
if_comp: frente a | N/D | N/D | N/D | N/D | N/D |
si está pred : frente a | N/D | N/D | N/D | N/D | N/D |
else: vs | 0 | 0 | 0 | 0 | 1(if bool - vs only) |
endif: vs | -1 | 0 | 0 | 0 | 0 |
rep- vs | 0 | 0 | 1 | 0 | 1 |
endrep - vs | 0 | 0 | -1 | 0 | 0 |
bucle: frente a | 0 | 0 | 1 | 0 | 1 |
endloop: vs | 0 | 0 | -1 | 0 | 0 |
break: frente a | N/D | N/D | N/D | N/D | N/D |
break_comp: frente a | 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: frente a | N/D | N/D | N/D | N/D | N/D |
Profundidad de anidamiento
La profundidad de anidamiento define cuántas instrucciones se pueden llamar entre sí. Cada tipo de instrucción tiene uno o varios límites de anidamiento:
Tipo de instrucción | Máximo |
---|---|
Anidamiento estático | Solo limitado por el recuento de flujos estáticos |
Anidamiento dinámico | N/D |
anidamiento de bucle/rep | 1 |
anidamiento de llamadas | 1 |
Recuento de flujos estáticos | 16 |
Recuento de profundidad por instrucción para vs_2_x
Cada instrucción cuenta con uno o varios límites de profundidad de anidamiento. En esta tabla se muestra el recuento de profundidad que cada instrucción agrega o resta de la profundidad existente:
Instrucción | Anidamiento estático | Anidamiento dinámico | anidamiento de bucle/rep | anidamiento de llamadas | Recuento de flujos estáticos |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | 1 |
if_comp: frente a | 0 | 1 | 0 | 0 | 0 |
si está pred : frente a | 0 | 1 | 0 | 0 | 0 |
else - vs | 0 | 0 | 0 | 0 | 1(if bool - vs only) |
endif : vs | -1(if bool - vs) | -1(si está pred - vs o if_comp - vs) | 0 | 0 | 0 |
rep - vs | 0 | 0 | 1 | 0 | 1 |
endrep - vs | 0 | 0 | -1 | 0 | 0 |
bucle: frente a | 0 | 0 | 1 | 0 | 1 |
endloop: vs | 0 | 0 | -1 | 0 | 0 |
break: vs | 0 | 0 | 0 | 0 | 0 |
break_comp: frente a | 0 | 1, -1 | 0 | 0 | 0 |
breakp: vs | 0 | 0 | 0 | 0 | 0 |
call: vs | 0 | 0 | 0 | 1 | 1 |
callnz bool - vs | 0 | 0 | 0 | 1 | 1 |
callnz pred : vs | 0 | 1 | 0 | 1 | 0 |
ret : frente a | 0 | -1 (callnz pred - vs) | 0 | -1 | 0 |
setp_comp: frente a | 0 | 0 | 0 | 0 | 0 |
Profundidad de anidamiento
La profundidad de anidamiento define cuántas instrucciones se pueden llamar entre sí. Cada tipo de instrucción tiene uno o varios límites de anidamiento:
Tipo de instrucción | Máximo |
---|---|
Anidamiento estático | Solo limitado por el número de flujos estáticos |
Anidamiento dinámico | 0 o 24, consulte D3DCAPS9. VS20Caps.DynamicFlowControlDepth |
anidamiento de bucles o rep | De 1 a 4, consulte D3DCAPS9. VS20Caps.StaticFlowControlDepth |
anidamiento de llamadas | De 1 a 4, consulte D3DCAPS9. VS20Caps.StaticFlowControlDepth (independiente del límite de bucle o rep) |
Recuento de flujos estáticos | 16 |
Recuento de profundidad por instrucción para vs_2_sw
Cada instrucción cuenta con uno o varios límites de profundidad de anidamiento. En esta tabla se muestra el recuento de profundidad que cada instrucción agrega o resta de la profundidad existente:
Instrucción | Anidamiento estático | Anidamiento dinámico | anidamiento de bucles o rep | anidamiento de llamadas | Recuento de flujos estáticos |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | N/D |
if_comp: frente a | 0 | 1 | 0 | 0 | N/D |
si está pred : frente a | 0 | 1 | 0 | 0 | N/D |
else: vs | 0 | 0 | 0 | 0 | N/D |
endif: vs | -1(if bool - vs) | -1(si está 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 |
bucle: frente a | 0 | 0 | 1 | 0 | N/D |
endloop: vs | 0 | 0 | -1 | 0 | N/D |
break: vs | 0 | 0 | 0 | 0 | N/D |
break_comp: frente a | 0 | 1, -1 | 0 | 0 | N/D |
breakp : vs | 0 | 0 | 0 | 0 | N/D |
call - 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 (callnz pred - vs) | 0 | -1 | N/D |
setp_comp: frente a | 0 | 0 | 0 | 0 | N/D |
Profundidad de anidamiento
La profundidad de anidamiento define cuántas instrucciones se pueden llamar entre sí. Cada tipo de instrucción tiene uno o varios límites de anidamiento:
Tipo de instrucción | Máximo |
---|---|
Anidamiento estático | 24 |
Anidamiento dinámico | 24 |
anidamiento de bucle/rep | 4 |
anidamiento de llamadas | 4 |
Recuento de flujos estáticos | Sin límite |
Recuento de profundidad por instrucción para vs_3_0
Cada instrucción cuenta con uno o varios límites de profundidad de anidamiento. En esta tabla se muestra el recuento de profundidad que cada instrucción agrega o resta de la profundidad existente:
Instrucción | Anidamiento estático | Anidamiento dinámico | anidamiento de bucle/rep | anidamiento de llamadas | Recuento de flujos estáticos |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | N/D |
if_comp: frente a | 0 | 1 | 0 | 0 | N/D |
si está pred : frente a | 0 | 1 | 0 | 0 | N/D |
else - vs | 0 | 0 | 0 | 0 | N/D |
endif : vs | -1(if bool - vs) | -1(si está 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 |
bucle: frente a | 0 | 0 | 1 | 0 | N/D |
endloop: vs | 0 | 0 | -1 | 0 | N/D |
break: vs | 0 | 0 | 0 | 0 | N/D |
break_comp: frente a | 0 | 1, -1 | 0 | 0 | N/D |
breakp : vs | 0 | 0 | 0 | 0 | N/D |
call - 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 (callnz pred - vs) | 0 | -1 | N/D |
setp_comp: frente a | 0 | 0 | 0 | 0 | N/D |
Profundidad de anidamiento
La profundidad de anidamiento define cuántas instrucciones se pueden llamar entre sí. Cada tipo de instrucción tiene uno o varios límites de anidamiento:
Tipo de instrucción | Máximo |
---|---|
Anidamiento estático | 24 |
Anidamiento dinámico | 24 |
anidamiento de bucles o rep | 4 |
anidamiento de llamadas | 4 |
Recuento de flujos estáticos | Sin límite |
Recuento de profundidad por instrucción para vs_3_sw
Cada instrucción cuenta con uno o varios límites de profundidad de anidamiento. En esta tabla se muestra el recuento de profundidad que cada instrucción agrega o resta de la profundidad existente:
Instrucción | Anidamiento estático | Anidamiento dinámico | anidamiento de bucles o rep | anidamiento de llamadas | Recuento de flujos estáticos |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | N/D |
if_comp: frente a | 0 | 1 | 0 | 0 | N/D |
si está pred : frente a | 0 | 1 | 0 | 0 | N/D |
else: vs | 0 | 0 | 0 | 0 | N/D |
endif: vs | -1(if bool - vs) | -1(si está 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 |
bucle: frente a | 0 | 0 | 1 | 0 | N/D |
endloop: vs | 0 | 0 | -1 | 0 | N/D |
break: frente a | 0 | 0 | 0 | 0 | N/D |
break_comp: frente a | 0 | 1, -1 | 0 | 0 | N/D |
breakp: vs | 0 | 0 | 0 | 0 | N/D |
call: 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 : frente a | 0 | -1 (callnz pred - vs) | 0 | -1 | N/D |
setp_comp: frente a | 0 | 0 | 0 | 0 | N/D |
Profundidad de anidamiento
La profundidad de anidamiento define cuántas instrucciones se pueden llamar entre sí. Cada tipo de instrucción tiene uno o varios límites de anidamiento:
Tipo de instrucción | Máximo |
---|---|
Anidamiento estático | 24 |
Anidamiento dinámico | 24 |
anidamiento de bucles o rep | 4 |
anidamiento de llamadas | 4 |
Recuento de flujos estáticos | Sin límite |
Temas relacionados