将所有平台可用的格式抽离出来复制一套定义,用于在纹理转换器中使用支持

This commit is contained in:
hyzboy 2019-10-01 20:21:36 +08:00
parent fd02d2f4ee
commit 14f4846695
3 changed files with 50 additions and 0 deletions

View File

@ -285,6 +285,34 @@ constexpr size_t FMT_YUV_RANGE_SIZE=FMT_YUV_END_RANGE-FMT_YUV_BEGIN_RANGE+1;
#define FMT_PVRTC_END_RANGE FMT_PVRTC2_4s
constexpr size_t FMT_PVRTC_RANGE_SIZE=FMT_PVRTC_END_RANGE-FMT_PVRTC_BEGIN_RANGE+1;
//以下为AMD/NVIDIA/INTEL/QUALCOMM/ARM/POWERVR全部可用的通用格式
#define UFMT_BGRA4 FMT_BGRA4
#define UFMT_RGB565 FMT_RGB565
#define UFMT_A4RGB5 FMT_A1RGB5
#define UFMT_R8 FMT_R8UN
#define UFMT_RG8 FMT_RG8UN
#define UFMT_RGBA8 FMT_RGBA8UN
#define UFMT_ABGR8 FMT_ABGR8UN
#define UFMT_A2BGR10 FMT_A2BGR10UN
#define UFMT_R16 FMT_R16UN
#define UFMT_R16F FMT_R16F
#define UFMT_RG16 FMT_RG16UN
#define UFMT_RG16F FMT_RG16F
#define UFMT_RGBA16 FMT_RGBA16UN
#define UFMT_RGBA16F FMT_RGBA16F
#define UFMT_R32U FMT_R32U
#define UFMT_R32I FMT_R32I
#define UFMT_R32F FMT_R32F
#define UFMT_RG32U FMT_RG32U
#define UFMT_RG32I FMT_RG32I
#define UFMT_RG32F FMT_RG32F
#define UFMT_RGB32U FMT_RGB32U
#define UFMT_RGB32I FMT_RGB32I
#define UFMT_RGB32F FMT_RGB32F
#define UFMT_RGBA32U FMT_RGBA32U
#define UFMT_RGBA32I FMT_RGBA32I
#define UFMT_RGBA32F FMT_RGBA32F
enum class TextureCompressType
{
NONE=0,
@ -347,5 +375,7 @@ inline const char *GetVulkanFormatName(const VkFormat &format)
return (vcf?vcf->name:nullptr);
}
const VulkanFormat *GetVulkanFormat(const char *fmt_name);
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_FORMAT_INCLUDE

View File

@ -1,4 +1,5 @@
#include<hgl/graph/vulkan/VKFormat.h>
#include<hgl/type/StrChar.h>
VK_NAMESPACE_BEGIN
namespace
@ -267,4 +268,21 @@ const VulkanFormat *GetVulkanFormat(const VkFormat &format)
return nullptr;
}
const VulkanFormat *GetVulkanFormat(const char *fmt_name)
{
if(!fmt_name||!*fmt_name)return(nullptr);
const VulkanFormat *vcf=vulkan_color_format_list;
for(uint32_t i=VK_FORMAT_BEGIN_RANGE;i<=VK_FORMAT_END_RANGE;i++)
{
if(hgl::strcmp(fmt_name,vcf->name)==0)
return vcf;
++vcf;
}
return(nullptr);
}
VK_NAMESPACE_END

View File

@ -62,6 +62,8 @@ void PipelineCreater::InitDynamicState()
dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_VIEWPORT;
dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR;
//如果窗口大小不变,可以不设置这两个。能不能提升效能未知
pipelineInfo.pDynamicState=&dynamicState;
}