From: Jean-Philippe Bruyère Date: Sun, 20 Feb 2022 05:12:41 +0000 (+0100) Subject: port fix to vkengine X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=7013f23a4039de1c17cf102dcc8f2e5c502fddd6;p=jp%2Fvkvg.git port fix to vkengine --- diff --git a/include/vkvg.h b/include/vkvg.h index d0b8def..a16b674 100644 --- a/include/vkvg.h +++ b/include/vkvg.h @@ -67,6 +67,12 @@ extern "C" { #include #include +#ifdef VK_VERSION_1_2 + #ifndef VKVG_VK_SCALAR_BLOCK_SUPPORTED + #define VKVG_VK_SCALAR_BLOCK_SUPPORTED 1 + #endif +#endif + #ifndef vkvg_public #ifdef VKVG_SHARED_BUILD #if (defined(_WIN32) || defined(_WIN64)) diff --git a/tests/common/vkengine.c b/tests/common/vkengine.c index 2407261..6f12e94 100644 --- a/tests/common/vkengine.c +++ b/tests/common/vkengine.c @@ -216,24 +216,41 @@ vk_engine_t* vkengine_create (VkPhysicalDeviceType preferedGPU, VkPresentModeKHR TRY_LOAD_DEVICE_EXT (VK_EXT_blend_operation_advanced) TRY_LOAD_DEVICE_EXT (VK_KHR_portability_subset) TRY_LOAD_DEVICE_EXT (VK_KHR_relaxed_block_layout) - TRY_LOAD_DEVICE_EXT (VK_EXT_scalar_block_layout) VkPhysicalDeviceFeatures enabledFeatures = { .fillModeNonSolid = true, //.sampleRateShading = true }; - VkPhysicalDeviceVulkan12Features enabledFeatures12 = { - .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, - .scalarBlockLayout = true - }; VkDeviceCreateInfo device_info = { .sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, .queueCreateInfoCount = qCount, .pQueueCreateInfos = (VkDeviceQueueCreateInfo*)&pQueueInfos, .enabledExtensionCount = enabledExtsCount, .ppEnabledExtensionNames = enabledExts, - .pEnabledFeatures = &enabledFeatures, - .pNext = &enabledFeatures12}; + .pEnabledFeatures = &enabledFeatures}; +#ifdef VKVG_VK_SCALAR_BLOCK_SUPPORTED + #ifdef VK_VERSION_1_2 + VkPhysicalDeviceVulkan12Features enabledFeatures12 = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, + .scalarBlockLayout = VK_TRUE + }; + device_info.pNext = &enabledFeatures12; + #else + if (!vkh_phyinfo_try_get_extension_properties(pi, "VK_EXT_scalar_block_layout", NULL)) { + LOG(VKVG_LOG_ERR, "CREATE Device failed: VK_EXT_scalar_block_layout unsupported\n"); + dev->status = VKVG_STATUS_DEVICE_ERROR; + vkh_app_free_phyinfos (phyCount, phys); + vkh_app_destroy (app); + return dev; + } + enabledExts[device_info.enabledExtensionCount++] = "VK_EXT_scalar_block_layout"; + VkPhysicalDeviceScalarBlockLayoutFeaturesEXT scalarBlockFeat = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, + .scalarBlockLayout = VK_TRUE + }; + device_info.pNext = &scalarBlockFeat; + #endif +#endif e->dev = vkh_device_create(e->app, pi, &device_info); diff --git a/tests/common/vkengine.h b/tests/common/vkengine.h index 93e31a1..3ca0c88 100644 --- a/tests/common/vkengine.h +++ b/tests/common/vkengine.h @@ -34,6 +34,11 @@ #include "vkh.h" +#ifdef VK_VERSION_1_2 + #ifndef VKVG_VK_SCALAR_BLOCK_SUPPORTED + #define VKVG_VK_SCALAR_BLOCK_SUPPORTED 1 + #endif +#endif #define FENCE_TIMEOUT 100000000