小屋創作

日誌2023-11-23 03:40

實作Graphic API時,永遠不要忽略任何一個Validation錯誤

作者:巧克力喬斯達

不論D3D12或是Vulkan都是如此

D3D12:
https://learn.microsoft.com/en-us/windows/win32/direct3d12/using-d3d12-debug-layer-gpu-based-validation

Vulkan:
https://vulkan-tutorial.com/Drawing_a_triangle/Setup/Validation_layers

除非很篤定錯誤是其他App造成的
例如Vulkan會在RTSS這個顯示FPS的工具開啟的情況下,回報Swapchain有問題
否則絕對不要忽略任何一個Validation Error! Runtime沒事不代表真的沒事
輕則只是繪圖效果有點差異或者效能有點差,重則TDR當掉!

最近開始參與新專案了,由於是一款知名舊作重製,所以引擎反而退回UE3而不是UE5
這時Xbox的D3D12實作根本不夠嚴謹...導致一把XSX的validation layer打開就一堆驗證錯誤

這幾天就以拆彈手之姿處理各種錯誤,像是:
1. 明明XSX只支援到Shader Model 6.6卻用了6.7,導致CreateGraphicsPipeline錯誤
2. 資源處於錯誤的狀態,例如RTV/DSV並不是D3D12_RESOURCE_STATE_RENDER_TARGET / D3D12_RESOURCE_STATE_DEPTH_WRITE.
又或者資源被綁定為Shader輸入時狀態還是D3D12_RESOURCE_STATE_COPY_DEST而不是D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE...
3. Shader使用了錯誤或不一致的semantic,例如vertex shader輸出'SV_POSITION',但pixel shader輸入'POSITION',這樣也不能過驗證

簡直就像是..他們引進D3D12時,完全沒開Validation Layer在實作!
能發揮底層方面的專才我是很開心
但這種基本型的錯誤多了,還是挺惱人的
所以實作Graphic API時,永遠不要忽略任何一個Validation錯誤!

2

0

LINE 分享

相關創作

[雜談]第8回完成心得_漫畫的「抓型」

體積小、功能全 ASRock B850I Lightning WiFi 主機板開箱評測

【祜塵】|塔羅星象占卜:千里迢迢之外,你從何而來????

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】