Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions src/Manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ Manager::Manager()

Manager::Manager(uint32_t physicalDeviceIndex,
const std::vector<uint32_t>& familyQueueIndices,
const std::vector<std::string>& desiredExtensions)
const std::vector<std::string>& desiredExtensions,
const void* desiredFeaturesChain)
{
this->mManageResources = true;

Expand All @@ -61,8 +62,10 @@ Manager::Manager(uint32_t physicalDeviceIndex,
#endif

this->createInstance();
this->createDevice(
familyQueueIndices, physicalDeviceIndex, desiredExtensions);
this->createDevice(familyQueueIndices,
physicalDeviceIndex,
desiredExtensions,
desiredFeaturesChain);
}

Manager::Manager(std::shared_ptr<vk::Instance> instance,
Expand Down Expand Up @@ -328,7 +331,8 @@ Manager::clear()
void
Manager::createDevice(const std::vector<uint32_t>& familyQueueIndices,
uint32_t physicalDeviceIndex,
const std::vector<std::string>& desiredExtensions)
const std::vector<std::string>& desiredExtensions,
const void* desiredFeaturesChain)
{

KP_LOG_DEBUG("Kompute Manager creating Device");
Expand Down Expand Up @@ -470,6 +474,8 @@ Manager::createDevice(const std::vector<uint32_t>& familyQueueIndices,
validExtensions.size(),
validExtensions.data());

deviceCreateInfo.pNext = desiredFeaturesChain;

this->mDevice = std::make_shared<vk::Device>();
physicalDevice.createDevice(
&deviceCreateInfo, nullptr, this->mDevice.get());
Expand Down
9 changes: 7 additions & 2 deletions src/include/kompute/Manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,14 @@ class Manager
* explicit allocation
* @param desiredExtensions The desired extensions to load from
* physicalDevice
* @param desiredFeaturesChain (Optional) Caller-owned pNext chain
* forwarded to VkDeviceCreateInfo::pNext (e.g. a VkPhysicalDeviceFeatures2
* head enabling VK_EXT_shader_atomic_float).
*/
Manager(uint32_t physicalDeviceIndex,
const std::vector<uint32_t>& familyQueueIndices = {},
const std::vector<std::string>& desiredExtensions = {});
const std::vector<std::string>& desiredExtensions = {},
const void* desiredFeaturesChain = nullptr);

/**
* Manager constructor which allows your own vulkan application to integrate
Expand Down Expand Up @@ -561,7 +565,8 @@ class Manager
void createInstance();
void createDevice(const std::vector<uint32_t>& familyQueueIndices = {},
uint32_t hysicalDeviceIndex = 0,
const std::vector<std::string>& desiredExtensions = {});
const std::vector<std::string>& desiredExtensions = {},
const void* desiredFeaturesChain = nullptr);
};

} // End namespace kp