统一色彩格式描述,并增加输出校验示例
This commit is contained in:
parent
2b24a102dc
commit
1668bc385d
@ -0,0 +1,26 @@
|
||||
#include<hgl/graph/vulkan/VK.h>
|
||||
#include<iostream>
|
||||
|
||||
VK_NAMESPACE_USING;
|
||||
|
||||
int main(int,char **)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
if(!CheckStrideBytesByFormat())
|
||||
{
|
||||
std::cerr<<"check stride bytes by format failed."<<std::endl;
|
||||
return(1);
|
||||
}
|
||||
#endif//_DEBUG
|
||||
|
||||
for(uint32_t i=VK_FORMAT_BEGIN_RANGE;i<=VK_FORMAT_END_RANGE;i++)
|
||||
{
|
||||
const char * name =GetColorFormatName((VkFormat)i);
|
||||
const uint32_t bytes =GetStrideByFormat((VkFormat)i);
|
||||
|
||||
if(name)
|
||||
std::cout<<"Format["<<i<<"]["<<name<<"] pixel is "<<bytes<<" bytes"<<std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@ -8,7 +8,10 @@
|
||||
#include<hgl/graph/vulkan/VKFormat.h>
|
||||
#include<hgl/graph/vulkan/VKPrimivate.h>
|
||||
|
||||
#define VK_NAMESPACE hgl::graph::vulkan
|
||||
#define VK_NAMESPACE hgl::graph::vulkan
|
||||
|
||||
#define VK_NAMESPACE_USING using namespace VK_NAMESPACE;
|
||||
|
||||
#define VK_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace vulkan{
|
||||
#define VK_NAMESPACE_END }}}
|
||||
|
||||
@ -84,7 +87,8 @@ inline void copy(VkExtent3D &e3d,const VkExtent2D &e2d)
|
||||
bool CheckStrideBytesByFormat(); ///<检验所有数据类型长度数组是否符合规则
|
||||
#endif//_DEBUG
|
||||
|
||||
uint32_t GetStrideByFormat(const VkFormat &); ///<根据数据类型获取访类型单个数据长度字节数
|
||||
uint32_t GetStrideByFormat(const VkFormat &); ///<根据数据类型获取得类型单个数据长度字节数
|
||||
const char *GetColorFormatName(const VkFormat &); ///<根据数据类型获取得类型名称
|
||||
|
||||
inline void debug_out(const hgl::List<VkLayerProperties> &layer_properties)
|
||||
{
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define FMT_UNDEFINED VK_FORMAT_UNDEFINED
|
||||
|
||||
#define FMT_RG4UN VK_FORMAT_R4G4_UNORM_PACK8
|
||||
|
||||
#define FMT_RGBA4 VK_FORMAT_R4G4B4A4_UNORM_PACK16
|
||||
#define FMT_BGRA4 VK_FORMAT_B4G4R4A4_UNORM_PACK16
|
||||
#define FMT_RGB565 VK_FORMAT_R5G6B5_UNORM_PACK16
|
||||
@ -16,58 +17,104 @@
|
||||
|
||||
#define FMT_R8UN VK_FORMAT_R8_UNORM
|
||||
#define FMT_R8SN VK_FORMAT_R8_SNORM
|
||||
#define FMT_R8US VK_FORMAT_R8_USCALED
|
||||
#define FMT_R8SS VK_FORMAT_R8_SSCALED
|
||||
#define FMT_R8U VK_FORMAT_R8_UINT
|
||||
#define FMT_R8I VK_FORMAT_R8_SINT
|
||||
#define FMT_R8s VK_FORMAT_R8_SRGB
|
||||
|
||||
#define FMT_RG8UN VK_FORMAT_R8G8_UNORM
|
||||
#define FMT_RG8SN VK_FORMAT_R8G8_SNORM
|
||||
#define FMT_RG8US VK_FORMAT_R8G8_USCALED
|
||||
#define FMT_RG8SS VK_FORMAT_R8G8_SSCALED
|
||||
#define FMT_RG8U VK_FORMAT_R8G8_UINT
|
||||
#define FMT_RG8I VK_FORMAT_R8G8_SINT
|
||||
#define FMT_RG8s VK_FORMAT_R8G8_SRGB
|
||||
|
||||
//注:几乎任何GPU都不支持 RGB8,BGR8,RGB16 这三类格式,所以尽可能不要使用这三类格式
|
||||
|
||||
#define FMT_RGB8UN VK_FORMAT_R8G8B8_UNORM
|
||||
#define FMT_RGB8SN VK_FORMAT_R8G8B8_SNORM
|
||||
#define FMT_RGB8US VK_FORMAT_R8G8B8_USCALED
|
||||
#define FMT_RGB8SS VK_FORMAT_R8G8B8_SSCALED
|
||||
#define FMT_RGB8U VK_FORMAT_R8G8B8_UINT
|
||||
#define FMT_RGB8I VK_FORMAT_R8G8B8_SINT
|
||||
#define FMT_RGB8s VK_FORMAT_R8G8B8_SRGB
|
||||
|
||||
#define FMT_BGR8UN VK_FORMAT_B8G8R8_UNORM
|
||||
#define FMT_BGR8SN VK_FORMAT_B8G8R8_SNORM
|
||||
#define FMT_BGR8US VK_FORMAT_B8G8R8_USCALED
|
||||
#define FMT_BGR8SS VK_FORMAT_B8G8R8_SSCALED
|
||||
#define FMT_BGR8U VK_FORMAT_B8G8R8_UINT
|
||||
#define FMT_BGR8I VK_FORMAT_B8G8R8_SINT
|
||||
#define FMT_BGR8s VK_FORMAT_B8G8R8_SRGB
|
||||
|
||||
#define FMT_RGBA8UN VK_FORMAT_R8G8B8A8_UNORM
|
||||
#define FMT_RGBA8SN VK_FORMAT_R8G8B8A8_SNORM
|
||||
#define FMT_RGBA8US VK_FORMAT_R8G8B8A8_USCALED
|
||||
#define FMT_RGBA8SS VK_FORMAT_R8G8B8A8_SSCALED
|
||||
#define FMT_RGBA8U VK_FORMAT_R8G8B8A8_UINT
|
||||
#define FMT_RGBA8I VK_FORMAT_R8G8B8A8_SINT
|
||||
#define FMT_RGBA8s VK_FORMAT_R8G8B8A8_SRGB
|
||||
|
||||
#define FMT_BGRA8UN VK_FORMAT_B8G8R8A8_UNORM
|
||||
#define FMT_BGRA8SN VK_FORMAT_B8G8R8A8_SNORM
|
||||
#define FMT_BGRA8US VK_FORMAT_B8G8R8A8_USCALED
|
||||
#define FMT_BGRA8SS VK_FORMAT_B8G8R8A8_SSCALED
|
||||
#define FMT_BGRA8U VK_FORMAT_B8G8R8A8_UINT
|
||||
#define FMT_BGRA8I VK_FORMAT_B8G8R8A8_SINT
|
||||
#define FMT_BGRA8s VK_FORMAT_B8G8R8A8_SRGB
|
||||
|
||||
#define FMT_ABGR8UN VK_FORMAT_A8B8G8R8_UNORM_PACK32
|
||||
#define FMT_ABGR8SN VK_FORMAT_A8B8G8R8_SNORM_PACK32
|
||||
#define FMT_ABGR8US VK_FORMAT_A8B8G8R8_USCALED_PACK32
|
||||
#define FMT_ABGR8SS VK_FORMAT_A8B8G8R8_SSCALED_PACK32
|
||||
#define FMT_ABGR8U VK_FORMAT_A8B8G8R8_UINT_PACK32
|
||||
#define FMT_ABGR8I VK_FORMAT_A8B8G8R8_SINT_PACK32
|
||||
#define FMT_ABGR8s VK_FORMAT_A8B8G8R8_SRGB_PACK32
|
||||
|
||||
#define FMT_A2RGB10UN VK_FORMAT_A2R10G10B10_UNORM_PACK32
|
||||
#define FMT_A2RGB10SN VK_FORMAT_A2R10G10B10_SNORM_PACK32
|
||||
#define FMT_A2RGB10US VK_FORMAT_A2R10G10B10_USCALED_PACK32
|
||||
#define FMT_A2RGB10SS VK_FORMAT_A2R10G10B10_SSCALED_PACK32
|
||||
#define FMT_A2RGB10U VK_FORMAT_A2R10G10B10_UINT_PACK32
|
||||
#define FMT_A2RGB10I VK_FORMAT_A2R10G10B10_SINT_PACK32
|
||||
|
||||
#define FMT_A2BGR10UN VK_FORMAT_A2B10G10R10_UNORM_PACK32
|
||||
#define FMT_A2BGR10SN VK_FORMAT_A2B10G10R10_SNORM_PACK32
|
||||
#define FMT_A2BGR10US VK_FORMAT_A2B10G10R10_USCALED_PACK32
|
||||
#define FMT_A2BGR10SS VK_FORMAT_A2B10G10R10_SSCALED_PACK32
|
||||
#define FMT_A2BGR10U VK_FORMAT_A2B10G10R10_UINT_PACK32
|
||||
#define FMT_A2BGR10I VK_FORMAT_A2B10G10R10_SINT_PACK32
|
||||
|
||||
#define FMT_R16UN VK_FORMAT_R16_UNORM
|
||||
#define FMT_R16SN VK_FORMAT_R16_SNORM
|
||||
#define FMT_R16US VK_FORMAT_R16_USCALED
|
||||
#define FMT_R16SS VK_FORMAT_R16_SSCALED
|
||||
#define FMT_R16U VK_FORMAT_R16_UINT
|
||||
#define FMT_R16I VK_FORMAT_R16_SINT
|
||||
#define FMT_R16F VK_FORMAT_R16_SFLOAT
|
||||
|
||||
#define FMT_RG16UN VK_FORMAT_R16G16_UNORM
|
||||
#define FMT_RG16SN VK_FORMAT_R16G16_SNORM
|
||||
#define FMT_RG16US VK_FORMAT_R16G16_USCALED
|
||||
#define FMT_RG16SS VK_FORMAT_R16G16_SSCALED
|
||||
#define FMT_RG16U VK_FORMAT_R16G16_UINT
|
||||
#define FMT_RG16I VK_FORMAT_R16G16_SINT
|
||||
#define FMT_RG16F VK_FORMAT_R16G16_SFLOAT
|
||||
|
||||
#define FMT_RGB16UN VK_FORMAT_R16G16B16_UNORM
|
||||
#define FMT_RGB16SN VK_FORMAT_R16G16B16_SNORM
|
||||
#define FMT_RGB16US VK_FORMAT_R16G16B16_USCALED
|
||||
#define FMT_RGB16SS VK_FORMAT_R16G16B16_SSCALED
|
||||
#define FMT_RGB16U VK_FORMAT_R16G16B16_UINT
|
||||
#define FMT_RGB16I VK_FORMAT_R16G16B16_SINT
|
||||
#define FMT_RGB16F VK_FORMAT_R16G16B16_SFLOAT
|
||||
|
||||
#define FMT_RGBA16UN VK_FORMAT_R16G16B16A16_UNORM
|
||||
#define FMT_RGBA16SN VK_FORMAT_R16G16B16A16_SNORM
|
||||
#define FMT_RGBA16US VK_FORMAT_R16G16B16A16_USCALED
|
||||
#define FMT_RGBA16SS VK_FORMAT_R16G16B16A16_SSCALED
|
||||
#define FMT_RGBA16U VK_FORMAT_R16G16B16A16_UINT
|
||||
#define FMT_RGBA16I VK_FORMAT_R16G16B16A16_SINT
|
||||
#define FMT_RGBA16F VK_FORMAT_R16G16B16A16_SFLOAT
|
||||
@ -104,11 +151,11 @@
|
||||
#define FMT_RGBA64I VK_FORMAT_R64G64B64A64_SINT
|
||||
#define FMT_RGBA64F VK_FORMAT_R64G64B64A64_SFLOAT
|
||||
|
||||
#define FMT_B10GR11 VK_FORMAT_B10G11R11_UFLOAT_PACK32
|
||||
#define FMT_E5BGR9 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
|
||||
#define FMT_B10GR11UF VK_FORMAT_B10G11R11_UFLOAT_PACK32
|
||||
#define FMT_E5BGR9UF VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
|
||||
|
||||
#define FMT_D16UN VK_FORMAT_D16_UNORM
|
||||
#define FMT_X8_D24 VK_FORMAT_X8_D24_UNORM_PACK32
|
||||
#define FMT_X8_D24UN VK_FORMAT_X8_D24_UNORM_PACK32
|
||||
#define FMT_D32F VK_FORMAT_D32_SFLOAT
|
||||
#define FMT_S8U VK_FORMAT_S8_UINT
|
||||
#define FMT_D16UN_S8U VK_FORMAT_D16_UNORM_S8_UINT
|
||||
|
@ -184,7 +184,8 @@ namespace hgl
|
||||
return false;
|
||||
}
|
||||
|
||||
glslang::GlslangToSpv(*program.getIntermediate(stage), spirv);
|
||||
glslang::GlslangToSpv(*program.getIntermediate(stage),spirv);
|
||||
return(true);
|
||||
}
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
||||
|
@ -4,182 +4,204 @@ VK_NAMESPACE_BEGIN
|
||||
|
||||
namespace
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
struct StrideByFormat
|
||||
//enum class ColorDataTypeEnum:uint8
|
||||
//{
|
||||
// X=0,
|
||||
// R,G,B,A,DEPTH,STENCIL
|
||||
//};
|
||||
|
||||
//enum class ColorDataType:uint8
|
||||
//{
|
||||
// UNORM=1,
|
||||
// SNORM,
|
||||
// USCALED,
|
||||
// SSCALE,
|
||||
// UINT,
|
||||
// SINT,
|
||||
// UFLOAT,
|
||||
// SFLOAT,
|
||||
// SRGB,
|
||||
//};//
|
||||
|
||||
struct VulkanTextureFormat
|
||||
{
|
||||
VkFormat format; //格式,此值保留仅为参考
|
||||
uint32_t bytes;
|
||||
#ifdef _DEBUG
|
||||
VkFormat format; ///<Vulkan格式,此值保留仅为参考
|
||||
#endif//_DEBUG
|
||||
|
||||
uint32_t bytes; ///<每象素字节数
|
||||
|
||||
char name[16]; ///<名称
|
||||
};
|
||||
|
||||
#define STRIDE_BY_FORMAT(vktype,size) {VK_FORMAT_##vktype,size}
|
||||
#define VULKAN_TEXTURE_FORMAT_DEFINE(name,size) {FMT_##name,size,#name}
|
||||
|
||||
constexpr StrideByFormat stride_list[]=
|
||||
#else
|
||||
|
||||
#define STRIDE_BY_FORMAT(vktype,size) size
|
||||
|
||||
constexpr uint32_t stride_list[]=
|
||||
#endif//
|
||||
constexpr VulkanTextureFormat vulkan_format_list[]=
|
||||
{
|
||||
STRIDE_BY_FORMAT(UNDEFINED, 0),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(UNDEFINED, 0),
|
||||
|
||||
STRIDE_BY_FORMAT(R4G4_UNORM_PACK8, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG4UN, 1),
|
||||
|
||||
STRIDE_BY_FORMAT(R4G4B4A4_UNORM_PACK16, 2),
|
||||
STRIDE_BY_FORMAT(B4G4R4A4_UNORM_PACK16, 2),
|
||||
STRIDE_BY_FORMAT(R5G6B5_UNORM_PACK16, 2),
|
||||
STRIDE_BY_FORMAT(B5G6R5_UNORM_PACK16, 2),
|
||||
STRIDE_BY_FORMAT(R5G5B5A1_UNORM_PACK16, 2),
|
||||
STRIDE_BY_FORMAT(B5G5R5A1_UNORM_PACK16, 2),
|
||||
STRIDE_BY_FORMAT(A1R5G5B5_UNORM_PACK16, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA4, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA4, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB565, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR565, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB5A1, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR5A1, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A1RGB5, 2),
|
||||
|
||||
STRIDE_BY_FORMAT(R8_UNORM, 1),
|
||||
STRIDE_BY_FORMAT(R8_SNORM, 1),
|
||||
STRIDE_BY_FORMAT(R8_USCALED, 1),
|
||||
STRIDE_BY_FORMAT(R8_SSCALED, 1),
|
||||
STRIDE_BY_FORMAT(R8_UINT, 1),
|
||||
STRIDE_BY_FORMAT(R8_SINT, 1),
|
||||
STRIDE_BY_FORMAT(R8_SRGB, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R8UN, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R8SN, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R8US, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R8SS, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R8U, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R8I, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R8s, 1),
|
||||
|
||||
STRIDE_BY_FORMAT(R8G8_UNORM, 2),
|
||||
STRIDE_BY_FORMAT(R8G8_SNORM, 2),
|
||||
STRIDE_BY_FORMAT(R8G8_USCALED, 2),
|
||||
STRIDE_BY_FORMAT(R8G8_SSCALED, 2),
|
||||
STRIDE_BY_FORMAT(R8G8_UINT, 2),
|
||||
STRIDE_BY_FORMAT(R8G8_SINT, 2),
|
||||
STRIDE_BY_FORMAT(R8G8_SRGB, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG8UN, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG8SN, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG8US, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG8SS, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG8U, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG8I, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG8s, 2),
|
||||
|
||||
STRIDE_BY_FORMAT(R8G8B8_UNORM, 3),
|
||||
STRIDE_BY_FORMAT(R8G8B8_SNORM, 3),
|
||||
STRIDE_BY_FORMAT(R8G8B8_USCALED, 3),
|
||||
STRIDE_BY_FORMAT(R8G8B8_SSCALED, 3),
|
||||
STRIDE_BY_FORMAT(R8G8B8_UINT, 3),
|
||||
STRIDE_BY_FORMAT(R8G8B8_SINT, 3),
|
||||
STRIDE_BY_FORMAT(R8G8B8_SRGB, 3),
|
||||
STRIDE_BY_FORMAT(B8G8R8_UNORM, 3),
|
||||
STRIDE_BY_FORMAT(B8G8R8_SNORM, 3),
|
||||
STRIDE_BY_FORMAT(B8G8R8_USCALED, 3),
|
||||
STRIDE_BY_FORMAT(B8G8R8_SSCALED, 3),
|
||||
STRIDE_BY_FORMAT(B8G8R8_UINT, 3),
|
||||
STRIDE_BY_FORMAT(B8G8R8_SINT, 3),
|
||||
STRIDE_BY_FORMAT(B8G8R8_SRGB, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB8UN, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB8SN, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB8US, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB8SS, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB8U, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB8I, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB8s, 3),
|
||||
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR8UN, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR8SN, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR8US, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR8SS, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR8U, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR8I, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGR8s, 3),
|
||||
|
||||
STRIDE_BY_FORMAT(R8G8B8A8_UNORM, 4),
|
||||
STRIDE_BY_FORMAT(R8G8B8A8_SNORM, 4),
|
||||
STRIDE_BY_FORMAT(R8G8B8A8_USCALED, 4),
|
||||
STRIDE_BY_FORMAT(R8G8B8A8_SSCALED, 4),
|
||||
STRIDE_BY_FORMAT(R8G8B8A8_UINT, 4),
|
||||
STRIDE_BY_FORMAT(R8G8B8A8_SINT, 4),
|
||||
STRIDE_BY_FORMAT(R8G8B8A8_SRGB, 4),
|
||||
STRIDE_BY_FORMAT(B8G8R8A8_UNORM, 4),
|
||||
STRIDE_BY_FORMAT(B8G8R8A8_SNORM, 4),
|
||||
STRIDE_BY_FORMAT(B8G8R8A8_USCALED, 4),
|
||||
STRIDE_BY_FORMAT(B8G8R8A8_SSCALED, 4),
|
||||
STRIDE_BY_FORMAT(B8G8R8A8_UINT, 4),
|
||||
STRIDE_BY_FORMAT(B8G8R8A8_SINT, 4),
|
||||
STRIDE_BY_FORMAT(B8G8R8A8_SRGB, 4),
|
||||
STRIDE_BY_FORMAT(A8B8G8R8_UNORM_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A8B8G8R8_SNORM_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A8B8G8R8_USCALED_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A8B8G8R8_SSCALED_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A8B8G8R8_UINT_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A8B8G8R8_SINT_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A8B8G8R8_SRGB_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2R10G10B10_UNORM_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2R10G10B10_SNORM_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2R10G10B10_USCALED_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2R10G10B10_SSCALED_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2R10G10B10_UINT_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2R10G10B10_SINT_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2B10G10R10_UNORM_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2B10G10R10_SNORM_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2B10G10R10_USCALED_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2B10G10R10_SSCALED_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2B10G10R10_UINT_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(A2B10G10R10_SINT_PACK32, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA8UN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA8SN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA8US, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA8SS, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA8U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA8I, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA8s, 4),
|
||||
|
||||
STRIDE_BY_FORMAT(R16_UNORM, 2),
|
||||
STRIDE_BY_FORMAT(R16_SNORM, 2),
|
||||
STRIDE_BY_FORMAT(R16_USCALED, 2),
|
||||
STRIDE_BY_FORMAT(R16_SSCALED, 2),
|
||||
STRIDE_BY_FORMAT(R16_UINT, 2),
|
||||
STRIDE_BY_FORMAT(R16_SINT, 2),
|
||||
STRIDE_BY_FORMAT(R16_SFLOAT, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA8UN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA8SN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA8US, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA8SS, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA8U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA8I, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(BGRA8s, 4),
|
||||
|
||||
STRIDE_BY_FORMAT(R16G16_UNORM, 4),
|
||||
STRIDE_BY_FORMAT(R16G16_SNORM, 4),
|
||||
STRIDE_BY_FORMAT(R16G16_USCALED, 4),
|
||||
STRIDE_BY_FORMAT(R16G16_SSCALED, 4),
|
||||
STRIDE_BY_FORMAT(R16G16_UINT, 4),
|
||||
STRIDE_BY_FORMAT(R16G16_SINT, 4),
|
||||
STRIDE_BY_FORMAT(R16G16_SFLOAT, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(ABGR8UN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(ABGR8SN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(ABGR8US, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(ABGR8SS, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(ABGR8U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(ABGR8I, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(ABGR8s, 4),
|
||||
|
||||
STRIDE_BY_FORMAT(R16G16B16_UNORM, 6),
|
||||
STRIDE_BY_FORMAT(R16G16B16_SNORM, 6),
|
||||
STRIDE_BY_FORMAT(R16G16B16_USCALED, 6),
|
||||
STRIDE_BY_FORMAT(R16G16B16_SSCALED, 6),
|
||||
STRIDE_BY_FORMAT(R16G16B16_UINT, 6),
|
||||
STRIDE_BY_FORMAT(R16G16B16_SINT, 6),
|
||||
STRIDE_BY_FORMAT(R16G16B16_SFLOAT, 6),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2RGB10UN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2RGB10SN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2RGB10US, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2RGB10SS, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2RGB10U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2RGB10I, 4),
|
||||
|
||||
STRIDE_BY_FORMAT(R16G16B16A16_UNORM, 8),
|
||||
STRIDE_BY_FORMAT(R16G16B16A16_SNORM, 8),
|
||||
STRIDE_BY_FORMAT(R16G16B16A16_USCALED, 8),
|
||||
STRIDE_BY_FORMAT(R16G16B16A16_SSCALED, 8),
|
||||
STRIDE_BY_FORMAT(R16G16B16A16_UINT, 8),
|
||||
STRIDE_BY_FORMAT(R16G16B16A16_SINT, 8),
|
||||
STRIDE_BY_FORMAT(R16G16B16A16_SFLOAT, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2BGR10UN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2BGR10SN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2BGR10US, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2BGR10SS, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2BGR10U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(A2BGR10I, 4),
|
||||
|
||||
STRIDE_BY_FORMAT(R32_UINT, 4),
|
||||
STRIDE_BY_FORMAT(R32_SINT, 4),
|
||||
STRIDE_BY_FORMAT(R32_SFLOAT, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R16UN, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R16SN, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R16US, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R16SS, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R16U, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R16I, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R16F, 2),
|
||||
|
||||
STRIDE_BY_FORMAT(R32G32_UINT, 8),
|
||||
STRIDE_BY_FORMAT(R32G32_SINT, 8),
|
||||
STRIDE_BY_FORMAT(R32G32_SFLOAT, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG16UN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG16SN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG16US, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG16SS, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG16U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG16I, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG16F, 4),
|
||||
|
||||
STRIDE_BY_FORMAT(R32G32B32_UINT, 12),
|
||||
STRIDE_BY_FORMAT(R32G32B32_SINT, 12),
|
||||
STRIDE_BY_FORMAT(R32G32B32_SFLOAT, 12),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB16UN, 6),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB16SN, 6),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB16US, 6),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB16SS, 6),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB16U, 6),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB16I, 6),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB16F, 6),
|
||||
|
||||
STRIDE_BY_FORMAT(R32G32B32A32_UINT, 16),
|
||||
STRIDE_BY_FORMAT(R32G32B32A32_SINT, 16),
|
||||
STRIDE_BY_FORMAT(R32G32B32A32_SFLOAT, 16),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA16UN, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA16SN, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA16US, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA16SS, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA16U, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA16I, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA16F, 8),
|
||||
|
||||
STRIDE_BY_FORMAT(R64_UINT, 8),
|
||||
STRIDE_BY_FORMAT(R64_SINT, 8),
|
||||
STRIDE_BY_FORMAT(R64_SFLOAT, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R32U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R32I, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R32F, 4),
|
||||
|
||||
STRIDE_BY_FORMAT(R64G64_UINT, 16),
|
||||
STRIDE_BY_FORMAT(R64G64_SINT, 16),
|
||||
STRIDE_BY_FORMAT(R64G64_SFLOAT, 16),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG32U, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG32I, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG32F, 8),
|
||||
|
||||
STRIDE_BY_FORMAT(R64G64B64_UINT, 24),
|
||||
STRIDE_BY_FORMAT(R64G64B64_SINT, 24),
|
||||
STRIDE_BY_FORMAT(R64G64B64_SFLOAT, 24),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB32U, 12),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB32I, 12),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB32F, 12),
|
||||
|
||||
STRIDE_BY_FORMAT(R64G64B64A64_UINT, 32),
|
||||
STRIDE_BY_FORMAT(R64G64B64A64_SINT, 32),
|
||||
STRIDE_BY_FORMAT(R64G64B64A64_SFLOAT, 32),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA32U, 16),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA32I, 16),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA32F, 16),
|
||||
|
||||
STRIDE_BY_FORMAT(B10G11R11_UFLOAT_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(E5B9G9R9_UFLOAT_PACK32, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R64U, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R64I, 8),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(R64F, 8),
|
||||
|
||||
STRIDE_BY_FORMAT(D16_UNORM, 2),
|
||||
STRIDE_BY_FORMAT(X8_D24_UNORM_PACK32, 4),
|
||||
STRIDE_BY_FORMAT(D32_SFLOAT, 4),
|
||||
STRIDE_BY_FORMAT(S8_UINT, 1),
|
||||
STRIDE_BY_FORMAT(D16_UNORM_S8_UINT, 3),
|
||||
STRIDE_BY_FORMAT(D24_UNORM_S8_UINT, 4),
|
||||
STRIDE_BY_FORMAT(D32_SFLOAT_S8_UINT, 5)
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG64U, 16),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG64I, 16),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RG64F, 16),
|
||||
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB64U, 24),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB64I, 24),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGB64F, 24),
|
||||
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA64U, 32),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA64I, 32),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(RGBA64F, 32),
|
||||
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(B10GR11UF, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(E5BGR9UF, 4),
|
||||
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(D16UN, 2),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(X8_D24UN, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(D32F, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(S8U, 1),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(D16UN_S8U, 3),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(D24UN_S8U, 4),
|
||||
VULKAN_TEXTURE_FORMAT_DEFINE(D32F_S8U, 5)
|
||||
};
|
||||
|
||||
#ifdef _DEBUG
|
||||
constexpr uint32_t STRIDE_FORMAT_COUNT=sizeof(stride_list)/sizeof(StrideByFormat);
|
||||
constexpr size_t TEXTURE_FORMAT_COUNT=sizeof(vulkan_format_list)/sizeof(VulkanTextureFormat);
|
||||
|
||||
uint32_t GetStrideBytesByFormat(const VkFormat &format)
|
||||
{
|
||||
if(format<=VK_FORMAT_UNDEFINED||format>=STRIDE_FORMAT_COUNT)return(0);
|
||||
if(format<=VK_FORMAT_UNDEFINED||format>=TEXTURE_FORMAT_COUNT)return(0);
|
||||
|
||||
if(format<=VK_FORMAT_UNDEFINED
|
||||
||format>=VK_FORMAT_BC1_RGB_UNORM_BLOCK)return 0;
|
||||
@ -220,10 +242,10 @@ namespace
|
||||
#ifdef _DEBUG
|
||||
bool CheckStrideBytesByFormat()
|
||||
{
|
||||
for(uint32 i=0;i<STRIDE_FORMAT_COUNT;i++)
|
||||
for(uint32 i=0;i<TEXTURE_FORMAT_COUNT;i++)
|
||||
{
|
||||
if(stride_list[i].format!=i)return(false);
|
||||
if(stride_list[i].bytes!=GetStrideBytesByFormat(stride_list[i].format))return(false);
|
||||
if(vulkan_format_list[i].format!=i)return(false);
|
||||
if(vulkan_format_list[i].bytes!=GetStrideBytesByFormat(vulkan_format_list[i].format))return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
@ -232,12 +254,15 @@ bool CheckStrideBytesByFormat()
|
||||
|
||||
uint32_t GetStrideByFormat(const VkFormat &format)
|
||||
{
|
||||
if(format<=VK_FORMAT_UNDEFINED||format>=STRIDE_FORMAT_COUNT)return(0);
|
||||
if(format<=VK_FORMAT_UNDEFINED||format>=TEXTURE_FORMAT_COUNT)return(0);
|
||||
|
||||
#ifdef _DEBUG
|
||||
return stride_list[format].bytes;
|
||||
#else
|
||||
return stride_list[format];
|
||||
#endif//_DEBUG
|
||||
return vulkan_format_list[format].bytes;
|
||||
}
|
||||
|
||||
const char *GetColorFormatName(const VkFormat &format)
|
||||
{
|
||||
if(format<=VK_FORMAT_UNDEFINED||format>=TEXTURE_FORMAT_COUNT)return(nullptr);
|
||||
|
||||
return vulkan_format_list[format].name;
|
||||
}
|
||||
VK_NAMESPACE_END
|
||||
|
@ -111,7 +111,7 @@ VkFormat PhysicalDevice::GetDepthFormat(bool lower_to_high)const
|
||||
constexpr VkFormat depthFormats[] =
|
||||
{
|
||||
FMT_D16UN,
|
||||
FMT_X8_D24,
|
||||
FMT_X8_D24UN,
|
||||
FMT_D16UN_S8U,
|
||||
FMT_D24UN_S8U,
|
||||
FMT_D32F,
|
||||
|
Loading…
x
Reference in New Issue
Block a user