Warpten / rust-pg

rust playing ground, don't look too much into this
0 stars 0 forks source link

Driver/Intel: Descriptor pools creation hates having no pool to create #1

Open Warpten opened 4 months ago

Warpten commented 4 months ago

Driver info

https://vulkan.gpuinfo.org/displayreport.php?id=20373

Stack trace

Stack trace ``` igvk64.dll!00007ff9af890e71() (Unknown Source:0) igvk64.dll!00007ff9af8a5cd2() (Unknown Source:0) igvk64.dll!00007ff9af896127() (Unknown Source:0) igvk64.dll!00007ff9af8aea6c() (Unknown Source:0) igvk64.dll!00007ff9af89adce() (Unknown Source:0) igvk64.dll!00007ff9af84c8ef() (Unknown Source:0) igvk64.dll!00007ff9af7ca231() (Unknown Source:0) VkLayer_khronos_validation.dll!DispatchCreateDescriptorPool(VkDevice_T * device, const VkDescriptorPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorPool_T * * pDescriptorPool) Line 1315 (c:\j\msdk2\build\Vulkan-ValidationLayers\repo\layers\vulkan\generated\layer_chassis_dispatch.cpp:1315) VkLayer_khronos_validation.dll!vulkan_layer_chassis::CreateDescriptorPool(VkDevice_T * device, const VkDescriptorPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorPool_T * * pDescriptorPool) Line 2612 (c:\j\msdk2\build\Vulkan-ValidationLayers\repo\layers\vulkan\generated\chassis.cpp:2612) wowedit.exe!ash::device::Device::create_descriptor_pool(ash::vk::definitions::DescriptorPoolCreateInfo * self, enum2$>> create_info) Line 1590 (c:\Users\vpiquet\.cargo\registry\src\index.crates.io-6f17d22bba15001f\ash-0.38.0+1.3.281\src\device.rs:1590) wowedit.exe!renderer::vk::descriptor::layout::DescriptorSetLayout::new(renderer::vk::descriptor::layout::DescriptorSetLayoutBuilder device) Line 99 (c:\Users\vpiquet\rust-pg\renderer\src\vk\descriptor\layout.rs:99) wowedit.exe!renderer::vk::descriptor::layout::DescriptorSetLayoutBuilder::build(renderer::vk::descriptor::layout::DescriptorSetLayoutBuilder self, renderer::vk::renderer::Renderer * renderer) Line 35 (c:\Users\vpiquet\rust-pg\renderer\src\vk\descriptor\layout.rs:35) wowedit.exe!wowedit::setup(renderer::application::Application * app) Line 67 (c:\Users\vpiquet\rust-pg\wowedit\src\main.rs:67) wowedit.exe!renderer::application::main_loop(renderer::application::ApplicationBuilder builder) Line 100 (c:\Users\vpiquet\rust-pg\renderer\src\application.rs:100) wowedit.exe!renderer::application::ApplicationBuilder::run(renderer::application::ApplicationBuilder self) Line 75 (c:\Users\vpiquet\rust-pg\renderer\src\application.rs:75) wowedit.exe!wowedit::main() Line 147 (c:\Users\vpiquet\rust-pg\wowedit\src\main.rs:147) wowedit.exe!core::ops::function::FnOnce::call_once>(void(*)()) Line 250 (c:\rustc\25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04\library\core\src\ops\function.rs:250) [Inline Frame] wowedit.exe!core::hint::black_box(tuple$<>) Line 155 (c:\rustc\25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04\library\std\src\sys_common\backtrace.rs:155) wowedit.exe!std::sys_common::backtrace::__rust_begin_short_backtrace>(void(*)() f) Line 161 (c:\rustc\25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04\library\std\src\sys_common\backtrace.rs:161) wowedit.exe!std::rt::lang_start::closure$0>(std::rt::lang_start::closure_env$0> *) Line 166 (c:\rustc\25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04\library\std\src\rt.rs:166) ```

Revision

5766801a80b21326eead4ffe458ddc96d3243e98

Workaround

  1. Don't create descriptor set layouts without bindings.

Analysis

  1. Setting the p_pool_sizes field to nullptr manually has no effect
  2. Conditionally calling vk::DescriptorPoolCreateInfo::pool_sizes has no effect.