added CopyBufferToImage2D and use it.
This commit is contained in:
parent
322d24c4ca
commit
22099b6b84
@ -155,13 +155,13 @@ private: //texture
|
|||||||
|
|
||||||
bool CopyBufferToImage (const CopyBufferToImageInfo *info,VkPipelineStageFlags destinationStage);
|
bool CopyBufferToImage (const CopyBufferToImageInfo *info,VkPipelineStageFlags destinationStage);
|
||||||
|
|
||||||
bool CopyBufferToImage (Texture *,DeviceBuffer *buf,const VkBufferImageCopy *,const int count,const uint32_t layer_count,VkPipelineStageFlags);//=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
bool CopyBufferToImage (Texture *,DeviceBuffer *buf,const VkBufferImageCopy *,const int count,const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags);//=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
|
||||||
bool CopyBufferToImage (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic_list,const int bic_count, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic_list, bic_count, 1,dstStage);}
|
bool CopyBufferToImage2D (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic_list,const int bic_count, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic_list, bic_count, 0,1,dstStage);}
|
||||||
bool CopyBufferToImage (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic, 1, 1,dstStage);}
|
bool CopyBufferToImage2D (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic, 1, 0,1,dstStage);}
|
||||||
|
|
||||||
bool CopyBufferToImageCube (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic_list,const int bic_count, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic_list, bic_count, 6,dstStage);}
|
bool CopyBufferToImageCube (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic_list,const int bic_count, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic_list, bic_count, 0,6,dstStage);}
|
||||||
bool CopyBufferToImageCube (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic, 1, 6,dstStage);}
|
bool CopyBufferToImageCube (Texture *tex,DeviceBuffer *buf,const VkBufferImageCopy *bic, VkPipelineStageFlags dstStage){return CopyBufferToImage(tex,buf,bic, 1, 0,6,dstStage);}
|
||||||
|
|
||||||
bool CommitTexture2D (Texture2D *,DeviceBuffer *buf,VkPipelineStageFlags stage);
|
bool CommitTexture2D (Texture2D *,DeviceBuffer *buf,VkPipelineStageFlags stage);
|
||||||
bool CommitTexture2DMipmaps (Texture2D *,DeviceBuffer *buf,const VkExtent3D &,uint32_t);
|
bool CommitTexture2DMipmaps (Texture2D *,DeviceBuffer *buf,const VkExtent3D &,uint32_t);
|
||||||
@ -193,6 +193,10 @@ public: //Texture
|
|||||||
bool ChangeTexture2D(Texture2D *,DeviceBuffer *buf, const RectScope2ui &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
bool ChangeTexture2D(Texture2D *,DeviceBuffer *buf, const RectScope2ui &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
bool ChangeTexture2D(Texture2D *,void *data,const uint32_t size,const RectScope2ui &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
bool ChangeTexture2D(Texture2D *,void *data,const uint32_t size,const RectScope2ui &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
|
||||||
|
// bool ChangeTexture2DArray(Texture2DArray *,DeviceBuffer *buf, const List<Image2DRegion> &, const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
bool ChangeTexture2DArray(Texture2DArray *,DeviceBuffer *buf, const RectScope2ui &, const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
bool ChangeTexture2DArray(Texture2DArray *,void *data,const uint32_t size,const RectScope2ui &, const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
|
||||||
public: //
|
public: //
|
||||||
|
|
||||||
Sampler *CreateSampler(VkSamplerCreateInfo *sci=nullptr);
|
Sampler *CreateSampler(VkSamplerCreateInfo *sci=nullptr);
|
||||||
|
@ -75,7 +75,7 @@ bool GPUDevice::CopyBufferToImage(const CopyBufferToImageInfo *info,VkPipelineSt
|
|||||||
return(true);
|
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)
|
if(!tex||!buf)
|
||||||
return(false);
|
return(false);
|
||||||
@ -88,7 +88,7 @@ bool GPUDevice::CopyBufferToImage(Texture *tex,DeviceBuffer *buf,const VkBufferI
|
|||||||
info.isr.aspectMask =tex->GetAspect();
|
info.isr.aspectMask =tex->GetAspect();
|
||||||
info.isr.baseMipLevel =0;
|
info.isr.baseMipLevel =0;
|
||||||
info.isr.levelCount =tex->GetMipLevel();
|
info.isr.levelCount =tex->GetMipLevel();
|
||||||
info.isr.baseArrayLayer =0;
|
info.isr.baseArrayLayer =base_layer;
|
||||||
info.isr.layerCount =layer_count;
|
info.isr.layerCount =layer_count;
|
||||||
|
|
||||||
info.bic_list =buffer_image_copy;
|
info.bic_list =buffer_image_copy;
|
||||||
|
@ -95,7 +95,7 @@ bool GPUDevice::CommitTexture2D(Texture2D *tex,DeviceBuffer *buf,VkPipelineStage
|
|||||||
|
|
||||||
BufferImageCopy buffer_image_copy(tex);
|
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)
|
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;}
|
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)
|
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();
|
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();
|
texture_cmd_buf->End();
|
||||||
SubmitTexture(*texture_cmd_buf);
|
SubmitTexture(*texture_cmd_buf);
|
||||||
return result;
|
return result;
|
||||||
@ -196,7 +196,7 @@ bool GPUDevice::ChangeTexture2D(Texture2D *tex,DeviceBuffer *buf,const RectScope
|
|||||||
BufferImageCopy buffer_image_copy(tex,scope);
|
BufferImageCopy buffer_image_copy(tex,scope);
|
||||||
|
|
||||||
texture_cmd_buf->Begin();
|
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();
|
texture_cmd_buf->End();
|
||||||
SubmitTexture(*texture_cmd_buf);
|
SubmitTexture(*texture_cmd_buf);
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user