32 lines
1.0 KiB
C++
32 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <vulkan/vulkan.h>
|
|
#include <vector>
|
|
#include "VulkanQueueFamilyProperties.h"
|
|
#include "VulkanCommon.h"
|
|
#include "IntrusivePtr.h"
|
|
#include "VulkanMemoryProperties.h"
|
|
#include "RefCountedObject.h"
|
|
|
|
class VulkanInstance;
|
|
|
|
class VulkanPhysicalDevice : public RefCountedObject {
|
|
public:
|
|
VulkanPhysicalDevice(const IntrusivePtr<VulkanInstance>& instance, VkPhysicalDevice device);
|
|
VkPhysicalDeviceProperties getProperties() const;
|
|
VkPhysicalDeviceFeatures getFeatures() const;
|
|
VulkanMemoryProperties getMemoryProperties();
|
|
|
|
|
|
std::vector<VulkanQueueFamilyProperties> getQueueFamilyProperties() const;
|
|
std::vector<VkExtensionProperties> getExtensions(const char* layerName = nullptr) const;
|
|
uint32_t getQueueFamiliesCount() const;
|
|
VkPhysicalDevice getDevice() const;
|
|
IntrusivePtr<VulkanInstance> getInstance() const;
|
|
|
|
bool getPresentationSupport(std::uint32_t queueFamilyIndex);
|
|
private:
|
|
IntrusivePtr<VulkanInstance> _instance;
|
|
VkPhysicalDevice _device;
|
|
};
|
|
using PVulkanPhysicalDevice = IntrusivePtr<VulkanPhysicalDevice>; |