]> O.S.I.I.S - jp/vkvg.git/commitdiff
port fix to vkengine
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sun, 20 Feb 2022 05:12:41 +0000 (06:12 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 21 Feb 2022 14:39:37 +0000 (15:39 +0100)
include/vkvg.h
tests/common/vkengine.c
tests/common/vkengine.h

index d0b8deffbea78141182b046cfdbb856030472183..a16b67448885444a2b84db9f7c3a79077e82287e 100644 (file)
@@ -67,6 +67,12 @@ extern "C" {
 #include <math.h>
 #include <stdbool.h>
 
+#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))
index 240726148df6919ba39ac445b0bc0e46bd90fc6a..6f12e944d58a3bfd7b1785cfe4c2d218b65d853c 100644 (file)
@@ -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);
 
index 93e31a147e082240ab2edfe89efdda6e1c068193..3ca0c8825ba8bbc051de6438e54ec082813463e8 100644 (file)
 
 #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