From 14f48466958df763cc2dc24cc6cabf4cf24f5c0f Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 1 Oct 2019 20:21:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=89=80=E6=9C=89=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E7=9A=84=E6=A0=BC=E5=BC=8F=E6=8A=BD=E7=A6=BB?= =?UTF-8?q?=E5=87=BA=E6=9D=A5=E5=A4=8D=E5=88=B6=E4=B8=80=E5=A5=97=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=9C=A8=E7=BA=B9=E7=90=86?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E5=99=A8=E4=B8=AD=E4=BD=BF=E7=94=A8=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/hgl/graph/vulkan/VKFormat.h | 30 ++++++++++++++++++++++++++ src/RenderDevice/Vulkan/VKFormat.cpp | 18 ++++++++++++++++ src/RenderDevice/Vulkan/VKPipeline.cpp | 2 ++ 3 files changed, 50 insertions(+) diff --git a/inc/hgl/graph/vulkan/VKFormat.h b/inc/hgl/graph/vulkan/VKFormat.h index f5d5d837..23fda6fb 100644 --- a/inc/hgl/graph/vulkan/VKFormat.h +++ b/inc/hgl/graph/vulkan/VKFormat.h @@ -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 diff --git a/src/RenderDevice/Vulkan/VKFormat.cpp b/src/RenderDevice/Vulkan/VKFormat.cpp index ea3742c2..3d525b06 100644 --- a/src/RenderDevice/Vulkan/VKFormat.cpp +++ b/src/RenderDevice/Vulkan/VKFormat.cpp @@ -1,4 +1,5 @@ #include +#include 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 diff --git a/src/RenderDevice/Vulkan/VKPipeline.cpp b/src/RenderDevice/Vulkan/VKPipeline.cpp index 342f1bea..0f53d0c6 100644 --- a/src/RenderDevice/Vulkan/VKPipeline.cpp +++ b/src/RenderDevice/Vulkan/VKPipeline.cpp @@ -62,6 +62,8 @@ void PipelineCreater::InitDynamicState() dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_VIEWPORT; dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR; + //如果窗口大小不变,可以不设置这两个。能不能提升效能未知 + pipelineInfo.pDynamicState=&dynamicState; }