> ## 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 (XBOX Series 主機)

> D3D12XBOX_GRAPHICS_SHADER_LIMITS_DESC (XBOX Series 主機) — 定義圖形著色器的限制。適用於 XBOX 遊戲開發的 Direct3D 12 圖形 API 參考。

定義圖形著色器的限制。

## 語法

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

### 成員

*MaxWavesWithLateAllocParameterCache*\
類型：UINT

指定在未於延遲配置參數快取中配置空間的情況下，允許執行的最後階段 wave 數目上限。較高的數值可讓更多 wave 執行，但可能會在單一指令多重資料單元 (SIMD) 中造成爭用，因為著色器會在第一個 *exp* 指令停滯，直到有可用空間為止，這可能會佔用 wave 槽位、GPR 及其他共用資源。

「最後階段」是指在像素著色器之前發生的階段：VS、DS 或 GS。對於 GS，這只會影響著色器的傳遞部分。

若要為場景的不同部分找出最佳設定，請考慮使用 Dr. PIX 實驗。

將 **MaxWavesWithLateAllocParameterCache** 設定為高於 22 可能會導致 GPU 死結。如果這些死結是由 GPU 管線轉換所造成，則可能很少發生且難以重現。若要在 **MaxWavesWithLateAllocParameterCache** 成員設定為較高值時防止此類死結，請確保 **VSDisableCUMask** 成員具有非零值，讓至少一個計算單元 (CU) 不執行頂點著色器，從而防止死結。一般而言，相對於設定 **MaxWavesWithLateAllocParameterCache** 所帶來的效能提升，遮罩作業對效能的影響微不足道。

*VSDisableFlags*\
類型：[D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/zh-TW/reference/graphics/d3d12_xs/enums/d3d12xbox_shader_unit_disable_flags_xs)

指定要對頂點著色器停用之計算單元的位元欄位。

*reserved0*\
類型：UINT

保留。

*GSDisableFlags*\
類型：[D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/zh-TW/reference/graphics/d3d12_xs/enums/d3d12xbox_shader_unit_disable_flags_xs)

指定要對幾何著色器停用之計算單元的位元欄位。

*PSDisableFlags*\
類型：[D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/zh-TW/reference/graphics/d3d12_xs/enums/d3d12xbox_shader_unit_disable_flags_xs)

指定要對像素著色器停用之計算單元的位元欄位。

*VSMaxWaves*\
類型：UINT

指定允許在 GPU 上同時執行的 VS wave 數目上限。

*HSMaxWaves*\
類型：UINT

指定允許在 GPU 上同時執行的 HS wave 數目上限。

*reserved1*\
類型：UINT

保留。

*GSMaxWaves*\
類型：UINT

指定允許在 GPU 上同時執行的 GS wave 數目上限。

*PSMaxWaves*\
類型：UINT

指定允許在 GPU 上同時執行的 PS wave 數目上限。

*VSMaxWavesForCuLocking*\
類型：UINT

指定允許發生 CU 鎖定的 VS wave 數目上限。

*HSMaxWavesForCuLocking*\
類型：UINT

指定允許發生 CU 鎖定的 HS wave 數目上限。

*reserved2*\
類型：UINT

保留。

*GSMaxWavesForCuLocking*\
類型：UINT

指定允許發生 CU 鎖定的 GS wave 數目上限。

*PSMaxWavesForCuLocking*\
類型：UINT

指定允許發生 CU 鎖定的 PS wave 數目上限。

## 備註

使用 **MaxWavesForCuLocking** 參數時，如果正在執行的 wave 數目少於此上限，且有新的 wave 已就緒但無法排程到任何地方，GPU 就會「鎖定」一個計算單元 (CU)，使來自其他階段 (或管道) 的新 wave 都無法使用它，直到此階段的新 wave 最終啟動為止。這有助於控制「資源匱乏」。

使用內嵌協助程式函式 [D3D12XboxInitializeDefaultGraphicsShaderLimits](/zh-TW/reference/graphics/d3d12_x/functions/d3d12xboxinitializedefaultgraphicsshaderlimits)，以預設值初始化 **D3D12XBOX\_GRAPHICS\_SHADER\_LIMITS\_DESC** 結構。

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

## 需求

**標頭：** d3d12\_xs.h\
**支援的平台**：XBOX Series 主機

## 另請參閱

[d3d12\_xs](/zh-TW/reference/graphics/d3d12_xs/d3d12_xs_members)


## Related topics

- [D3D12_DISPATCH_RAYS_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_dispatch_rays_desc_public.md)
- [D3D12_HIT_GROUP_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_hit_group_desc_public.md)
- [D3D12_DXIL_LIBRARY_DESC (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_dxil_library_desc_public.md)
- [D3D12_RAYTRACING_SHADER_CONFIG (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/structs/d3d12_raytracing_shader_config_public.md)
- [D3D12_MESH_SHADER_TIER (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12_xs/enums/d3d12_mesh_shader_tier_xs.md)
