Program Listing for File VkTypes.h

Return to documentation for file (Source\Azura\RenderSystem\Inc\Vulkan\VkTypes.h)

#pragma once
#include <vulkan/vulkan_core.h>
#include <array>
#include <vector>
#include "Containers/Vector.h"
#include "Types.h"
#include "VkScopedImage.h"

namespace Azura {
namespace Vulkan {
struct VkQueueIndices {
  int m_graphicsFamily{-1};
  int m_presentFamily{-1};

  // Special Transfer Queue for copying buffer data from
  // GPU (Host Accessible) to a GPU Optimized location that
  // may or may not be accessible by the host.
  int m_transferFamily{-1};

  bool m_isTransferQueueRequired;

  bool IsComplete() const;

  std::array<U32, 2> GetIndicesArray() const;
  U32 GetActiveSize() const;
};

struct SwapChainDeviceSupport {
  VkSurfaceCapabilitiesKHR m_capabilities{};
  Containers::Vector<VkSurfaceFormatKHR> m_formats;
  Containers::Vector<VkPresentModeKHR> m_presentModes;

  explicit SwapChainDeviceSupport(Memory::Allocator& allocator);
  bool IsSupported() const;
};
}  // namespace Vulkan
}  // namespace Azura