Skip to content

Commit 606307c

Browse files
committed
feat: add option to specify custom device and instance layer structs
1 parent da19039 commit 606307c

4 files changed

Lines changed: 9 additions & 2 deletions

File tree

include/misc/device_create_info.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ namespace Anvil
244244
return m_should_enable_shader_module_cache;
245245
}
246246

247+
const void *pNext = nullptr;
248+
247249
private:
248250
/* Private type definitions */
249251
typedef struct QueueProperties

include/misc/instance_create_info.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ namespace Anvil
178178
m_is_mt_safe = in_is_mt_safe;
179179
}
180180

181+
const void *pNext = nullptr;
182+
181183
private:
182184

183185
/* Private functions */

src/wrappers/device.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ void Anvil::BaseDevice::create_device(const std::vector<const char*>& in_extensi
125125
create_info.enabledExtensionCount = static_cast<uint32_t>(in_extensions.size() );
126126
create_info.enabledLayerCount = static_cast<uint32_t>(in_layers.size () );
127127
create_info.flags = 0;
128-
create_info.pEnabledFeatures = nullptr; /* chained */
129128
create_info.pNext = nullptr;
129+
create_info.pEnabledFeatures = nullptr; /* chained */
130130
create_info.ppEnabledExtensionNames = (in_extensions.size() > 0) ? &in_extensions[0] : nullptr;
131131
create_info.ppEnabledLayerNames = (in_layers.size () > 0) ? &in_layers [0] : nullptr;
132132
create_info.pQueueCreateInfos = nullptr; /* chained later */
@@ -307,6 +307,8 @@ void Anvil::BaseDevice::create_device(const std::vector<const char*>& in_extensi
307307
{
308308
auto struct_chain_ptr = struct_chainer.create_chain();
309309

310+
struct_chain_ptr->get_root_struct()->pNext = m_create_info_ptr->pNext;
311+
310312
result = Anvil::Vulkan::vkCreateDevice(physical_device_ptrs.at(0)->get_physical_device(),
311313
struct_chain_ptr->get_root_struct(),
312314
nullptr, /* pAllocator */

src/wrappers/instance.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,8 @@ bool Anvil::Instance::init()
683683
app_info.pNext = nullptr;
684684
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
685685

686-
const VkLayerSettingsCreateInfoEXT layer_settings_create_info {VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, nullptr, layerSettings.size(), layerSettings.data()};
686+
VkLayerSettingsCreateInfoEXT layer_settings_create_info {VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, nullptr, layerSettings.size(), layerSettings.data()};
687+
layer_settings_create_info.pNext = m_create_info_ptr->pNext;
687688

688689
create_info.enabledExtensionCount = static_cast<uint32_t>(enabled_extensions_raw.size() );
689690
create_info.enabledLayerCount = static_cast<uint32_t>(enabled_layers.size () );

0 commit comments

Comments
 (0)