Program Listing for File VkTypeMapping.h

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

#pragma once

#include <vulkan/vulkan_core.h>
#include <optional>
#include "Generic/GenericTypes.h"
#include "Core/RawStorageFormat.h"

namespace Azura {
namespace Vulkan {
namespace Impl {

#define CREATE_MAPPER_H(FROM_FORMAT, TO_FORMAT) std::optional<TO_FORMAT> To##TO_FORMAT(FROM_FORMAT inputFormat)

} // namespace Impl

// TODO(vasumahesh1): Enable enum mappings when all mappings are complete to prevent -Wswitch issues

CREATE_MAPPER_H(RawStorageFormat, VkFormat);
// CREATE_MAPPER_H(VkFormat, RawStorageFormat);

CREATE_MAPPER_H(RawStorageFormat, VkIndexType);
// CREATE_MAPPER_H(VkIndexType, RawStorageFormat);

CREATE_MAPPER_H(ColorSpace, VkColorSpaceKHR);
// CREATE_MAPPER_H(VkColorSpaceKHR, ColorSpace);

CREATE_MAPPER_H(PresentModes, VkPresentModeKHR);
// CREATE_MAPPER_H(VkPresentModeKHR, PresentModes);

CREATE_MAPPER_H(ShaderStage, VkShaderStageFlagBits);
// CREATE_MAPPER_H(VkShaderStageFlagBits, ShaderStage);

CREATE_MAPPER_H(PrimitiveTopology, VkPrimitiveTopology);
// CREATE_MAPPER_H(VkPrimitiveTopology, PrimitiveTopology);

CREATE_MAPPER_H(CullMode, VkCullModeFlags);
// CREATE_MAPPER_H(VkCullModeFlags, CullMode);

CREATE_MAPPER_H(FrontFace, VkFrontFace);
// CREATE_MAPPER_H(VkFrontFace, FrontFace);

CREATE_MAPPER_H(BufferUsageRate, VkVertexInputRate);

CREATE_MAPPER_H(ImageType, VkImageType);

CREATE_MAPPER_H(ImageViewType, VkImageViewType);
// CREATE_MAPPER_H(VkImageType, ImageType);

CREATE_MAPPER_H(BlendFactor, VkBlendFactor);
// CREATE_MAPPER_H(VkBlendFactor, BlendFactor);

CREATE_MAPPER_H(BlendOp, VkBlendOp);
// CREATE_MAPPER_H(VkBlendOp, BlendOp);

VkShaderStageFlagBits GetCombinedShaderStageFlag(ShaderStage stage);

} // namespace Vulkan
} // namespace Azura