2016-11-06 20 views
1

我目前正在使用一個NVIDIA GeForce GTX 780(來自Gigabyte如果有問題 - 我不知道這可能會受到板載BIOS的影響,我也有兩個安裝,但由於Vulkans的可能性SLI I在我的代碼中一次只能使用一個設備,但是在NVIDIA控制中心激活了SLI,我使用官方的Driver版本375.63)。當然,GPU完全支持幾何着色器。
我正在使用Vulkan API的幾何着色器,它工作的很好,並且做了我期望它做的一切。但是,我收到驗證圖層報告如下:@[SC]: Shader requires VkPhysicalDeviceFeatures::geometryShader but is not enabled on the deviceVulkan:幾何着色器驗證不正確?

這是一個錯誤?有人有類似的問題嗎?

PS:http://vulkan.gpuinfo.org/displayreport.php?id=777#features表示對「幾何着色器」的支持是「真實的」,因爲預期的。我正在使用Vulkan 1.0.30.0 SDK。

回答

3

Vulkan的功能與OpenGL擴展的工作方式不同。在OpenGL中,如果支持擴展,那麼它總是處於活動狀態。在Vulkan中,功能可用是不夠的。當您創建一個VkDevice時,您必須明確要求您打算使用的所有功能。

如果您沒有要求使用幾何着色器功能,那麼即使VkPhysicalDevice爲其支持,也不能使用GS。

因此,步驟的順序應該是檢查VkPhysicalDevice是否支持您要使用的功能,然後在撥打vkCreateDevice時提供VkDeviceCreateInfo::pEnabledFeatures中的功能。

由於Vulkan不會對其大部分輸入進行驗證檢查,因此實際的驅動程序可能會假定您啓用了該功能,並只執行通常的操作。但這並不是必需的;使用尚未啓用的功能是未定義的行爲。所以驗證層是正確的阻止你。

+0

那麼爲什麼它工作呢?我會嘗試一下,謝謝:) – ToxiCore

+0

我解釋了爲什麼它不起作用:「實際的驅動程序可能會假設你啓用了該功能,只是做它通常會做的事情。」說到Vulkan,你應該永遠不會認爲「工作」意味着你做的一切都是正確的。聽取驗證層。 –