33 lines
		
	
	
		
			785 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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);
 | 
						|
	};
 | 
						|
}; |