deleted miplevel param at CommitTexture2D&ChangeTexture2D functions.
This commit is contained in:
parent
fc8e794eb8
commit
4c4d81c116
@ -145,9 +145,9 @@ public: //Image
|
|||||||
|
|
||||||
private: //texture
|
private: //texture
|
||||||
|
|
||||||
bool CommitTexture2D (Texture2D *,GPUBuffer *buf,uint32_t width,uint32_t height,const uint32_t miplevel,VkPipelineStageFlags stage);
|
bool CommitTexture2D (Texture2D *,GPUBuffer *buf,uint32_t width,uint32_t height,VkPipelineStageFlags stage);
|
||||||
bool CommitTexture2DMipmaps (Texture2D *,GPUBuffer *buf,uint32_t width,uint32_t height,uint32_t miplevel,uint32_t);
|
bool CommitTexture2DMipmaps (Texture2D *,GPUBuffer *buf,uint32_t width,uint32_t height,uint32_t);
|
||||||
bool CommitTexture2D (Texture2D *,GPUBuffer *buf,const VkBufferImageCopy *,const int count,const uint32_t miplevel=1,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
bool CommitTexture2D (Texture2D *,GPUBuffer *buf,const VkBufferImageCopy *,const int count,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
|
||||||
public: //Texture
|
public: //Texture
|
||||||
|
|
||||||
@ -160,9 +160,9 @@ public: //Texture
|
|||||||
|
|
||||||
void Clear(TextureCreateInfo *);
|
void Clear(TextureCreateInfo *);
|
||||||
|
|
||||||
bool ChangeTexture2D(Texture2D *,GPUBuffer *buf,const List<ImageRegion> &, const uint32_t miplevel=1,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
bool ChangeTexture2D(Texture2D *,GPUBuffer *buf,const List<ImageRegion> &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
bool ChangeTexture2D(Texture2D *,GPUBuffer *buf,uint32_t left,uint32_t top,uint32_t width,uint32_t height, const uint32_t miplevel=1,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
bool ChangeTexture2D(Texture2D *,GPUBuffer *buf,uint32_t left,uint32_t top,uint32_t width,uint32_t height, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
bool ChangeTexture2D(Texture2D *,void *data, uint32_t left,uint32_t top,uint32_t width,uint32_t height,uint32_t size,const uint32_t miplevel=1,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
bool ChangeTexture2D(Texture2D *,void *data, uint32_t left,uint32_t top,uint32_t width,uint32_t height,uint32_t size,VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,const RectScope2<T> &rs)
|
bool ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,const RectScope2<T> &rs)
|
||||||
|
@ -68,9 +68,7 @@ namespace
|
|||||||
blit.srcSubresource.layerCount = 1;
|
blit.srcSubresource.layerCount = 1;
|
||||||
|
|
||||||
blit.dstOffsets[0] = {0, 0, 0};
|
blit.dstOffsets[0] = {0, 0, 0};
|
||||||
blit.dstSubresource.aspectMask = aspect_mask;
|
blit.dstSubresource=blit.srcSubresource;
|
||||||
blit.dstSubresource.baseArrayLayer = 0;
|
|
||||||
blit.dstSubresource.layerCount = 1;
|
|
||||||
|
|
||||||
int32_t width =extent.width;
|
int32_t width =extent.width;
|
||||||
int32_t height =extent.height;
|
int32_t height =extent.height;
|
||||||
@ -203,17 +201,17 @@ Texture2D *GPUDevice::CreateTexture2D(TextureCreateInfo *tci)
|
|||||||
{
|
{
|
||||||
if(tci->target_mipmaps<=1) //本身不含mipmaps,但也不要mipmaps
|
if(tci->target_mipmaps<=1) //本身不含mipmaps,但也不要mipmaps
|
||||||
{
|
{
|
||||||
CommitTexture2D(tex,tci->buffer,tci->extent.width,tci->extent.height,tex_data->miplevel,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
CommitTexture2D(tex,tci->buffer,tci->extent.width,tci->extent.height,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
}
|
}
|
||||||
else //本身有mipmaps数据
|
else //本身有mipmaps数据
|
||||||
{
|
{
|
||||||
CommitTexture2DMipmaps(tex,tci->buffer,tci->extent.width,tci->extent.height,tex_data->miplevel,tci->mipmap_zero_total_bytes);
|
CommitTexture2DMipmaps(tex,tci->buffer,tci->extent.width,tci->extent.height,tci->mipmap_zero_total_bytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(tci->origin_mipmaps<=1) //本身不含mipmaps数据,又想要mipmaps
|
if(tci->origin_mipmaps<=1) //本身不含mipmaps数据,又想要mipmaps
|
||||||
{
|
{
|
||||||
CommitTexture2D(tex,tci->buffer,tci->extent.width,tci->extent.height,tex_data->miplevel,VK_PIPELINE_STAGE_TRANSFER_BIT);
|
CommitTexture2D(tex,tci->buffer,tci->extent.width,tci->extent.height,VK_PIPELINE_STAGE_TRANSFER_BIT);
|
||||||
GenerateMipmaps(texture_cmd_buf,tex->GetImage(),tex->GetAspect(),tci->extent,tex_data->miplevel);
|
GenerateMipmaps(texture_cmd_buf,tex->GetImage(),tex->GetAspect(),tci->extent,tex_data->miplevel);
|
||||||
}
|
}
|
||||||
texture_cmd_buf->End();
|
texture_cmd_buf->End();
|
||||||
@ -227,12 +225,12 @@ Texture2D *GPUDevice::CreateTexture2D(TextureCreateInfo *tci)
|
|||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GPUDevice::CommitTexture2D(Texture2D *tex,GPUBuffer *buf,const VkBufferImageCopy *buffer_image_copy,const int count,const uint32_t miplevel,VkPipelineStageFlags destinationStage)
|
bool GPUDevice::CommitTexture2D(Texture2D *tex,GPUBuffer *buf,const VkBufferImageCopy *buffer_image_copy,const int count,VkPipelineStageFlags destinationStage)
|
||||||
{
|
{
|
||||||
if(!tex||!buf)
|
if(!tex||!buf)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
ImageSubresourceRange subresourceRange(tex->GetAspect(),miplevel);
|
ImageSubresourceRange subresourceRange(tex->GetAspect(),tex->GetMipLevel());
|
||||||
|
|
||||||
texture_cmd_buf->ImageMemoryBarrier(tex->GetImage(),
|
texture_cmd_buf->ImageMemoryBarrier(tex->GetImage(),
|
||||||
VK_PIPELINE_STAGE_HOST_BIT,
|
VK_PIPELINE_STAGE_HOST_BIT,
|
||||||
@ -276,21 +274,23 @@ bool GPUDevice::CommitTexture2D(Texture2D *tex,GPUBuffer *buf,const VkBufferImag
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GPUDevice::CommitTexture2D(Texture2D *tex,GPUBuffer *buf,uint32_t width,uint32_t height,const uint32_t miplevel,VkPipelineStageFlags destinationStage)
|
bool GPUDevice::CommitTexture2D(Texture2D *tex,GPUBuffer *buf,uint32_t width,uint32_t height,VkPipelineStageFlags destinationStage)
|
||||||
{
|
{
|
||||||
if(!tex||!buf)return(false);
|
if(!tex||!buf)return(false);
|
||||||
|
|
||||||
BufferImageCopy buffer_image_copy(tex);
|
BufferImageCopy buffer_image_copy(tex);
|
||||||
|
|
||||||
return CommitTexture2D(tex,buf,&buffer_image_copy,1,miplevel,destinationStage);
|
return CommitTexture2D(tex,buf,&buffer_image_copy,1,destinationStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,GPUBuffer *buf,uint32_t width,uint32_t height,uint32_t miplevel,uint32_t total_bytes)
|
bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,GPUBuffer *buf,uint32_t width,uint32_t height,uint32_t total_bytes)
|
||||||
{
|
{
|
||||||
if(!tex||!buf
|
if(!tex||!buf
|
||||||
||width<=0||height<=0)
|
||width<=0||height<=0)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
const uint32_t miplevel=tex->GetMipLevel();
|
||||||
|
|
||||||
AutoDeleteArray<VkBufferImageCopy> buffer_image_copy(miplevel);
|
AutoDeleteArray<VkBufferImageCopy> buffer_image_copy(miplevel);
|
||||||
|
|
||||||
VkDeviceSize offset=0;
|
VkDeviceSize offset=0;
|
||||||
@ -323,10 +323,10 @@ bool GPUDevice::CommitTexture2DMipmaps(Texture2D *tex,GPUBuffer *buf,uint32_t wi
|
|||||||
if(height>1){height>>=1;total_bytes>>=1;}
|
if(height>1){height>>=1;total_bytes>>=1;}
|
||||||
}
|
}
|
||||||
|
|
||||||
return CommitTexture2D(tex,buf,buffer_image_copy,miplevel,miplevel,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
return CommitTexture2D(tex,buf,buffer_image_copy,miplevel,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GPUDevice::ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,const List<ImageRegion> &ir_list,const uint32_t miplevel,VkPipelineStageFlags destinationStage)
|
bool GPUDevice::ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,const List<ImageRegion> &ir_list,VkPipelineStageFlags destinationStage)
|
||||||
{
|
{
|
||||||
if(!tex||!buf||ir_list.GetCount()<=0)
|
if(!tex||!buf||ir_list.GetCount()<=0)
|
||||||
return(false);
|
return(false);
|
||||||
@ -360,13 +360,13 @@ bool GPUDevice::ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,const List<ImageRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
texture_cmd_buf->Begin();
|
texture_cmd_buf->Begin();
|
||||||
bool result=CommitTexture2D(tex,buf,buffer_image_copy,ir_count,miplevel,destinationStage);
|
bool result=CommitTexture2D(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;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GPUDevice::ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,uint32_t left,uint32_t top,uint32_t width,uint32_t height,const uint32_t miplevel,VkPipelineStageFlags destinationStage)
|
bool GPUDevice::ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,uint32_t left,uint32_t top,uint32_t width,uint32_t height,VkPipelineStageFlags destinationStage)
|
||||||
{
|
{
|
||||||
if(!tex||!buf
|
if(!tex||!buf
|
||||||
||left<0||left+width>tex->GetWidth()
|
||left<0||left+width>tex->GetWidth()
|
||||||
@ -377,13 +377,13 @@ bool GPUDevice::ChangeTexture2D(Texture2D *tex,GPUBuffer *buf,uint32_t left,uint
|
|||||||
BufferImageCopy buffer_image_copy(tex);
|
BufferImageCopy buffer_image_copy(tex);
|
||||||
|
|
||||||
texture_cmd_buf->Begin();
|
texture_cmd_buf->Begin();
|
||||||
bool result=CommitTexture2D(tex,buf,&buffer_image_copy,1,miplevel,destinationStage);
|
bool result=CommitTexture2D(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;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GPUDevice::ChangeTexture2D(Texture2D *tex,void *data,uint32_t left,uint32_t top,uint32_t width,uint32_t height,uint32_t size,const uint32_t miplevel,VkPipelineStageFlags destinationStage)
|
bool GPUDevice::ChangeTexture2D(Texture2D *tex,void *data,uint32_t left,uint32_t top,uint32_t width,uint32_t height,uint32_t size,VkPipelineStageFlags destinationStage)
|
||||||
{
|
{
|
||||||
if(!tex||!data
|
if(!tex||!data
|
||||||
||left<0||left+width>tex->GetWidth()
|
||left<0||left+width>tex->GetWidth()
|
||||||
@ -394,7 +394,7 @@ bool GPUDevice::ChangeTexture2D(Texture2D *tex,void *data,uint32_t left,uint32_t
|
|||||||
|
|
||||||
GPUBuffer *buf=CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,size,data);
|
GPUBuffer *buf=CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,size,data);
|
||||||
|
|
||||||
bool result=ChangeTexture2D(tex,buf,left,top,width,height,miplevel,destinationStage);
|
bool result=ChangeTexture2D(tex,buf,left,top,width,height,destinationStage);
|
||||||
|
|
||||||
delete buf;
|
delete buf;
|
||||||
return(result);
|
return(result);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user