Files
RenderFramework/Src/RenderFramework/Vulkan/Deprecated/VulkanPhysicalDevice.h
T
2025-09-10 04:09:26 +03:00

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>;