use ImageTiling instead VkImageTiling

This commit is contained in:
hyzboy 2020-09-02 18:36:24 +08:00
parent 66f761385e
commit 1e6e0e305c
8 changed files with 87 additions and 81 deletions

View File

@ -67,6 +67,12 @@ enum class SharingMode
Concurrent
};//
enum ImageTiling
{
Optimal=0,
Linear
};//
enum class ShaderStageBit
{
Vertex =VK_SHADER_STAGE_VERTEX_BIT,

View File

@ -62,12 +62,12 @@ public: //Add
public: //Create
VAB *CreateVAB(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
VAB *CreateVAB(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(format,count,nullptr,sharing_mode);}
VAB *CreateVAB(const VAD *vad,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(vad->GetVulkanFormat(),vad->GetCount(),vad->GetData(),sharing_mode);}
VAB *CreateVAB(VkFormat format,uint32_t count,const void *data,SharingMode sm=SharingMode::Exclusive);
VAB *CreateVAB(VkFormat format,uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateVAB(format,count,nullptr,sm);}
VAB *CreateVAB(const VAD *vad,SharingMode sm=SharingMode::Exclusive){return CreateVAB(vad->GetVulkanFormat(),vad->GetCount(),vad->GetData(),sm);}
#define SCENE_DB_CREATE_FUNC(name) Buffer *Create##name(VkDeviceSize size,void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); \
Buffer *Create##name(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
#define SCENE_DB_CREATE_FUNC(name) Buffer *Create##name(VkDeviceSize size,void *data,SharingMode sm=SharingMode::Exclusive); \
Buffer *Create##name(VkDeviceSize size,SharingMode sm=SharingMode::Exclusive);
SCENE_DB_CREATE_FUNC(UBO)
SCENE_DB_CREATE_FUNC(SSBO)
@ -75,13 +75,13 @@ public: //Create
#undef SCENE_DB_CREATE_FUNC
IndexBuffer *CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
IndexBuffer *CreateIBO16(uint32_t count,const uint16 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);}
IndexBuffer *CreateIBO32(uint32_t count,const uint32 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT32,count,(void *)data,sharing_mode);}
IndexBuffer *CreateIBO(VkIndexType index_type,uint32_t count,const void *data,SharingMode sm=SharingMode::Exclusive);
IndexBuffer *CreateIBO16(uint32_t count,const uint16 *data,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sm);}
IndexBuffer *CreateIBO32(uint32_t count,const uint32 *data,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,(void *)data,sm);}
IndexBuffer *CreateIBO(VkIndexType index_type,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(index_type,count,nullptr,sharing_mode);}
IndexBuffer *CreateIBO16(uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,nullptr,sharing_mode);}
IndexBuffer *CreateIBO32(uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT32,count,nullptr,sharing_mode);}
IndexBuffer *CreateIBO(VkIndexType index_type,uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(index_type,count,nullptr,sm);}
IndexBuffer *CreateIBO16(uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,nullptr,sm);}
IndexBuffer *CreateIBO32(uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,nullptr,sm);}
MaterialInstance * CreateMaterialInstance(Material *);
Renderable * CreateRenderable(Material *,const uint32_t vertex_count=0);

View File

@ -86,27 +86,27 @@ public: //内存相关
private: //Buffer相关
bool CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode);
bool CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,SharingMode sharing_mode);
public: //Buffer相关
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data, VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size, VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(buf_usage,size,nullptr,sharing_mode);}
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data, SharingMode sharing_mode=SharingMode::Exclusive);
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size, SharingMode sharing_mode=SharingMode::Exclusive){return CreateBuffer(buf_usage,size,nullptr,sharing_mode);}
VAB * CreateVAB (VkFormat format,uint32_t count,const void *data, VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
VAB * CreateVAB (VkFormat format,uint32_t count, VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(format,count,nullptr,sharing_mode);}
VAB * CreateVAB (const VAD *vad, VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVAB(vad->GetVulkanFormat(),vad->GetCount(),vad->GetData(),sharing_mode);}
VAB * CreateVAB (VkFormat format,uint32_t count,const void *data, SharingMode sharing_mode=SharingMode::Exclusive);
VAB * CreateVAB (VkFormat format,uint32_t count, SharingMode sharing_mode=SharingMode::Exclusive){return CreateVAB(format,count,nullptr,sharing_mode);}
VAB * CreateVAB (const VAD *vad, SharingMode sharing_mode=SharingMode::Exclusive){return CreateVAB(vad->GetVulkanFormat(),vad->GetCount(),vad->GetData(),sharing_mode);}
IndexBuffer * CreateIBO (VkIndexType index_type,uint32_t count,const void * data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
IndexBuffer * CreateIBO16 ( uint32_t count,const uint16 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,const uint32 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT32,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO (VkIndexType index_type,uint32_t count,const void * data,SharingMode sharing_mode=SharingMode::Exclusive);
IndexBuffer * CreateIBO16 ( uint32_t count,const uint16 *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,const uint32 *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO (VkIndexType index_type,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(index_type,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO16 ( uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT32,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO (VkIndexType index_type,uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(index_type,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO16 ( uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,nullptr,sharing_mode);}
#define CREATE_BUFFER_OBJECT(LargeName,type) Buffer *Create##LargeName(VkDeviceSize size,void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,size,data,sharing_mode);} \
Buffer *Create##LargeName(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,size,nullptr,sharing_mode);}
#define CREATE_BUFFER_OBJECT(LargeName,type) Buffer *Create##LargeName(VkDeviceSize size,void *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,size,data,sharing_mode);} \
Buffer *Create##LargeName(VkDeviceSize size,SharingMode sharing_mode=SharingMode::Exclusive){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,size,nullptr,sharing_mode);}
CREATE_BUFFER_OBJECT(UBO,UNIFORM)
CREATE_BUFFER_OBJECT(SSBO,STORAGE)
@ -116,38 +116,38 @@ public: //Buffer相关
public: //Image
VkImage CreateImage1D (const VkFormat format,const uint32_t width, const uint usage,const VkImageTiling tiling);
VkImage CreateImage1DArray (const VkFormat format,const uint32_t width,const uint32_t layer, const uint usage,const VkImageTiling tiling);
VkImage CreateImage2D (const VkFormat format,const uint32_t width,const uint32_t height, const uint usage,const VkImageTiling tiling);
VkImage CreateImage2DArray (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t layer, const uint usage,const VkImageTiling tiling);
VkImage CreateImage3D (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t depth, const uint usage,const VkImageTiling tiling);
VkImage CreateCubemap (const VkFormat format,const uint32_t width,const uint32_t height, const uint usage,const VkImageTiling tiling);
// VkImage CreateCubemapArray (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t count, const uint usage,const VkImageTiling tiling);
VkImage CreateImage1D (const VkFormat format,const uint32_t width, const uint usage,const ImageTiling tiling);
VkImage CreateImage1DArray (const VkFormat format,const uint32_t width,const uint32_t layer, const uint usage,const ImageTiling tiling);
VkImage CreateImage2D (const VkFormat format,const uint32_t width,const uint32_t height, const uint usage,const ImageTiling tiling);
VkImage CreateImage2DArray (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t layer, const uint usage,const ImageTiling tiling);
VkImage CreateImage3D (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t depth, const uint usage,const ImageTiling tiling);
VkImage CreateCubemap (const VkFormat format,const uint32_t width,const uint32_t height, const uint usage,const ImageTiling tiling);
// VkImage CreateCubemapArray (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t count, const uint usage,const ImageTiling tiling);
void DestoryImage (VkImage);
public: //Texture
Texture2D *CreateTexture2D(Memory *mem,VkImage image,ImageView *image_view,VkImageLayout image_layout,VkImageTiling tiling);
Texture2D *CreateTexture2D(VkFormat format,uint32_t width,uint32_t height,VkImageAspectFlagBits aspectMask,VkImage image,VkImageLayout image_layout,VkImageTiling tiling=VK_IMAGE_TILING_OPTIMAL);
Texture2D *CreateTexture2D(Memory *mem,VkImage image,ImageView *image_view,VkImageLayout image_layout,ImageTiling tiling);
Texture2D *CreateTexture2D(VkFormat format,uint32_t width,uint32_t height,VkImageAspectFlagBits aspectMask,VkImage image,VkImageLayout image_layout,ImageTiling tiling=ImageTiling::Optimal);
Texture2D *CreateTexture2D(const VkFormat format,uint32_t width,uint32_t height,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,VkImageTiling tiling=VK_IMAGE_TILING_OPTIMAL);
Texture2D *CreateTexture2D(const VkFormat format,uint32_t width,uint32_t height,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,ImageTiling tiling=ImageTiling::Optimal);
Texture2D *CreateTexture2DColor(const VkFormat video_format,uint32_t width,uint32_t height,const VkImageTiling tiling=VK_IMAGE_TILING_OPTIMAL)
Texture2D *CreateTexture2DColor(const VkFormat video_format,uint32_t width,uint32_t height,const ImageTiling tiling=ImageTiling::Optimal)
{
return CreateTexture2D(video_format,width,height,
VK_IMAGE_ASPECT_COLOR_BIT,
VK_IMAGE_USAGE_TRANSFER_DST_BIT|VK_IMAGE_USAGE_SAMPLED_BIT,
(tiling==VK_IMAGE_TILING_OPTIMAL?VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:VK_IMAGE_LAYOUT_GENERAL),
(tiling==ImageTiling::Optimal?VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:VK_IMAGE_LAYOUT_GENERAL),
tiling);
}
Texture2D *CreateTexture2DDepth(const VkFormat video_format,uint32_t width,uint32_t height,const VkImageTiling tiling=VK_IMAGE_TILING_OPTIMAL)
Texture2D *CreateTexture2DDepth(const VkFormat video_format,uint32_t width,uint32_t height,const ImageTiling tiling=ImageTiling::Optimal)
{
return CreateTexture2D(video_format,width,height,
VK_IMAGE_ASPECT_DEPTH_BIT,
VK_IMAGE_USAGE_TRANSFER_DST_BIT|VK_IMAGE_USAGE_SAMPLED_BIT,
(tiling==VK_IMAGE_TILING_OPTIMAL?VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:VK_IMAGE_LAYOUT_GENERAL),
(tiling==ImageTiling::Optimal?VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:VK_IMAGE_LAYOUT_GENERAL),
tiling);
}
@ -176,13 +176,13 @@ public: //Texture
const VkImageAspectFlags aspectMask =VK_IMAGE_ASPECT_COLOR_BIT,
const uint usage =VK_IMAGE_USAGE_TRANSFER_DST_BIT|VK_IMAGE_USAGE_SAMPLED_BIT,
const VkImageLayout image_layout=VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
const VkImageTiling tiling =VK_IMAGE_TILING_OPTIMAL);
const ImageTiling tiling =ImageTiling::Optimal);
Texture2D *CreateTexture2D( const VkFormat video_format,void *data,uint32_t width,uint32_t height,uint32_t size,
const VkImageAspectFlags aspectMask =VK_IMAGE_ASPECT_COLOR_BIT,
const uint usage =VK_IMAGE_USAGE_TRANSFER_DST_BIT|VK_IMAGE_USAGE_SAMPLED_BIT,
const VkImageLayout image_layout=VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
const VkImageTiling tiling =VK_IMAGE_TILING_OPTIMAL);
const ImageTiling tiling =ImageTiling::Optimal);
bool ChangeTexture2D(Texture2D *,Buffer *buf,const VkBufferImageCopy *,const int count);
bool ChangeTexture2D(Texture2D *,Buffer *buf,const List<ImageRegion> &);

View File

@ -3,7 +3,7 @@
#include<hgl/graph/RenderableInstance.h>
VK_NAMESPACE_BEGIN
VAB *Database::CreateVAB(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode)
VAB *Database::CreateVAB(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
{
VAB *vb=device->CreateVAB(format,count,data,sharing_mode);
@ -15,7 +15,7 @@ VAB *Database::CreateVAB(VkFormat format,uint32_t count,const void *data,VkShari
return vb;
}
#define SCENE_DB_CREATE_BUFFER(name) Buffer *Database::Create##name(VkDeviceSize size,void *data,VkSharingMode sharing_mode) \
#define SCENE_DB_CREATE_BUFFER(name) Buffer *Database::Create##name(VkDeviceSize size,void *data,SharingMode sharing_mode) \
{ \
Buffer *buf=device->Create##name(size,data,sharing_mode); \
\
@ -24,7 +24,7 @@ VAB *Database::CreateVAB(VkFormat format,uint32_t count,const void *data,VkShari
return(buf); \
} \
\
Buffer *Database::Create##name(VkDeviceSize size,VkSharingMode sharing_mode) \
Buffer *Database::Create##name(VkDeviceSize size,SharingMode sharing_mode) \
{ \
Buffer *buf=device->Create##name(size,sharing_mode); \
\
@ -39,7 +39,7 @@ VAB *Database::CreateVAB(VkFormat format,uint32_t count,const void *data,VkShari
#undef SCENE_DB_CREATE_BUFFER
IndexBuffer *Database::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode)
IndexBuffer *Database::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,SharingMode sharing_mode)
{
IndexBuffer *buf=device->CreateIBO(index_type,count,data,sharing_mode);

View File

@ -2,17 +2,17 @@
#include<hgl/graph/vulkan/VKBuffer.h>
VK_NAMESPACE_BEGIN
bool Device::CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode)
bool Device::CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,SharingMode sharing_mode)
{
VkBufferCreateInfo buf_info={};
buf_info.sType =VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
buf_info.pNext =nullptr;
buf_info.usage =buf_usage;
buf_info.size =size;
buf_info.queueFamilyIndexCount =0;
buf_info.pQueueFamilyIndices =nullptr;
buf_info.sharingMode =sharing_mode;
buf_info.flags =0;
buf_info.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
buf_info.pNext = nullptr;
buf_info.usage = buf_usage;
buf_info.size = size;
buf_info.queueFamilyIndexCount = 0;
buf_info.pQueueFamilyIndices = nullptr;
buf_info.sharingMode = VkSharingMode(sharing_mode);
buf_info.flags = 0;
if(vkCreateBuffer(attr->device,&buf_info,nullptr,&buf->buffer)!=VK_SUCCESS)
return(false);
@ -44,7 +44,7 @@ bool Device::CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceS
return(false);
}
VAB *Device::CreateVAB(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode)
VAB *Device::CreateVAB(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
{
const uint32_t stride=GetStrideByFormat(format);
@ -64,7 +64,7 @@ VAB *Device::CreateVAB(VkFormat format,uint32_t count,const void *data,VkSharing
return(new VertexAttribBuffer(attr->device,buf,format,stride,count));
}
IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode)
IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,SharingMode sharing_mode)
{
uint32_t stride;
@ -82,7 +82,7 @@ IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,const void
return(new IndexBuffer(attr->device,buf,index_type,count));
}
Buffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode)
Buffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,SharingMode sharing_mode)
{
BufferData buf;

View File

@ -18,7 +18,7 @@ namespace
}
}//namespace
VkImage Device::CreateImage1D(const VkFormat format,const uint32_t length,const uint usage,const VkImageTiling tiling)
VkImage Device::CreateImage1D(const VkFormat format,const uint32_t length,const uint usage,const ImageTiling tiling)
{
if(!CheckVulkanFormat(format))return(nullptr);
if(length<1)return(nullptr);
@ -41,7 +41,7 @@ VkImage Device::CreateImage1D(const VkFormat format,const uint32_t length,const
imageCreateInfo.queueFamilyIndexCount = 0;
imageCreateInfo.pQueueFamilyIndices = nullptr;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.tiling = tiling;
imageCreateInfo.tiling = VkImageTiling(tiling);
VkImage image;
@ -51,7 +51,7 @@ VkImage Device::CreateImage1D(const VkFormat format,const uint32_t length,const
return image;
}
VkImage Device::CreateImage1DArray(const VkFormat format,const uint32_t length,const uint32_t layer,const uint usage,const VkImageTiling tiling)
VkImage Device::CreateImage1DArray(const VkFormat format,const uint32_t length,const uint32_t layer,const uint usage,const ImageTiling tiling)
{
if(!CheckVulkanFormat(format))return(nullptr);
if(length<1||layer<1)return(nullptr);
@ -74,7 +74,7 @@ VkImage Device::CreateImage1DArray(const VkFormat format,const uint32_t length,c
imageCreateInfo.queueFamilyIndexCount = 0;
imageCreateInfo.pQueueFamilyIndices = nullptr;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.tiling = tiling;
imageCreateInfo.tiling = VkImageTiling(tiling);
VkImage image;
@ -84,7 +84,7 @@ VkImage Device::CreateImage1DArray(const VkFormat format,const uint32_t length,c
return image;
}
VkImage Device::CreateImage2D(const VkFormat format,const uint32_t width,const uint32_t height,const uint usage,const VkImageTiling tiling)
VkImage Device::CreateImage2D(const VkFormat format,const uint32_t width,const uint32_t height,const uint usage,const ImageTiling tiling)
{
if(!CheckVulkanFormat(format))return(nullptr);
if(width<1||height<1)return(nullptr);
@ -107,7 +107,7 @@ VkImage Device::CreateImage2D(const VkFormat format,const uint32_t width,const u
imageCreateInfo.queueFamilyIndexCount = 0;
imageCreateInfo.pQueueFamilyIndices = nullptr;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.tiling = tiling;
imageCreateInfo.tiling = VkImageTiling(tiling);
VkImage image;
@ -117,7 +117,7 @@ VkImage Device::CreateImage2D(const VkFormat format,const uint32_t width,const u
return image;
}
VkImage Device::CreateImage2DArray(const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t layer,const uint usage,const VkImageTiling tiling)
VkImage Device::CreateImage2DArray(const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t layer,const uint usage,const ImageTiling tiling)
{
if(!CheckVulkanFormat(format))return(nullptr);
if(width<1||height<1)return(nullptr);
@ -140,7 +140,7 @@ VkImage Device::CreateImage2DArray(const VkFormat format,const uint32_t width,co
imageCreateInfo.queueFamilyIndexCount = 0;
imageCreateInfo.pQueueFamilyIndices = nullptr;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.tiling = tiling;
imageCreateInfo.tiling = VkImageTiling(tiling);
VkImage image;
@ -150,7 +150,7 @@ VkImage Device::CreateImage2DArray(const VkFormat format,const uint32_t width,co
return image;
}
VkImage Device::CreateImage3D(const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t depth,const uint usage,const VkImageTiling tiling)
VkImage Device::CreateImage3D(const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t depth,const uint usage,const ImageTiling tiling)
{
if(!CheckVulkanFormat(format))return(nullptr);
if(width<1||height<1)return(nullptr);
@ -173,7 +173,7 @@ VkImage Device::CreateImage3D(const VkFormat format,const uint32_t width,const u
imageCreateInfo.queueFamilyIndexCount = 0;
imageCreateInfo.pQueueFamilyIndices = nullptr;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.tiling = tiling;
imageCreateInfo.tiling = VkImageTiling(tiling);
VkImage image;
@ -183,7 +183,7 @@ VkImage Device::CreateImage3D(const VkFormat format,const uint32_t width,const u
return image;
}
VkImage Device::CreateCubemap(const VkFormat format,const uint32_t width,const uint32_t height,const uint usage,const VkImageTiling tiling)
VkImage Device::CreateCubemap(const VkFormat format,const uint32_t width,const uint32_t height,const uint usage,const ImageTiling tiling)
{
if(!CheckVulkanFormat(format))return(nullptr);
if(width<1||height<1)return(nullptr);
@ -206,7 +206,7 @@ VkImage Device::CreateCubemap(const VkFormat format,const uint32_t width,const u
imageCreateInfo.queueFamilyIndexCount = 0;
imageCreateInfo.pQueueFamilyIndices = nullptr;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.tiling = tiling;
imageCreateInfo.tiling = VkImageTiling(tiling);
VkImage image;

View File

@ -110,7 +110,7 @@ bool Device::CreateSwapchainDepthTexture()
VK_IMAGE_ASPECT_DEPTH_BIT,
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
VK_IMAGE_LAYOUT_UNDEFINED,
(props.optimalTilingFeatures&VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)?VK_IMAGE_TILING_OPTIMAL:VK_IMAGE_TILING_LINEAR);
(props.optimalTilingFeatures&VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)?ImageTiling::Optimal:ImageTiling::Linear);
return swapchain->sc_depth;
}

View File

@ -20,7 +20,7 @@ namespace
}
}//namespace
Texture2D *Device::CreateTexture2D(Memory *mem,VkImage image,ImageView *image_view,VkImageLayout image_layout,VkImageTiling tiling)
Texture2D *Device::CreateTexture2D(Memory *mem,VkImage image,ImageView *image_view,VkImageLayout image_layout,ImageTiling tiling)
{
TextureData *tex_data=new TextureData;
@ -30,12 +30,12 @@ Texture2D *Device::CreateTexture2D(Memory *mem,VkImage image,ImageView *image_vi
tex_data->image_view = image_view;
tex_data->mip_levels = 0;
tex_data->tiling = tiling;
tex_data->tiling = VkImageTiling(tiling);
return(new Texture2D(attr->device,tex_data));
}
Texture2D *Device::CreateTexture2D(VkFormat format,uint32_t width,uint32_t height,VkImageAspectFlagBits aspectMask,VkImage image,VkImageLayout image_layout,VkImageTiling tiling)
Texture2D *Device::CreateTexture2D(VkFormat format,uint32_t width,uint32_t height,VkImageAspectFlagBits aspectMask,VkImage image,VkImageLayout image_layout,ImageTiling tiling)
{
VkExtent3D extent={width,height,1};
@ -44,22 +44,22 @@ Texture2D *Device::CreateTexture2D(VkFormat format,uint32_t width,uint32_t heigh
return this->CreateTexture2D(nullptr,image,iv,image_layout,tiling);
}
Texture2D *Device::CreateTexture2D(const VkFormat format,uint32_t width,uint32_t height,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,VkImageTiling tiling)
Texture2D *Device::CreateTexture2D(const VkFormat format,uint32_t width,uint32_t height,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,ImageTiling tiling)
{
const VkFormatProperties fp=attr->physical_device->GetFormatProperties(format);
if(tiling==VK_IMAGE_TILING_OPTIMAL)
if(tiling==ImageTiling::Optimal)
{
if(fp.optimalTilingFeatures&VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)
tiling=VK_IMAGE_TILING_OPTIMAL;
tiling=ImageTiling::Optimal;
else
tiling=VK_IMAGE_TILING_LINEAR;
tiling=ImageTiling::Linear;
}
if(tiling==VK_IMAGE_TILING_LINEAR)
if(tiling==ImageTiling::Linear)
{
if(fp.linearTilingFeatures&VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)
tiling=VK_IMAGE_TILING_LINEAR;
tiling=ImageTiling::Linear;
else
return(nullptr);
}
@ -84,7 +84,7 @@ Texture2D *Device::CreateTexture2D(const VkFormat format,uint32_t width,uint32_t
return CreateTexture2D(mem,img,iv,image_layout,tiling);
}
Texture2D *Device::CreateTexture2D(const VkFormat format,Buffer *buf,uint32_t width,uint32_t height,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,const VkImageTiling tiling)
Texture2D *Device::CreateTexture2D(const VkFormat format,Buffer *buf,uint32_t width,uint32_t height,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,const ImageTiling tiling)
{
if(!buf)return(nullptr);
@ -97,7 +97,7 @@ Texture2D *Device::CreateTexture2D(const VkFormat format,Buffer *buf,uint32_t wi
return(tex);
}
Texture2D *Device::CreateTexture2D(const VkFormat format,void *data,uint32_t width,uint32_t height,uint32_t size,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,const VkImageTiling tiling)
Texture2D *Device::CreateTexture2D(const VkFormat format,void *data,uint32_t width,uint32_t height,uint32_t size,const VkImageAspectFlags aspectMask,const uint usage,const VkImageLayout image_layout,const ImageTiling tiling)
{
Buffer *buf=CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,size,data);