From d669e5e29f28a26e93ab204bc6223b9542388ee6 Mon Sep 17 00:00:00 2001
From: Lava Block <the@lava-block.com>
Date: Mon, 17 Feb 2020 22:00:24 +0100
Subject: [PATCH] add features and next ptr to device create_param #7

---
 ext/imgui               | 2 +-
 ext/tinyobjloader       | 2 +-
 liblava/base/device.cpp | 7 +++++--
 liblava/base/device.hpp | 4 ++++
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/ext/imgui b/ext/imgui
index f339b24b..8836975d 160000
--- a/ext/imgui
+++ b/ext/imgui
@@ -1 +1 @@
-Subproject commit f339b24b3a0b6270c5e1a70df66e39b87d1ccdc6
+Subproject commit 8836975dcfc770731932ebec3bbb69579fb29071
diff --git a/ext/tinyobjloader b/ext/tinyobjloader
index 3025ccca..2636244e 160000
--- a/ext/tinyobjloader
+++ b/ext/tinyobjloader
@@ -1 +1 @@
-Subproject commit 3025cccaab135e4e426b2fe222792f697542e0d4
+Subproject commit 2636244e73fa424bb68da6c0ae38f22d15d2f7c6
diff --git a/liblava/base/device.cpp b/liblava/base/device.cpp
index 206969ec..2739a67d 100644
--- a/liblava/base/device.cpp
+++ b/liblava/base/device.cpp
@@ -35,13 +35,14 @@ bool device::create(create_param::ref param) {
     VkDeviceCreateInfo create_info
     {
         .sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
+        .pNext = param.next,
         .queueCreateInfoCount = to_ui32(queue_create_info_list.size()),
         .pQueueCreateInfos = queue_create_info_list.data(),
         .enabledLayerCount = 0,
         .ppEnabledLayerNames = nullptr,
         .enabledExtensionCount = to_ui32(param.extensions.size()),
         .ppEnabledExtensionNames = param.extensions.data(),
-        .pEnabledFeatures = &physical_device->get_features(),
+        .pEnabledFeatures = &param.features,
     };
 
     if (failed(vkCreateDevice(physical_device->get(), &create_info, memory::alloc(), &vk_device))) {
@@ -50,6 +51,8 @@ bool device::create(create_param::ref param) {
         return false;
     }
 
+    features = param.features;
+
     load_table();
 
     graphics_queue_list.clear();
@@ -145,7 +148,7 @@ VkPhysicalDevice device::get_vk_physical_device() const {
     return physical_device->get();
 }
 
-VkPhysicalDeviceFeatures const& device::get_features() const { return physical_device->get_features(); }
+VkPhysicalDeviceFeatures const& device::get_features() const { return features; }
 
 VkPhysicalDeviceProperties const& device::get_properties() const { return physical_device->get_properties(); }
 
diff --git a/liblava/base/device.hpp b/liblava/base/device.hpp
index 54bfb96c..bb302832 100644
--- a/liblava/base/device.hpp
+++ b/liblava/base/device.hpp
@@ -44,6 +44,8 @@ struct device : device_table {
         queue_info::list queue_info_list;
 
         names extensions;
+        VkPhysicalDeviceFeatures features{};
+        void const* next = nullptr; // pNext
 
         void set_default_queues() {
 
@@ -115,6 +117,8 @@ private:
     device::queue::list compute_queue_list;
     device::queue::list transfer_queue_list;
 
+    VkPhysicalDeviceFeatures features;
+
     allocator::ptr mem_allocator;
 };
 
-- 
GitLab