> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# D3D12XBOX_GRAPHICS_SHADER_LIMITS_DESC (família XBOX One)

> D3D12XBOX_GRAPHICS_SHADER_LIMITS_DESC (consoles da família XBOX One) — Define os limites de um shader gráfico. Referência da API gráfica do Direct3D 12 para desenvolvimento no XBOX.

Define os limites de um shader gráfico.

## Sintaxe

```cpp theme={null}
typedef struct D3D12XBOX_GRAPHICS_SHADER_LIMITS_DESC {  
    UINT MaxWavesWithLateAllocParameterCache;  
    D3D12XBOX_SHADER_UNIT_DISABLE_FLAGS VSDisableFlags;  
    D3D12XBOX_SHADER_UNIT_DISABLE_FLAGS DSDisableFlags;  
    D3D12XBOX_SHADER_UNIT_DISABLE_FLAGS GSDisableFlags;  
    D3D12XBOX_SHADER_UNIT_DISABLE_FLAGS PSDisableFlags;  
    UINT VSMaxWaves;  
    UINT HSMaxWaves;  
    UINT DSMaxWaves;  
    UINT GSMaxWaves;  
    UINT PSMaxWaves;  
    UINT VSMaxWavesForCuLocking;  
    UINT HSMaxWavesForCuLocking;  
    UINT DSMaxWavesForCuLocking;  
    UINT GSMaxWavesForCuLocking;  
    UINT PSMaxWavesForCuLocking;  
} D3D12XBOX_GRAPHICS_SHADER_LIMITS_DESC  
```

### Membros

*MaxWavesWithLateAllocParameterCache*\
Tipo: UINT

Especifica o número máximo de waves do último estágio que podem ser executadas sem alocar espaço no cache de parâmetros de alocação tardia. Números maiores permitem que mais waves sejam executadas, mas podem causar contenção nas unidades SIMD (Single Instruction Multiple Data), pois os shaders ficarão parados na primeira instrução *exp* até que haja espaço, possivelmente monopolizando slots de wave, GPRs e outros recursos compartilhados.

"Último estágio" é o estágio que ocorre antes do pixel shader: VS, DS ou GS. Para GS, isso afeta apenas a parte de passagem do shader.

Para encontrar as configurações ideais para diferentes partes de uma cena, considere usar experimentos do Dr. PIX.

Definir **MaxWavesWithLateAllocParameterCache** acima de 22 pode causar deadlocks na GPU. Se esses deadlocks forem causados por uma transição de pipeline da GPU, eles poderão ser raros e difíceis de reproduzir. Para evitar esses deadlocks com configurações altas do membro **MaxWavesWithLateAllocParameterCache**, verifique se o membro **VSDisableCUMask** tem um valor diferente de zero, para que pelo menos uma unidade de computação (CU) não esteja executando vertex shaders, evitando assim deadlocks. Normalmente, em relação aos ganhos de desempenho obtidos com a configuração de **MaxWavesWithLateAllocParameterCache**, o impacto no desempenho causado pela operação de mascaramento é insignificante.

*VSDisableFlags*\
Tipo: [D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_shader_unit_disable_flags)

Campo de bits que especifica as unidades de computação a serem desabilitadas para o vertex shader.

*DSDisableFlags*\
Tipo: [D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_shader_unit_disable_flags)

Campo de bits que especifica as unidades de computação a serem desabilitadas para o domain shader.

*GSDisableFlags*\
Tipo: [D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_shader_unit_disable_flags)

Campo de bits que especifica as unidades de computação a serem desabilitadas para o geometry shader.

*PSDisableFlags*\
Tipo: [D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_shader_unit_disable_flags)

Campo de bits que especifica as unidades de computação a serem desabilitadas para o pixel shader.

*VSMaxWaves*\
Tipo: UINT

Especifica o número máximo de waves de VS que podem ser executadas simultaneamente na GPU.

*HSMaxWaves*\
Tipo: UINT

Especifica o número máximo de waves de HS que podem ser executadas simultaneamente na GPU.

*DSMaxWaves*\
Tipo: UINT

Especifica o número máximo de waves de DS que podem ser executadas simultaneamente na GPU.

*GSMaxWaves*\
Tipo: UINT

Especifica o número máximo de waves de GS que podem ser executadas simultaneamente na GPU.

*PSMaxWaves*\
Tipo: UINT

Especifica o número máximo de waves de PS que podem ser executadas simultaneamente na GPU.

*VSMaxWavesForCuLocking*\
Tipo: UINT

Especifica o número máximo de waves de VS que permitem que o bloqueio de CU ocorra.

*HSMaxWavesForCuLocking*\
Tipo: UINT

Especifica o número máximo de waves de HS que permitem que o bloqueio de CU ocorra.

*DSMaxWavesForCuLocking*\
Tipo: UINT

Especifica o número máximo de waves de DS que permitem que o bloqueio de CU ocorra.

*GSMaxWavesForCuLocking*\
Tipo: UINT

Especifica o número máximo de waves de GS que permitem que o bloqueio de CU ocorra.

*PSMaxWavesForCuLocking*\
Tipo: UINT

Especifica o número máximo de waves de PS que permitem que o bloqueio de CU ocorra.

## Comentários

Com os parâmetros **MaxWavesForCuLocking**, se o número de waves em execução for menor que esse número máximo e se uma nova wave estiver pronta, mas não puder ser agendada em nenhum lugar, a GPU "bloqueará" uma unidade de computação (CU) de modo que nenhuma nova wave de outros estágios (ou pipes) possa usá-la até que a nova wave desse estágio seja finalmente iniciada. Isso ajuda a controlar a "inanição".

Use a função auxiliar embutida [D3D12XboxInitializeDefaultGraphicsShaderLimits](/pt-BR/reference/graphics/d3d12_x/functions/d3d12xboxinitializedefaultgraphicsshaderlimits) para inicializar uma estrutura **D3D12XBOX\_GRAPHICS\_SHADER\_LIMITS\_DESC** com os padrões.

Os seguintes métodos e estruturas usam esta estrutura:

* [D3D12XboxInitializeDefaultGraphicsShaderLimits](/pt-BR/reference/graphics/d3d12_x/functions/d3d12xboxinitializedefaultgraphicsshaderlimits)
* [SetGraphicsShaderLimitsX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_setgraphicsshaderlimitsx)
* [XboxSetGraphicsShaderLimits](/pt-BR/reference/graphics/d3d12_x/interfaces/cd3dx12xbox_pipeline_state_stream_parse_helper/methods/cd3dx12xbox_pipeline_state_stream_parse_helper_xboxsetgraphicsshaderlimits)
* [XboxSetGraphicsShaderLimits](/pt-BR/reference/graphics/d3d12_x/interfaces/cd3dx12xbox_pipeline_state_stream_parse_helper/methods/cd3dx12xbox_pipeline_state_stream_parse_helper_xboxsetgraphicsshaderlimits)
* [D3D12XBOX\_DERIVED\_GRAPHICS\_STATE\_DESC](/pt-BR/reference/graphics/d3d12_x/structs/d3d12xbox_derived_graphics_state_desc)
* [D3D12XBOX\_EXTENDED\_GRAPHICS\_PIPELINE\_STATE\_DESC](/pt-BR/reference/graphics/d3d12_x/structs/d3d12xbox_extended_graphics_pipeline_state_desc)
* [D3D12XBOX\_EXTENDED\_GRAPHICS\_PIPELINE\_STATE\_DESC](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_extended_graphics_pipeline_state_type)

## Requisitos

**Cabeçalho:** d3d12\_x.h

**Plataformas com suporte:** família XBOX One

## Confira também

[d3d12\_x](/pt-BR/reference/graphics/d3d12_x/d3d12_x_members)


## Related topics

- [Diretório de tópicos NDA: links ativos do Microsoft Learn](/pt-BR/nda/nda-topic-directory.md)
- [D3D12_SHADER_CACHE_SESSION_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_shader_cache_session_desc_public.md)
- [D3D12_SHADER_RESOURCE_VIEW_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_shader_resource_view_desc_public.md)
- [ID3D12ShaderCacheSession::GetDesc](/pt-BR/reference/graphics/d3d12/interfaces/id3d12shadercachesession/methods/id3d12shadercachesession_getdesc_public.md)
- [D3D12_SHADER_VISIBILITY](/pt-BR/reference/graphics/d3d12/enums/d3d12_shader_visibility_public.md)
