zengine/engine/modules/render/vulkan/include/vkn/wrapper/device.h
2024-10-30 15:15:25 +08:00

33 lines
785 B
C++

#pragma once
#include "vkn/type.h"
namespace vkn {
class DeviceCreator;
class Queue;
class Device {
friend class DeviceCreator;
protected:
VkDevice mPtr{ NULL };
VkPhysicalDevice mPhysical{ NULL };
table<Name, Queue*> mQueueMap;
pmr::vector<VkFence> mFencePool;
std::mutex mFenceMutex;
public:
VkDevice& Ptr() {
return mPtr;
}
VkPhysicalDevice GetPhysical() {
return mPhysical;
}
public:
Device(DeviceCreator& Creator);
~Device();
VkFence CreateFence(VkFenceCreateFlags flags);
Queue* GetQueue(Name name);
VkFence PopFence();
void PushWaitFence(VkFence fence);
VkSemaphore CreateSemaphore();
VkShaderModule CreateShaderModule(const pmr::vector<char>& code);
VkShaderModule CreateShaderModule(const pmr::vector<uint32_t>& code);
};
};