From 3bd165fbe530e8da851186755779b0a795e794d5 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 7 Jan 2022 12:14:43 +0800 Subject: [PATCH] optimized params of GPUDevice::CommitTexture2DMipmaps --- inc/hgl/graph/VKDevice.h | 2 +- src/SceneGraph/Vulkan/Texture/VKDeviceTexture2D.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/inc/hgl/graph/VKDevice.h b/inc/hgl/graph/VKDevice.h index 8e702b08..80596e77 100644 --- a/inc/hgl/graph/VKDevice.h +++ b/inc/hgl/graph/VKDevice.h @@ -157,7 +157,7 @@ public: //Image private: //texture bool CommitTexture2D (Texture2D *,GPUBuffer *buf,VkPipelineStageFlags stage); - bool CommitTexture2DMipmaps (Texture2D *,GPUBuffer *buf,uint32_t width,uint32_t height,uint32_t); + bool CommitTexture2DMipmaps (Texture2D *,GPUBuffer *buf,const VkExtent3D &,uint32_t); bool CommitTexture2D (Texture2D *,GPUBuffer *buf,const VkBufferImageCopy *,const int count,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); bool SubmitTexture (const VkCommandBuffer *cmd_bufs,const uint32_t count=1); ///<提交纹理处理到队列 diff --git a/src/SceneGraph/Vulkan/Texture/VKDeviceTexture2D.cpp b/src/SceneGraph/Vulkan/Texture/VKDeviceTexture2D.cpp index cc536a2f..fb2d85c3 100644 --- a/src/SceneGraph/Vulkan/Texture/VKDeviceTexture2D.cpp +++ b/src/SceneGraph/Vulkan/Texture/VKDeviceTexture2D.cpp @@ -67,7 +67,7 @@ Texture2D *GPUDevice::CreateTexture2D(TextureCreateInfo *tci) } else //本身有mipmaps数据 { - CommitTexture2DMipmaps(tex,tci->buffer,tci->extent.width,tci->extent.height,tci->mipmap_zero_total_bytes); + CommitTexture2DMipmaps(tex,tci->buffer,tci->extent,tci->mipmap_zero_total_bytes); } } else @@ -145,10 +145,10 @@ bool GPUDevice::CommitTexture2D(Texture2D *tex,GPUBuffer *buf,VkPipelineStageFla return CommitTexture2D(tex,buf,&buffer_image_copy,1,destinationStage); } -bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,GPUBuffer *buf,uint32_t width,uint32_t height,uint32_t total_bytes) +bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,GPUBuffer *buf,const VkExtent3D &extent,uint32_t total_bytes) { if(!tex||!buf - ||width<=0||height<=0) + ||extent.width*extent.height<=0) return(false); const uint32_t miplevel=tex->GetMipLevel(); @@ -158,6 +158,9 @@ bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,GPUBuffer *buf,uint32_t wi VkDeviceSize offset=0; uint32_t level=0; + uint32_t width=extent.width; + uint32_t height=extent.height; + buffer_image_copy.zero(); for(VkBufferImageCopy &bic:buffer_image_copy)