added CopyBufferToImage2D and use it.

This commit is contained in:
2023-09-25 17:33:59 +08:00
parent 322d24c4ca
commit 22099b6b84
3 changed files with 15 additions and 11 deletions

View File

@@ -75,7 +75,7 @@ bool GPUDevice::CopyBufferToImage(const CopyBufferToImageInfo *info,VkPipelineSt
return(true);
}
bool GPUDevice::CopyBufferToImage(Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *buffer_image_copy,const int count,const uint32_t layer_count,VkPipelineStageFlags destinationStage)
bool GPUDevice::CopyBufferToImage(Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *buffer_image_copy,const int count,const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags destinationStage)
{
if(!tex||!buf)
return(false);
@@ -88,7 +88,7 @@ bool GPUDevice::CopyBufferToImage(Texture *tex,DeviceBuffer *buf,const VkBufferI
info.isr.aspectMask =tex->GetAspect();
info.isr.baseMipLevel =0;
info.isr.levelCount =tex->GetMipLevel();
info.isr.baseArrayLayer =0;
info.isr.baseArrayLayer =base_layer;
info.isr.layerCount =layer_count;
info.bic_list =buffer_image_copy;

View File

@@ -95,7 +95,7 @@ bool GPUDevice::CommitTexture2D(Texture2D *tex,DeviceBuffer *buf,VkPipelineStage
BufferImageCopy buffer_image_copy(tex);
return CopyBufferToImage(tex,buf,&buffer_image_copy,destinationStage);
return CopyBufferToImage2D(tex,buf,&buffer_image_copy,destinationStage);
}
bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,DeviceBuffer *buf,const VkExtent3D &extent,uint32_t total_bytes)
@@ -141,7 +141,7 @@ bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,DeviceBuffer *buf,const Vk
if(height>1){height>>=1;total_bytes>>=1;}
}
return CopyBufferToImage(tex,buf,buffer_image_copy,miplevel,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
return CopyBufferToImage2D(tex,buf,buffer_image_copy,miplevel,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
}
bool GPUDevice::ChangeTexture2D(Texture2D *tex,DeviceBuffer *buf,const List<Image2DRegion> &ir_list,VkPipelineStageFlags destinationStage)
@@ -178,7 +178,7 @@ bool GPUDevice::ChangeTexture2D(Texture2D *tex,DeviceBuffer *buf,const List<Imag
}
texture_cmd_buf->Begin();
bool result=CopyBufferToImage(tex,buf,buffer_image_copy,ir_count,1,destinationStage);
bool result=CopyBufferToImage2D(tex,buf,buffer_image_copy,ir_count,destinationStage);
texture_cmd_buf->End();
SubmitTexture(*texture_cmd_buf);
return result;
@@ -196,7 +196,7 @@ bool GPUDevice::ChangeTexture2D(Texture2D *tex,DeviceBuffer *buf,const RectScope
BufferImageCopy buffer_image_copy(tex,scope);
texture_cmd_buf->Begin();
bool result=CopyBufferToImage(tex,buf,&buffer_image_copy,1,1,destinationStage);
bool result=CopyBufferToImage2D(tex,buf,&buffer_image_copy,1,destinationStage);
texture_cmd_buf->End();
SubmitTexture(*texture_cmd_buf);
return result;