wip: fix: renderer
Some checks reported errors
continuous-integration/drone/push Build was killed

This commit is contained in:
light7734 2025-12-04 23:43:11 +03:30
parent 1b91851739
commit 9379031ab4
Signed by: light7734
GPG key ID: 8C30176798F1A6BA
2 changed files with 69 additions and 45 deletions

View file

@ -104,7 +104,9 @@ constexpr auto dynamic_rendering = VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME;
constexpr auto descriptor_indexing = VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME; constexpr auto descriptor_indexing = VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME;
constexpr auto depth_stencil_resolve = VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME; constexpr auto depth_stencil_resolve = VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME;
constexpr auto maintenance_3 = VK_KHR_MAINTENANCE3_EXTENSION_NAME; constexpr auto maintenance_3 = VK_KHR_MAINTENANCE3_EXTENSION_NAME;
constexpr auto create_renderpass2= VK_KHR_CREATE_RENDERPASS2_EXTENSION_NAME constexpr auto maintenance_2 = VK_KHR_MAINTENANCE2_EXTENSION_NAME;
constexpr auto create_renderpass_2 = VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME;
constexpr auto multiview = VK_KHR_MULTIVIEW_EXTENSION_NAME;
}; // namespace device_extension_names }; // namespace device_extension_names
@ -2854,6 +2856,7 @@ void Device::load_functions()
{ {
const auto load_fn = [this]<typename T>(T &pfn, const char *fn_name) { const auto load_fn = [this]<typename T>(T &pfn, const char *fn_name) {
pfn = std::bit_cast<T>(api::get_device_proc_address(m_device, fn_name)); pfn = std::bit_cast<T>(api::get_device_proc_address(m_device, fn_name));
log::trace("Loading: {}", fn_name);
lt::debug::ensure(pfn, "Failed to load vulkan device function: {}", fn_name); lt::debug::ensure(pfn, "Failed to load vulkan device function: {}", fn_name);
}; };
@ -3612,59 +3615,77 @@ Device::Device(const Gpu &gpu, CreateInfo info)
auto vk_descriptor_indexing_features = VkPhysicalDeviceDescriptorIndexingFeatures {}; auto vk_descriptor_indexing_features = VkPhysicalDeviceDescriptorIndexingFeatures {};
auto vk_dynamic_rendering_features = VkPhysicalDeviceDynamicRenderingFeatures {}; auto vk_dynamic_rendering_features = VkPhysicalDeviceDynamicRenderingFeatures {};
void **last_p_next = &vk_features_2.pNext; vk_dynamic_rendering_features = VkPhysicalDeviceDynamicRenderingFeatures {
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
.pNext = {},
.dynamicRendering = true,
};
log::debug("Dynamic rendering: {}", vk_dynamic_rendering_features.dynamicRendering);
// void **last_p_next = &vk_features_2.pNext;
if (info.dynamic_rendering_features) if (info.dynamic_rendering_features)
{ {
vk_dynamic_rendering_features = VkPhysicalDeviceDynamicRenderingFeatures { // *last_p_next = &vk_dynamic_rendering_features;
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
.pNext = {},
.dynamicRendering = true,
};
log::debug("Dynamic rendering: {}", vk_dynamic_rendering_features.dynamicRendering);
*last_p_next = &vk_dynamic_rendering_features;
// last_p_next = &vk_dynamic_rendering_features.pNext; // last_p_next = &vk_dynamic_rendering_features.pNext;
} }
if (info.descriptor_indexing_features) // if (info.descriptor_indexing_features)
{ // {
const auto features = *info.descriptor_indexing_features; // const auto features = *info.descriptor_indexing_features;
vk_descriptor_indexing_features = VkPhysicalDeviceDescriptorIndexingFeatures { // vk_descriptor_indexing_features = VkPhysicalDeviceDescriptorIndexingFeatures {
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, // .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
.pNext = {}, // .pNext = {},
// clang-format off // // clang-format off
.shaderInputAttachmentArrayDynamicIndexing = features.shader_input_attachment_array_dynamic_indexing, // .shaderInputAttachmentArrayDynamicIndexing =
.shaderUniformTexelBufferArrayDynamicIndexing = features.shader_uniform_texel_buffer_array_dynamic_indexing, // features.shader_input_attachment_array_dynamic_indexing,
.shaderStorageTexelBufferArrayDynamicIndexing = features.shader_storage_texel_buffer_array_dynamic_indexing, // .shaderUniformTexelBufferArrayDynamicIndexing =
.shaderUniformBufferArrayNonUniformIndexing = features.shader_uniform_buffer_array_non_uniform_indexing, // features.shader_uniform_texel_buffer_array_dynamic_indexing,
.shaderSampledImageArrayNonUniformIndexing = features.shader_sampled_image_array_non_uniform_indexing, // .shaderStorageTexelBufferArrayDynamicIndexing =
.shaderStorageBufferArrayNonUniformIndexing = features.shader_storage_buffer_array_non_uniform_indexing, // features.shader_storage_texel_buffer_array_dynamic_indexing,
.shaderStorageImageArrayNonUniformIndexing = features.shader_storage_image_array_non_uniform_indexing, // .shaderUniformBufferArrayNonUniformIndexing =
.shaderInputAttachmentArrayNonUniformIndexing = features.shader_input_attachment_array_non_uniform_indexing, // features.shader_uniform_buffer_array_non_uniform_indexing,
.shaderUniformTexelBufferArrayNonUniformIndexing = features.shader_uniform_texel_buffer_array_non_uniform_indexing, // .shaderSampledImageArrayNonUniformIndexing =
.shaderStorageTexelBufferArrayNonUniformIndexing = features.shader_storage_texel_buffer_array_non_uniform_indexing, // features.shader_sampled_image_array_non_uniform_indexing,
.descriptorBindingUniformBufferUpdateAfterBind = features.descriptor_binding_uniform_buffer_update_after_bind, // .shaderStorageBufferArrayNonUniformIndexing =
.descriptorBindingSampledImageUpdateAfterBind = features.descriptor_binding_sampled_image_update_after_bind, // features.shader_storage_buffer_array_non_uniform_indexing,
.descriptorBindingStorageImageUpdateAfterBind = features.descriptor_binding_storage_image_update_after_bind, // .shaderStorageImageArrayNonUniformIndexing =
.descriptorBindingStorageBufferUpdateAfterBind = features.descriptor_binding_storage_buffer_update_after_bind, // features.shader_storage_image_array_non_uniform_indexing,
.descriptorBindingUniformTexelBufferUpdateAfterBind = features.descriptor_binding_uniform_texel_buffer_update_after_bind, // .shaderInputAttachmentArrayNonUniformIndexing =
.descriptorBindingStorageTexelBufferUpdateAfterBind = features.descriptor_binding_storage_texel_buffer_update_after_bind, // features.shader_input_attachment_array_non_uniform_indexing,
.descriptorBindingUpdateUnusedWhilePending = features.descriptor_binding_update_unused_while_pending, // .shaderUniformTexelBufferArrayNonUniformIndexing =
.descriptorBindingPartiallyBound = features.descriptor_binding_partially_bound, // features.shader_uniform_texel_buffer_array_non_uniform_indexing,
.descriptorBindingVariableDescriptorCount = features.descriptor_binding_variable_descriptor_count, // .shaderStorageTexelBufferArrayNonUniformIndexing =
.runtimeDescriptorArray = features.runtime_descriptor_array, // features.shader_storage_texel_buffer_array_non_uniform_indexing,
// clang-format on // .descriptorBindingUniformBufferUpdateAfterBind =
}; // features.descriptor_binding_uniform_buffer_update_after_bind,
// .descriptorBindingSampledImageUpdateAfterBind =
// *last_p_next = &vk_descriptor_indexing_features; // features.descriptor_binding_sampled_image_update_after_bind,
// last_p_next = &vk_descriptor_indexing_features.pNext; // .descriptorBindingStorageImageUpdateAfterBind =
} // features.descriptor_binding_storage_image_update_after_bind,
// .descriptorBindingStorageBufferUpdateAfterBind =
// features.descriptor_binding_storage_buffer_update_after_bind,
// .descriptorBindingUniformTexelBufferUpdateAfterBind =
// features.descriptor_binding_uniform_texel_buffer_update_after_bind,
// .descriptorBindingStorageTexelBufferUpdateAfterBind =
// features.descriptor_binding_storage_texel_buffer_update_after_bind,
// .descriptorBindingUpdateUnusedWhilePending =
// features.descriptor_binding_update_unused_while_pending,
// .descriptorBindingPartiallyBound = features.descriptor_binding_partially_bound,
// .descriptorBindingVariableDescriptorCount =
// features.descriptor_binding_variable_descriptor_count, .runtimeDescriptorArray =
// features.runtime_descriptor_array,
// // clang-format on
// };
//
// // *last_p_next = &vk_descriptor_indexing_features;
// // last_p_next = &vk_descriptor_indexing_features.pNext;
// }
for (auto name : vk_extension_names) for (auto name : vk_extension_names)
{ {
log::debug("Extension name: {}", name); log::debug("Extension name: {}", name);
} }
auto physical_device_features = VkPhysicalDeviceFeatures {};
auto vk_info = VkDeviceCreateInfo { auto vk_info = VkDeviceCreateInfo {
.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, .sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
.pNext = &vk_dynamic_rendering_features, .pNext = &vk_dynamic_rendering_features,
@ -3672,7 +3693,7 @@ Device::Device(const Gpu &gpu, CreateInfo info)
.pQueueCreateInfos = vk_queue_infos.data(), .pQueueCreateInfos = vk_queue_infos.data(),
.enabledExtensionCount = static_cast<uint32_t>(vk_extension_names.size()), .enabledExtensionCount = static_cast<uint32_t>(vk_extension_names.size()),
.ppEnabledExtensionNames = vk_extension_names.data(), .ppEnabledExtensionNames = vk_extension_names.data(),
.pEnabledFeatures = &vk_features_2.features, // replaced with VkPhysicalDeviceFeatures2 .pEnabledFeatures = &physical_device_features,
}; };
vkc(api::create_device(gpu.m_physical_device, &vk_info, nullptr, &m_device)); vkc(api::create_device(gpu.m_physical_device, &vk_info, nullptr, &m_device));
@ -3682,6 +3703,7 @@ Device::~Device()
{ {
if (m_device) if (m_device)
{ {
log::debug("Destrying device");
api::destroy_device(m_device, nullptr); api::destroy_device(m_device, nullptr);
} }
} }

View file

@ -103,7 +103,9 @@ void Device::initialize_logical_device()
vk::device_extension_names::descriptor_indexing, vk::device_extension_names::descriptor_indexing,
vk::device_extension_names::depth_stencil_resolve, vk::device_extension_names::depth_stencil_resolve,
vk::device_extension_names::maintenance_3, vk::device_extension_names::maintenance_3,
vk::device_extension_names::create_renderpass2, vk::device_extension_names::maintenance_2,
vk::device_extension_names::create_renderpass_2,
vk::device_extension_names::multiview,
}, },
.features = {}, .features = {},