mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-06-27 20:46:23 +02:00
[vulkan] Re-odering pNext chain access for InlineUniformBlock + DescriptorBuffer
This commit is contained in:
parent
477157d029
commit
b3d4dbca60
1 changed files with 23 additions and 7 deletions
|
|
@ -485,27 +485,43 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
||||||
}
|
}
|
||||||
|
|
||||||
// VK_EXT_descriptor_buffer
|
// VK_EXT_descriptor_buffer
|
||||||
|
VkPhysicalDeviceDescriptorBufferFeaturesEXT descriptor_buffer_temp{};
|
||||||
|
descriptor_buffer_temp.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT;
|
||||||
|
descriptor_buffer_temp.pNext = nullptr;
|
||||||
|
VkPhysicalDeviceFeatures2 db_features2{};
|
||||||
|
db_features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
||||||
|
db_features2.pNext = &descriptor_buffer_temp;
|
||||||
|
physical.GetFeatures2(db_features2);
|
||||||
|
|
||||||
VkPhysicalDeviceDescriptorBufferFeaturesEXT descriptor_buffer_features{
|
VkPhysicalDeviceDescriptorBufferFeaturesEXT descriptor_buffer_features{
|
||||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
|
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
|
||||||
.pNext = first_next,
|
.pNext = first_next,
|
||||||
.descriptorBuffer = features.descriptor_buffer.descriptorBuffer ? VK_TRUE : VK_FALSE,
|
.descriptorBuffer = descriptor_buffer_temp.descriptorBuffer ? VK_TRUE : VK_FALSE,
|
||||||
.descriptorBufferCaptureReplay = features.descriptor_buffer.descriptorBufferCaptureReplay ? VK_TRUE : VK_FALSE,
|
.descriptorBufferCaptureReplay = descriptor_buffer_temp.descriptorBufferCaptureReplay ? VK_TRUE : VK_FALSE,
|
||||||
.descriptorBufferImageLayoutIgnored = features.descriptor_buffer.descriptorBufferImageLayoutIgnored ? VK_TRUE : VK_FALSE,
|
.descriptorBufferImageLayoutIgnored = descriptor_buffer_temp.descriptorBufferImageLayoutIgnored ? VK_TRUE : VK_FALSE,
|
||||||
.descriptorBufferPushDescriptors = features.descriptor_buffer.descriptorBufferPushDescriptors ? VK_TRUE : VK_FALSE,
|
.descriptorBufferPushDescriptors = descriptor_buffer_temp.descriptorBufferPushDescriptors ? VK_TRUE : VK_FALSE,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (extensions.descriptor_buffer) {
|
if (extensions.descriptor_buffer && descriptor_buffer_temp.descriptorBuffer) {
|
||||||
first_next = &descriptor_buffer_features;
|
first_next = &descriptor_buffer_features;
|
||||||
}
|
}
|
||||||
|
|
||||||
// VK_EXT_inline_uniform_block
|
// VK_EXT_inline_uniform_block
|
||||||
|
VkPhysicalDeviceInlineUniformBlockFeaturesEXT inline_uniform_block_temp{};
|
||||||
|
inline_uniform_block_temp.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT;
|
||||||
|
inline_uniform_block_temp.pNext = nullptr;
|
||||||
|
VkPhysicalDeviceFeatures2 iub_features2{};
|
||||||
|
iub_features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
||||||
|
iub_features2.pNext = &inline_uniform_block_temp;
|
||||||
|
physical.GetFeatures2(iub_features2);
|
||||||
|
|
||||||
VkPhysicalDeviceInlineUniformBlockFeaturesEXT inline_uniform_block_features{
|
VkPhysicalDeviceInlineUniformBlockFeaturesEXT inline_uniform_block_features{
|
||||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
|
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
|
||||||
.pNext = first_next,
|
.pNext = first_next,
|
||||||
.inlineUniformBlock = features.inline_uniform_block.inlineUniformBlock ? VK_TRUE : VK_FALSE,
|
.inlineUniformBlock = inline_uniform_block_temp.inlineUniformBlock ? VK_TRUE : VK_FALSE,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (extensions.inline_uniform_block && features.inline_uniform_block.inlineUniformBlock) {
|
if (extensions.inline_uniform_block && inline_uniform_block_temp.inlineUniformBlock) {
|
||||||
first_next = &inline_uniform_block_features;
|
first_next = &inline_uniform_block_features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue