|
|
@@ -650,4 +650,87 @@ void Device::UpdateDescriptorSets(Span<VkWriteDescriptorSet> writes,
|
|
|
dld->vkUpdateDescriptorSets(handle, writes.size(), writes.data(), copies.size(), copies.data());
|
|
|
}
|
|
|
|
|
|
+VkPhysicalDeviceProperties PhysicalDevice::GetProperties() const noexcept {
|
|
|
+ VkPhysicalDeviceProperties properties;
|
|
|
+ dld->vkGetPhysicalDeviceProperties(physical_device, &properties);
|
|
|
+ return properties;
|
|
|
+}
|
|
|
+
|
|
|
+void PhysicalDevice::GetProperties2KHR(VkPhysicalDeviceProperties2KHR& properties) const noexcept {
|
|
|
+ dld->vkGetPhysicalDeviceProperties2KHR(physical_device, &properties);
|
|
|
+}
|
|
|
+
|
|
|
+VkPhysicalDeviceFeatures PhysicalDevice::GetFeatures() const noexcept {
|
|
|
+ VkPhysicalDeviceFeatures2KHR features2;
|
|
|
+ features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
|
|
+ features2.pNext = nullptr;
|
|
|
+ dld->vkGetPhysicalDeviceFeatures2KHR(physical_device, &features2);
|
|
|
+ return features2.features;
|
|
|
+}
|
|
|
+
|
|
|
+void PhysicalDevice::GetFeatures2KHR(VkPhysicalDeviceFeatures2KHR& features) const noexcept {
|
|
|
+ dld->vkGetPhysicalDeviceFeatures2KHR(physical_device, &features);
|
|
|
+}
|
|
|
+
|
|
|
+VkFormatProperties PhysicalDevice::GetFormatProperties(VkFormat format) const noexcept {
|
|
|
+ VkFormatProperties properties;
|
|
|
+ dld->vkGetPhysicalDeviceFormatProperties(physical_device, format, &properties);
|
|
|
+ return properties;
|
|
|
+}
|
|
|
+
|
|
|
+std::vector<VkExtensionProperties> PhysicalDevice::EnumerateDeviceExtensionProperties() const {
|
|
|
+ u32 num;
|
|
|
+ dld->vkEnumerateDeviceExtensionProperties(physical_device, nullptr, &num, nullptr);
|
|
|
+ std::vector<VkExtensionProperties> properties(num);
|
|
|
+ dld->vkEnumerateDeviceExtensionProperties(physical_device, nullptr, &num, properties.data());
|
|
|
+ return properties;
|
|
|
+}
|
|
|
+
|
|
|
+std::vector<VkQueueFamilyProperties> PhysicalDevice::GetQueueFamilyProperties() const {
|
|
|
+ u32 num;
|
|
|
+ dld->vkGetPhysicalDeviceQueueFamilyProperties(physical_device, &num, nullptr);
|
|
|
+ std::vector<VkQueueFamilyProperties> properties(num);
|
|
|
+ dld->vkGetPhysicalDeviceQueueFamilyProperties(physical_device, &num, properties.data());
|
|
|
+ return properties;
|
|
|
+}
|
|
|
+
|
|
|
+bool PhysicalDevice::GetSurfaceSupportKHR(u32 queue_family_index, VkSurfaceKHR surface) const {
|
|
|
+ VkBool32 supported;
|
|
|
+ Check(dld->vkGetPhysicalDeviceSurfaceSupportKHR(physical_device, queue_family_index, surface,
|
|
|
+ &supported));
|
|
|
+ return supported == VK_TRUE;
|
|
|
+}
|
|
|
+
|
|
|
+VkSurfaceCapabilitiesKHR PhysicalDevice::GetSurfaceCapabilitiesKHR(VkSurfaceKHR surface) const
|
|
|
+ noexcept {
|
|
|
+ VkSurfaceCapabilitiesKHR capabilities;
|
|
|
+ Check(dld->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physical_device, surface, &capabilities));
|
|
|
+ return capabilities;
|
|
|
+}
|
|
|
+
|
|
|
+std::vector<VkSurfaceFormatKHR> PhysicalDevice::GetSurfaceFormatsKHR(VkSurfaceKHR surface) const {
|
|
|
+ u32 num;
|
|
|
+ Check(dld->vkGetPhysicalDeviceSurfaceFormatsKHR(physical_device, surface, &num, nullptr));
|
|
|
+ std::vector<VkSurfaceFormatKHR> formats(num);
|
|
|
+ Check(
|
|
|
+ dld->vkGetPhysicalDeviceSurfaceFormatsKHR(physical_device, surface, &num, formats.data()));
|
|
|
+ return formats;
|
|
|
+}
|
|
|
+
|
|
|
+std::vector<VkPresentModeKHR> PhysicalDevice::GetSurfacePresentModesKHR(
|
|
|
+ VkSurfaceKHR surface) const {
|
|
|
+ u32 num;
|
|
|
+ Check(dld->vkGetPhysicalDeviceSurfacePresentModesKHR(physical_device, surface, &num, nullptr));
|
|
|
+ std::vector<VkPresentModeKHR> modes(num);
|
|
|
+ Check(dld->vkGetPhysicalDeviceSurfacePresentModesKHR(physical_device, surface, &num,
|
|
|
+ modes.data()));
|
|
|
+ return modes;
|
|
|
+}
|
|
|
+
|
|
|
+VkPhysicalDeviceMemoryProperties PhysicalDevice::GetMemoryProperties() const noexcept {
|
|
|
+ VkPhysicalDeviceMemoryProperties properties;
|
|
|
+ dld->vkGetPhysicalDeviceMemoryProperties(physical_device, &properties);
|
|
|
+ return properties;
|
|
|
+}
|
|
|
+
|
|
|
} // namespace Vulkan::vk
|