2#define VULKAN_HPP_NO_CONSTRUCTORS
3#include <vulkan/vulkan.hpp>
4#include <vulkan/vulkan_raii.hpp>
9 return static_cast<Bits>(
static_cast<std::underlying_type_t<Bits>
>(
flags));
29 case R32Uint:
return vk::Format::eR32Uint;
30 case R16Uint:
return vk::Format::eR16Uint;
32 case Bc1RgbUnorm:
return vk::Format::eBc1RgbUnormBlock;
33 case Bc1RgbSrgb:
return vk::Format::eBc1RgbSrgbBlock;
34 case Bc1RgbaUnorm:
return vk::Format::eBc1RgbaUnormBlock;
35 case Bc1RgbaSrgb:
return vk::Format::eBc1RgbaSrgbBlock;
36 case Bc2Unorm:
return vk::Format::eBc2UnormBlock;
37 case Bc2Srgb:
return vk::Format::eBc2SrgbBlock;
38 case Bc3Unorm:
return vk::Format::eBc3UnormBlock;
39 case Bc3Srgb:
return vk::Format::eBc3SrgbBlock;
40 case Bc4Unorm:
return vk::Format::eBc4UnormBlock;
41 case Bc4Snorm:
return vk::Format::eBc4SnormBlock;
42 case Bc5Unorm:
return vk::Format::eBc5UnormBlock;
43 case Bc5Snorm:
return vk::Format::eBc5SnormBlock;
44 case Bc6HUfloat:
return vk::Format::eBc6HUfloatBlock;
45 case Bc6HSfloat:
return vk::Format::eBc6HSfloatBlock;
46 case Bc7Unorm:
return vk::Format::eBc7UnormBlock;
47 case Bc7Srgb:
return vk::Format::eBc7SrgbBlock;
50 return vk::Format::eUndefined;
55 vk::BufferUsageFlags
flags{};
68 vk::AccessFlags2
flags{};
94 return vk::ImageLayout::eUndefined;
100 vk::PipelineStageFlags
flags{};
106 if (stage &
MeshShader)
flags |= vk::PipelineStageFlagBits::eMeshShaderEXT;
108 if (stage &
Transfer)
flags |= vk::PipelineStageFlagBits::eTransfer;
111 if (stage &
TopOfPipe)
flags |= vk::PipelineStageFlagBits::eTopOfPipe;
114 if (stage &
Host)
flags |= vk::PipelineStageFlagBits::eHost;
120 vk::PipelineStageFlags2
flags{};
126 if (stage &
MeshShader)
flags |= vk::PipelineStageFlagBits2::eMeshShaderEXT;
127 if (stage &
TaskShader)
flags |= vk::PipelineStageFlagBits2::eTaskShaderEXT;
129 if (stage &
Transfer)
flags |= vk::PipelineStageFlagBits2::eTransfer;
132 if (stage &
TopOfPipe)
flags |= vk::PipelineStageFlagBits2::eTopOfPipe;
135 if (stage &
Host)
flags |= vk::PipelineStageFlagBits2::eHost;
141 vk::ShaderStageFlags
flags{};
142 if (stage ==
All)
return vk::ShaderStageFlagBits::eAll;
143 if (stage &
Vertex)
flags |= vk::ShaderStageFlagBits::eVertex;
144 if (stage &
Fragment)
flags |= vk::ShaderStageFlagBits::eFragment;
145 if (stage &
Compute)
flags |= vk::ShaderStageFlagBits::eCompute;
147 if (stage &
RayAnyHit)
flags |= vk::ShaderStageFlagBits::eAnyHitKHR;
149 if (stage &
RayMiss)
flags |= vk::ShaderStageFlagBits::eMissKHR;
151 if (stage &
Task)
flags |= vk::ShaderStageFlagBits::eTaskEXT;
152 if (stage &
Mesh)
flags |= vk::ShaderStageFlagBits::eMeshEXT;
161 return vk::DescriptorType::eSampler;
163 return vk::DescriptorType::eSampledImage;
165 return vk::DescriptorType::eStorageImage;
167 return vk::DescriptorType::eStorageBuffer;
170 return vk::DescriptorType::eUniformBuffer;
176 case RHIDevicePipelineType::Compute:
return vk::PipelineBindPoint::eCompute;
178 case RHIDevicePipelineType::Graphics:
return vk::PipelineBindPoint::eGraphics;
184 vk::ImageUsageFlags
flags{};
186 if (usage &
DepthStencil)
flags |= vk::ImageUsageFlagBits::eDepthStencilAttachment;
197 case E2:
return vk::SampleCountFlagBits::e2;
198 case E4:
return vk::SampleCountFlagBits::e4;
199 case E8:
return vk::SampleCountFlagBits::e8;
200 case E16:
return vk::SampleCountFlagBits::e16;
203 return vk::SampleCountFlagBits::e1;
209 vk::ImageAspectFlags
flags{};
210 if (aspect &
Color)
flags |= vk::ImageAspectFlagBits::eColor;
211 if (aspect &
Depth)
flags |= vk::ImageAspectFlagBits::eDepth;
212 if (aspect &
Stencil)
flags |= vk::ImageAspectFlagBits::eStencil;
T * Construct(Allocator *resource, Args &&...args)
Convenience placement new with object of type T using a Foundation::Core::Allocator.
Definition Allocator.hpp:149
Low-level Rendering Hardware Interface (RHI) abstractions.
Definition Application.hpp:4
MeshShader
Definition Common.hpp:255
RayTracingShader
Definition Common.hpp:254
vk::AccessFlags2 vkAccessFlagsFromRHIResourceAccess(RHIResourceAccess state)
Definition Common.hpp:66
IndexBuffer
Definition Common.hpp:270
FragmentShader
Definition Common.hpp:252
vk::SampleCountFlagBits vkSampleCountFlagFromRHIMultisampleCount(RHIMultisampleCount count)
Definition Common.hpp:194
RHITextureLayout
Definition Common.hpp:144
Task
Definition Common.hpp:214
Depth
Definition Common.hpp:291
vk::ImageAspectFlags vkImageAspectFlagFromRHITextureAspect(RHITextureAspectFlag aspect)
Definition Common.hpp:207
vk::PipelineBindPoint vkPipelineBindPointFromRHIDevicePipelineType(RHIDevicePipelineType type)
Definition Common.hpp:174
UniformRead
Definition Common.hpp:242
VertexShader
Definition Common.hpp:251
RayGeneration
Definition Common.hpp:204
vk::DescriptorType vkDescriptorTypeFromRHIDescriptorType(RHIDescriptorType type)
Definition Common.hpp:156
TopOfPipe
Definition Common.hpp:264
RenderTargetOutput
Definition Common.hpp:257
All
Definition Common.hpp:217
Compute
Definition Common.hpp:124
Host
Definition Common.hpp:262
RenderTargetRead
Definition Common.hpp:235
ComputeShader
Definition Common.hpp:253
vk::ImageLayout vkImageLayoutFromRHITextureLayout(RHITextureLayout layout)
Definition Common.hpp:83
Color
Definition Common.hpp:290
EarlyFragmentTests
Definition Common.hpp:259
TransferRead
Definition Common.hpp:239
TransferSource
Definition Common.hpp:276
vk::Format vkFormatFromRHIFormat(RHIResourceFormat format)
Definition Common.hpp:11
vk::ImageUsageFlags vkImageUsageFlagsFromRHITextureUsage(RHITextureUsage usage)
Definition Common.hpp:182
UniformBuffer
Definition Common.hpp:272
ShaderRead
Definition Common.hpp:241
TaskShader
Definition Common.hpp:256
VertexBuffer
Definition Common.hpp:269
HostRead
Definition Common.hpp:244
StorageBuffer
Definition Common.hpp:274
vk::ShaderStageFlags vkShaderStageFlagsFromRHIShaderStage(RHIShaderStage stage)
Definition Common.hpp:139
DepthStencil
Definition Common.hpp:282
vk::PipelineStageFlags vkPipelineStageFlagsFromRHIPipelineStage(RHIPipelineStage stage)
Definition Common.hpp:98
Transfer
Definition Common.hpp:125
RayAnyHit
Definition Common.hpp:206
RHIDescriptorType
Definition Common.hpp:173
LateFragmentTests
Definition Common.hpp:260
RayClosestHit
Definition Common.hpp:208
HostWrite
Definition Common.hpp:243
RHIResourceFormat
Definition Common.hpp:20
@ R16G16B16A16SignedFloat
@ R32G32B32A32SignedFloat
BottomOfPipe
Definition Common.hpp:265
RenderTargetWrite
Definition Common.hpp:234
DepthStencilWrite
Definition Common.hpp:236
Mesh
Definition Common.hpp:216
Stencil
Definition Common.hpp:292
TransferDestination
Definition Common.hpp:277
vk::PipelineStageFlags2 vkPipelineStageFlags2FromRHIPipelineStage(RHIPipelineStage stage)
Definition Common.hpp:118
Bits vkFlagsToBits(vk::Flags< Bits > flags)
Definition Common.hpp:8
ShaderWrite
Definition Common.hpp:240
TransferWrite
Definition Common.hpp:238
RayMiss
Definition Common.hpp:210
RHIMultisampleCount
Definition Common.hpp:189
DepthStencilRead
Definition Common.hpp:237
SampledImage
Definition Common.hpp:283
Fragment
Definition Common.hpp:200
DrawIndirect
Definition Common.hpp:250
IndirectBuffer
Definition Common.hpp:275
RenderTarget
Definition Common.hpp:281
StorageImage
Definition Common.hpp:284
Vertex
Definition Common.hpp:198
AllGraphics
Definition Common.hpp:263
RayIntersection
Definition Common.hpp:212
vk::BufferUsageFlags vkBufferUsageFromRHIBufferUsage(RHIBufferUsage usage)
Definition Common.hpp:53