Diligent Engine  v.2.4.g
VulkanTypeConversions.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 Diligent Graphics LLC
3  * Copyright 2015-2019 Egor Yusov
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * In no event and under no legal theory, whether in tort (including negligence),
18  * contract, or otherwise, unless required by applicable law (such as deliberate
19  * and grossly negligent acts) or agreed to in writing, shall any Contributor be
20  * liable for any damages, including any direct, indirect, special, incidental,
21  * or consequential damages of any character arising as a result of this License or
22  * out of the use or inability to use the software (including but not limited to damages
23  * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
24  * all other commercial damages or losses), even if such Contributor has been advised
25  * of the possibility of such damages.
26  */
27 
28 #pragma once
29 
32 
33 #include <array>
34 #include "GraphicsTypes.h"
35 #include "InputLayout.h"
36 
37 namespace Diligent
38 {
39 
40 VkFormat TexFormatToVkFormat(TEXTURE_FORMAT TexFmt);
41 TEXTURE_FORMAT VkFormatToTexFormat(VkFormat VkFmt);
42 
43 VkFormat TypeToVkFormat(VALUE_TYPE ValType, Uint32 NumComponents, Bool bIsNormalized);
44 VkIndexType TypeToVkIndexType(VALUE_TYPE IndexType);
45 
46 VkPipelineRasterizationStateCreateInfo RasterizerStateDesc_To_VkRasterizationStateCI(const struct RasterizerStateDesc& RasterizerDesc);
47 VkPipelineDepthStencilStateCreateInfo DepthStencilStateDesc_To_VkDepthStencilStateCI(const struct DepthStencilStateDesc& DepthStencilDesc);
48 
49 void BlendStateDesc_To_VkBlendStateCI(const struct BlendStateDesc& BSDesc,
50  VkPipelineColorBlendStateCreateInfo& ColorBlendStateCI,
51  std::vector<VkPipelineColorBlendAttachmentState>& ColorBlendAttachments);
52 
53 void InputLayoutDesc_To_VkVertexInputStateCI(const struct InputLayoutDesc& LayoutDesc,
54  VkPipelineVertexInputStateCreateInfo& VertexInputStateCI,
55  std::array<VkVertexInputBindingDescription, MAX_LAYOUT_ELEMENTS>& BindingDescriptions,
56  std::array<VkVertexInputAttributeDescription, MAX_LAYOUT_ELEMENTS>& AttributeDescription);
57 
59  VkPrimitiveTopology& VkPrimTopology,
60  uint32_t& PatchControlPoints);
61 
63 VkFilter FilterTypeToVkFilter(FILTER_TYPE FilterType);
64 VkSamplerMipmapMode FilterTypeToVkMipmapMode(FILTER_TYPE FilterType);
65 VkSamplerAddressMode AddressModeToVkAddressMode(TEXTURE_ADDRESS_MODE AddressMode);
66 VkBorderColor BorderColorToVkBorderColor(const Float32 BorderColor[]);
67 
68 VkPipelineStageFlags ResourceStateFlagsToVkPipelineStageFlags(RESOURCE_STATE StateFlags, VkPipelineStageFlags ShaderStages);
69 VkAccessFlags ResourceStateFlagsToVkAccessFlags(RESOURCE_STATE StateFlags);
71 VkImageLayout ResourceStateToVkImageLayout(RESOURCE_STATE StateFlag, bool IsInsideRenderPass = false);
72 
73 RESOURCE_STATE VkAccessFlagsToResourceStates(VkAccessFlags AccessFlags);
74 RESOURCE_STATE VkImageLayoutToResourceState(VkImageLayout Layout);
75 
76 SURFACE_TRANSFORM VkSurfaceTransformFlagToSurfaceTransform(VkSurfaceTransformFlagBitsKHR vkTransformFlag);
77 VkSurfaceTransformFlagBitsKHR SurfaceTransformToVkSurfaceTransformFlag(SURFACE_TRANSFORM SrfTransform);
78 
80 ATTACHMENT_LOAD_OP VkAttachmentLoadOpToAttachmentLoadOp(VkAttachmentLoadOp VkLoadOp);
81 
83 ATTACHMENT_STORE_OP VkAttachmentStoreOpToAttachmentStoreOp(VkAttachmentStoreOp VkStoreOp);
84 
85 VkPipelineStageFlags PipelineStageFlagsToVkPipelineStageFlags(PIPELINE_STAGE_FLAGS PipelineStageFlags);
86 VkAccessFlags AccessFlagsToVkAccessFlags(ACCESS_FLAGS AccessFlags);
87 
88 
90 VkShaderStageFlags ShaderTypesToVkShaderStageFlags(SHADER_TYPE ShaderTypes);
91 SHADER_TYPE VkShaderStageFlagsToShaderTypes(VkShaderStageFlags StageFlags);
92 
96 VkCopyAccelerationStructureModeKHR CopyASModeToVkCopyAccelerationStructureMode(COPY_AS_MODE Mode);
97 
98 WAVE_FEATURE VkSubgroupFeatureFlagsToWaveFeatures(VkSubgroupFeatureFlags FeatureFlags);
99 
100 } // namespace Diligent
Diligent::TypeToVkIndexType
VkIndexType TypeToVkIndexType(VALUE_TYPE IndexType)
Definition: VulkanTypeConversions.cpp:638
Diligent::ATTACHMENT_STORE_OP
ATTACHMENT_STORE_OP
Render pass attachment store operation Vulkan counterpart: VkAttachmentStoreOp. D3D12 counterpart: D3...
Definition: RenderPass.h:71
Diligent::AccessFlagsToVkAccessFlags
VkAccessFlags AccessFlagsToVkAccessFlags(ACCESS_FLAGS AccessFlags)
Definition: VulkanTypeConversions.cpp:1601
Diligent::COPY_AS_MODE
COPY_AS_MODE
Defines acceleration structure copy mode.
Definition: DeviceContext.h:795
Diligent::WAVE_FEATURE
WAVE_FEATURE
Describes the wave feature types. In Vulkan backend, you should check which features are supported by...
Definition: GraphicsTypes.h:1932
Diligent::SHADER_TYPE
SHADER_TYPE
Describes the shader type.
Definition: GraphicsTypes.h:65
Diligent::TEXTURE_ADDRESS_MODE
TEXTURE_ADDRESS_MODE
Texture address mode.
Definition: GraphicsTypes.h:889
Flags
Uint32 Flags
Definition: DXBCUtils.cpp:71
Diligent::Float32
float Float32
32-bit float
Definition: BasicTypes.h:43
Diligent::FILTER_TYPE
FILTER_TYPE
Filter type.
Definition: GraphicsTypes.h:864
Diligent::VkAttachmentStoreOpToAttachmentStoreOp
ATTACHMENT_STORE_OP VkAttachmentStoreOpToAttachmentStoreOp(VkAttachmentStoreOp VkStoreOp)
Definition: VulkanTypeConversions.cpp:1540
Diligent::PRIMITIVE_TOPOLOGY
PRIMITIVE_TOPOLOGY
Input primitive topology.
Definition: GraphicsTypes.h:989
Diligent::RAYTRACING_INSTANCE_FLAGS
RAYTRACING_INSTANCE_FLAGS
TLAS instance flags that are used in IDeviceContext::BuildTLAS().
Definition: DeviceContext.h:767
Diligent::PIPELINE_STAGE_FLAGS
PIPELINE_STAGE_FLAGS
Pipeline stage flags.
Definition: GraphicsTypes.h:2625
Diligent::ComparisonFuncToVkCompareOp
VkCompareOp ComparisonFuncToVkCompareOp(COMPARISON_FUNCTION CmpFunc)
Definition: VulkanTypeConversions.cpp:725
Diligent::VkFormatToTexFormat
TEXTURE_FORMAT VkFormatToTexFormat(VkFormat VkFmt)
Definition: VulkanTypeConversions.cpp:466
Diligent::VkImageLayoutToResourceState
RESOURCE_STATE VkImageLayoutToResourceState(VkImageLayout Layout)
Definition: VulkanTypeConversions.cpp:1443
Diligent::VkAttachmentLoadOpToAttachmentLoadOp
ATTACHMENT_LOAD_OP VkAttachmentLoadOpToAttachmentLoadOp(VkAttachmentLoadOp VkLoadOp)
Definition: VulkanTypeConversions.cpp:1528
Diligent::PrimitiveTopology_To_VkPrimitiveTopologyAndPatchCPCount
void PrimitiveTopology_To_VkPrimitiveTopologyAndPatchCPCount(PRIMITIVE_TOPOLOGY PrimTopology, VkPrimitiveTopology &VkPrimTopology, uint32_t &PatchControlPoints)
Definition: VulkanTypeConversions.cpp:1018
Diligent::PipelineStageFlagsToVkPipelineStageFlags
VkPipelineStageFlags PipelineStageFlagsToVkPipelineStageFlags(PIPELINE_STAGE_FLAGS PipelineStageFlags)
Definition: VulkanTypeConversions.cpp:1570
Diligent::SURFACE_TRANSFORM
SURFACE_TRANSFORM
The transform applied to the image content prior to presentation.
Definition: GraphicsTypes.h:1315
Diligent::RasterizerStateDesc_To_VkRasterizationStateCI
VkPipelineRasterizationStateCreateInfo RasterizerStateDesc_To_VkRasterizationStateCI(const struct RasterizerStateDesc &RasterizerDesc)
Diligent::InputLayoutDesc
struct InputLayoutDesc InputLayoutDesc
Definition: InputLayout.h:239
Diligent::ShaderTypesToVkShaderStageFlags
VkShaderStageFlags ShaderTypesToVkShaderStageFlags(SHADER_TYPE ShaderTypes)
Definition: VulkanTypeConversions.cpp:1636
Diligent::VkSurfaceTransformFlagToSurfaceTransform
SURFACE_TRANSFORM VkSurfaceTransformFlagToSurfaceTransform(VkSurfaceTransformFlagBitsKHR vkTransformFlag)
Definition: VulkanTypeConversions.cpp:1470
Diligent::TypeToVkFormat
VkFormat TypeToVkFormat(VALUE_TYPE ValType, Uint32 NumComponents, Bool bIsNormalized)
Definition: VulkanTypeConversions.cpp:474
Diligent::CopyASModeToVkCopyAccelerationStructureMode
VkCopyAccelerationStructureModeKHR CopyASModeToVkCopyAccelerationStructureMode(COPY_AS_MODE Mode)
Definition: VulkanTypeConversions.cpp:1748
InputLayout.h
Diligent::VALUE_TYPE
VALUE_TYPE
Value type.
Definition: GraphicsTypes.h:49
Diligent::ATTACHMENT_LOAD_OP
ATTACHMENT_LOAD_OP
Render pass attachment load operation Vulkan counterpart: VkAttachmentLoadOp. D3D12 counterpart: D3D1...
Definition: RenderPass.h:47
Diligent::ResourceStateFlagsToVkAccessFlags
VkAccessFlags ResourceStateFlagsToVkAccessFlags(RESOURCE_STATE StateFlags)
Definition: VulkanTypeConversions.cpp:1279
Diligent::BorderColorToVkBorderColor
VkBorderColor BorderColorToVkBorderColor(const Float32 BorderColor[])
Definition: VulkanTypeConversions.cpp:1140
Diligent::InputLayoutDesc_To_VkVertexInputStateCI
void InputLayoutDesc_To_VkVertexInputStateCI(const struct InputLayoutDesc &LayoutDesc, VkPipelineVertexInputStateCreateInfo &VertexInputStateCI, std::array< VkVertexInputBindingDescription, MAX_LAYOUT_ELEMENTS > &BindingDescriptions, std::array< VkVertexInputAttributeDescription, MAX_LAYOUT_ELEMENTS > &AttributeDescription)
Diligent::DepthStencilStateDesc_To_VkDepthStencilStateCI
VkPipelineDepthStencilStateCreateInfo DepthStencilStateDesc_To_VkDepthStencilStateCI(const struct DepthStencilStateDesc &DepthStencilDesc)
NumComponents
D3D10_SB_OPERAND_NUM_COMPONENTS NumComponents
Definition: DXBCUtils.cpp:519
Diligent::BlendStateDesc
struct BlendStateDesc BlendStateDesc
Definition: BlendState.h:431
Diligent::AttachmentStoreOpToVkAttachmentStoreOp
VkAttachmentStoreOp AttachmentStoreOpToVkAttachmentStoreOp(ATTACHMENT_STORE_OP StoreOp)
Definition: VulkanTypeConversions.cpp:1536
Diligent::Uint32
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
Diligent::Bool
bool Bool
Boolean.
Definition: BasicTypes.h:59
Diligent::RAYTRACING_BUILD_AS_FLAGS
RAYTRACING_BUILD_AS_FLAGS
Defines acceleration structures build flags.
Definition: BottomLevelAS.h:114
Diligent::ACCESS_FLAGS
ACCESS_FLAGS
Access flag.
Definition: GraphicsTypes.h:2721
Diligent::AccelStructStateFlagsToVkAccessFlags
VkAccessFlags AccelStructStateFlagsToVkAccessFlags(RESOURCE_STATE StateFlags)
Definition: VulkanTypeConversions.cpp:1295
Diligent::VkSubgroupFeatureFlagsToWaveFeatures
WAVE_FEATURE VkSubgroupFeatureFlagsToWaveFeatures(VkSubgroupFeatureFlags FeatureFlags)
Definition: VulkanTypeConversions.cpp:1765
Diligent::COMPARISON_FUNCTION
COMPARISON_FUNCTION
Comparison function.
Definition: GraphicsTypes.h:931
Diligent::BuildASFlagsToVkBuildAccelerationStructureFlags
VkBuildAccelerationStructureFlagsKHR BuildASFlagsToVkBuildAccelerationStructureFlags(RAYTRACING_BUILD_AS_FLAGS Flags)
Definition: VulkanTypeConversions.cpp:1680
Diligent::BlendStateDesc_To_VkBlendStateCI
void BlendStateDesc_To_VkBlendStateCI(const struct BlendStateDesc &BSDesc, VkPipelineColorBlendStateCreateInfo &ColorBlendStateCI, std::vector< VkPipelineColorBlendAttachmentState > &ColorBlendAttachments)
Diligent::SurfaceTransformToVkSurfaceTransformFlag
VkSurfaceTransformFlagBitsKHR SurfaceTransformToVkSurfaceTransformFlag(SURFACE_TRANSFORM SrfTransform)
Definition: VulkanTypeConversions.cpp:1493
Diligent::FilterTypeToVkFilter
VkFilter FilterTypeToVkFilter(FILTER_TYPE FilterType)
Definition: VulkanTypeConversions.cpp:1058
Diligent::AddressModeToVkAddressMode
VkSamplerAddressMode AddressModeToVkAddressMode(TEXTURE_ADDRESS_MODE AddressMode)
Definition: VulkanTypeConversions.cpp:1118
Diligent::GeometryFlagsToVkGeometryFlags
VkGeometryFlagsKHR GeometryFlagsToVkGeometryFlags(RAYTRACING_GEOMETRY_FLAGS Flags)
Definition: VulkanTypeConversions.cpp:1704
Diligent::DepthStencilStateDesc
struct DepthStencilStateDesc DepthStencilStateDesc
Definition: DepthStencilState.h:233
Diligent::TEXTURE_FORMAT
TEXTURE_FORMAT
Texture formats.
Definition: GraphicsTypes.h:328
Diligent::TexFormatToVkFormat
VkFormat TexFormatToVkFormat(TEXTURE_FORMAT TexFmt)
Definition: VulkanTypeConversions.cpp:179
Diligent::InstanceFlagsToVkGeometryInstanceFlags
VkGeometryInstanceFlagsKHR InstanceFlagsToVkGeometryInstanceFlags(RAYTRACING_INSTANCE_FLAGS Flags)
Definition: VulkanTypeConversions.cpp:1725
Diligent::ResourceStateToVkImageLayout
VkImageLayout ResourceStateToVkImageLayout(RESOURCE_STATE StateFlag, bool IsInsideRenderPass=false)
Definition: VulkanTypeConversions.cpp:1397
Diligent::ResourceStateFlagsToVkPipelineStageFlags
VkPipelineStageFlags ResourceStateFlagsToVkPipelineStageFlags(RESOURCE_STATE StateFlags, VkPipelineStageFlags ShaderStages)
Definition: VulkanTypeConversions.cpp:1193
GraphicsTypes.h
Diligent::AttachmentLoadOpToVkAttachmentLoadOp
VkAttachmentLoadOp AttachmentLoadOpToVkAttachmentLoadOp(ATTACHMENT_LOAD_OP LoadOp)
Definition: VulkanTypeConversions.cpp:1524
Diligent::ShaderTypeToVkShaderStageFlagBit
VkShaderStageFlagBits ShaderTypeToVkShaderStageFlagBit(SHADER_TYPE ShaderType)
Definition: VulkanTypeConversions.cpp:1608
Diligent::VkShaderStageFlagsToShaderTypes
SHADER_TYPE VkShaderStageFlagsToShaderTypes(VkShaderStageFlags StageFlags)
Definition: VulkanTypeConversions.cpp:1647
Diligent::RESOURCE_STATE
RESOURCE_STATE
Resource usage state.
Definition: GraphicsTypes.h:2814
Diligent::FilterTypeToVkMipmapMode
VkSamplerMipmapMode FilterTypeToVkMipmapMode(FILTER_TYPE FilterType)
Definition: VulkanTypeConversions.cpp:1088
Diligent::RAYTRACING_GEOMETRY_FLAGS
RAYTRACING_GEOMETRY_FLAGS
Defines geometry flags for ray tracing.
Definition: DeviceContext.h:812
Diligent::VkAccessFlagsToResourceStates
RESOURCE_STATE VkAccessFlagsToResourceStates(VkAccessFlags AccessFlags)
Definition: VulkanTypeConversions.cpp:1382
ShaderType
Uint16 ShaderType
Definition: DXBCUtils.cpp:70
Diligent::RasterizerStateDesc
struct RasterizerStateDesc RasterizerStateDesc
Definition: RasterizerState.h:184
Diligent
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37