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

> 傳遞給命令清單以改變內部驅動程式行為的提示

傳遞給命令清單以改變內部驅動程式行為的提示。須搭配 [DriverHintX](/zh-TW/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/methods/id3d12graphicscommandlist_driverhintx) 命令清單 API 使用。

## 語法

```cpp theme={null}
enum D3D12XBOX_CMDLIST_DRIVER_HINT    
{  
    D3D12XBOX_CMDLIST_DRIVER_HINT_BEGIN_ALTERNATIVE_COMPUTE_PSO_RENDERING,  
    D3D12XBOX_CMDLIST_DRIVER_HINT_END_ALTERNATIVE_COMPUTE_PSO_RENDERING,
    D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_CLEAR,
    D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_COPY,
    D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_CLEAR_OR_COPY  
}  
```

## 常數

| 常數 | 描述 |
| - | - |
| D3D12XBOX\_CMDLIST\_DRIVER\_HINT\_BEGIN\_ALTERNATIVE\_COMPUTE\_PSO\_RENDERING | 僅限內部使用 |
| D3D12XBOX\_CMDLIST\_DRIVER\_HINT\_END\_ALTERNATIVE\_COMPUTE\_PSO\_RENDERING | 僅限內部使用 |
| D3D12XBOX\_CMDLIST\_DRIVER\_HINT\_DONT\_SYNC\_ON\_CLEAR | 若套用此提示，驅動程式在清除作業期間不會插入任何管線同步處理或快取排清 |
| D3D12XBOX\_CMDLIST\_DRIVER\_HINT\_DONT\_SYNC\_ON\_COPY | 若套用此提示，驅動程式在複製作業期間不會插入任何管線同步處理或快取排清 |
| D3D12XBOX\_CMDLIST\_DRIVER\_HINT\_DONT\_SYNC\_ON\_CLEAR\_OR\_COPY | 上述兩個提示的組合 |

## 備註

```cpp theme={null}
D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_CLEAR
D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_COPY
D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_CLEAR_OR_COPY
```

由於寫入後讀取危害 (RAW)，用於清除或複製資源的 D3D12 API 呼叫在內部需要同步處理以確保正確性。例如，驅動程式可能為了效率而選擇使用 Dispatch 作業來執行轉譯目標清除，在此情況下，所有未完成的像素著色器工作都必須排清，因為驅動程式不知道是否有正在進行中的繪製正在寫入該轉譯目標，最終結果是所有清除/複製工作都會在 GPU 上序列化。驅動程式必須保守處理所造成的效能影響可能很大，特別是當應用程式想要連續清除/複製許多資源時。

在許多情況下，可以安全地省略同步處理，因為應用程式開發人員知道在其特定情境中不存在 RAW 危害。在此情況下，應用程式可以使用上述提示，將命令清單置於驅動程式不會將同步處理插入命令串流的模式。呼叫提示 API 時，若在 feature 欄位中使用這些旗標之一，並在 value 欄位中使用非零值，會將命令清單置於「無同步模式」；反之，值為 0 則會讓命令清單恢復正常運作。命令清單在呼叫 Reset 時也會恢復正常運作。

驅動程式會在呼叫 [DriverHintX](/zh-TW/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/methods/id3d12graphicscommandlist_driverhintx) 期間，插入它通常會在 Clear/Copy 呼叫期間插入的同步處理，讓成本能分攤到長序列的清除/複製作業上。

預期的用法如下:

```cpp theme={null}
    pList->DriverHintX(D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_CLEAR_OR_COPY, 1); // Driver will synchronize here
        pList->ClearRenderTargetView(...);
        pList->ClearRenderTargetView(...);
        pList->ClearDepthStencilView(...);
        pList->CopyResource(...);
        etc
    pList->DriverHintX(D3D12XBOX_CMDLIST_DRIVER_HINT_DONT_SYNC_ON_CLEAR_OR_COPY, 0); // Driver also synchronize here, safe to use clear/copied resources without hazard
```

## 需求

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

## 另請參閱

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


## Related topics

- [D3D12_SERIALIZED_DATA_TYPE (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/enums/d3d12_serialized_data_type_public.md)
- [D3D12_SHADER_CACHE_KIND_FLAGS (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/enums/d3d12_shader_cache_kind_flags_public.md)
- [ID3D12Device10 (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device10/id3d12device10_public.md)
- [ID3D12Device5 (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device5/id3d12device5_public.md)
- [ID3D12Device9 (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device9/id3d12device9_public.md)
