mirror of
https://github.com/charles-lunarg/vk-bootstrap.git
synced 2024-11-25 16:24:35 +00:00
Fix crashing when calling GetPhysDevFeaturesKHR
vk-bootstrap would attempt to call vkGetPhysDevFeaturesKHR without enabling the appropriate extension first.
This commit is contained in:
parent
142986cdb7
commit
bd6a2e4311
@ -620,7 +620,7 @@ detail::Result<Instance> InstanceBuilder::build() const {
|
|||||||
bool supports_properties2_ext = detail::check_extension_supported(
|
bool supports_properties2_ext = detail::check_extension_supported(
|
||||||
system.available_extensions, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
system.available_extensions, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
||||||
|
|
||||||
if (supports_properties2_ext && api_version < VK_API_VERSION_1_1) {
|
if (supports_properties2_ext) {
|
||||||
extensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
extensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1041,20 +1041,23 @@ PhysicalDeviceSelector::PhysicalDeviceDesc PhysicalDeviceSelector::populate_devi
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(VK_API_VERSION_1_1)
|
#if defined(VK_API_VERSION_1_1)
|
||||||
VkPhysicalDeviceFeatures2 local_features{};
|
|
||||||
local_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
|
||||||
local_features.pNext = &fill_chain.front();
|
|
||||||
if (instance_info.version >= VK_API_VERSION_1_1 && desc.device_properties.apiVersion >= VK_API_VERSION_1_1) {
|
if (instance_info.version >= VK_API_VERSION_1_1 && desc.device_properties.apiVersion >= VK_API_VERSION_1_1) {
|
||||||
|
VkPhysicalDeviceFeatures2 local_features{};
|
||||||
|
local_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
||||||
|
local_features.pNext = &fill_chain.front();
|
||||||
detail::vulkan_functions().fp_vkGetPhysicalDeviceFeatures2(phys_device, &local_features);
|
detail::vulkan_functions().fp_vkGetPhysicalDeviceFeatures2(phys_device, &local_features);
|
||||||
} else if (instance_info.supports_properties2_ext) {
|
} else if (instance_info.supports_properties2_ext) {
|
||||||
detail::vulkan_functions().fp_vkGetPhysicalDeviceFeatures2KHR(phys_device, &local_features);
|
VkPhysicalDeviceFeatures2KHR local_features_khr{};
|
||||||
|
local_features_khr.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
||||||
|
local_features_khr.pNext = &fill_chain.front();
|
||||||
|
detail::vulkan_functions().fp_vkGetPhysicalDeviceFeatures2KHR(phys_device, &local_features_khr);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
VkPhysicalDeviceFeatures2KHR local_features{};
|
VkPhysicalDeviceFeatures2KHR local_features_khr{};
|
||||||
local_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
local_features_khr.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
||||||
local_features.pNext = &fill_chain.front();
|
local_features_khr.pNext = &fill_chain.front();
|
||||||
if (instance_info.supports_properties2_ext) {
|
if (instance_info.supports_properties2_ext) {
|
||||||
detail::vulkan_functions().fp_vkGetPhysicalDeviceFeatures2KHR(phys_device, &local_features);
|
detail::vulkan_functions().fp_vkGetPhysicalDeviceFeatures2KHR(phys_device, &local_features_khr);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
desc.extended_features_chain = fill_chain;
|
desc.extended_features_chain = fill_chain;
|
||||||
|
@ -563,7 +563,7 @@ TEST_CASE("Querying Required Extension Features in 1.1", "[VkBootstrap.version]"
|
|||||||
TEST_CASE("Querying Vulkan 1.1 and 1.2 features", "[VkBootstrap.version]") {
|
TEST_CASE("Querying Vulkan 1.1 and 1.2 features", "[VkBootstrap.version]") {
|
||||||
GIVEN("A working instance") {
|
GIVEN("A working instance") {
|
||||||
vkb::InstanceBuilder builder;
|
vkb::InstanceBuilder builder;
|
||||||
auto instance = get_headless_instance();
|
auto instance = get_headless_instance(2); // make sure we use 1.2
|
||||||
// Requires a device that supports multiview and bufferDeviceAddress
|
// Requires a device that supports multiview and bufferDeviceAddress
|
||||||
{
|
{
|
||||||
VkPhysicalDeviceVulkan11Features features_11{};
|
VkPhysicalDeviceVulkan11Features features_11{};
|
||||||
|
Loading…
Reference in New Issue
Block a user