> ## 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 One 系列)

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

定義圖形著色器的限制。

## 語法

```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  
```

### 成員

*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_x/enums/d3d12xbox_shader_unit_disable_flags)

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

*DSDisableFlags*\
類型：[D3D12XBOX\_SHADER\_UNIT\_DISABLE\_FLAGS](/zh-TW/reference/graphics/d3d12_x/enums/d3d12xbox_shader_unit_disable_flags)

位元欄位，指定要為網域著色器停用的計算單元。

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

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

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

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

*VSMaxWaves*\
類型：UINT

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

*HSMaxWaves*\
類型：UINT

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

*DSMaxWaves*\
類型：UINT

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

*GSMaxWaves*\
類型：UINT

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

*PSMaxWaves*\
類型：UINT

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

*VSMaxWavesForCuLocking*\
類型：UINT

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

*HSMaxWavesForCuLocking*\
類型：UINT

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

*DSMaxWavesForCuLocking*\
類型：UINT

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

*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\_x.h

**支援的平台：** XBOX One 系列

## 另請參閱

[d3d12\_x](/zh-TW/reference/graphics/d3d12_x/d3d12_x_members)


## Related topics

- [NDA 主題目錄 - Microsoft Learn 線上連結](/zh-TW/nda/nda-topic-directory.md)
- [D3D12_SHADER_RESOURCE_VIEW_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_shader_resource_view_desc_public.md)
- [D3D12_SHADER_CACHE_SESSION_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_shader_cache_session_desc_public.md)
- [ID3D12ShaderCacheSession::GetDesc](/zh-TW/reference/graphics/d3d12/interfaces/id3d12shadercachesession/methods/id3d12shadercachesession_getdesc_public.md)
- [D3D12_SHADER_VISIBILITY](/zh-TW/reference/graphics/d3d12/enums/d3d12_shader_visibility_public.md)
