use ImageTiling instead VkImageTiling
This commit is contained in:
parent
66f761385e
commit
1e6e0e305c
@ -67,6 +67,12 @@ enum class SharingMode
|
||||
Concurrent
|
||||
};//
|
||||
|
||||
enum ImageTiling
|
||||
{
|
||||
Optimal=0,
|
||||
Linear
|
||||
};//
|
||||
|
||||
enum class ShaderStageBit
|
||||
{
|
||||
Vertex =VK_SHADER_STAGE_VERTEX_BIT,
|
||||
|
@ -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);
|
||||
|
@ -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> &);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
#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;
|
||||
@ -11,7 +11,7 @@ bool Device::CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceS
|
||||
buf_info.size = size;
|
||||
buf_info.queueFamilyIndexCount = 0;
|
||||
buf_info.pQueueFamilyIndices = nullptr;
|
||||
buf_info.sharingMode =sharing_mode;
|
||||
buf_info.sharingMode = VkSharingMode(sharing_mode);
|
||||
buf_info.flags = 0;
|
||||
|
||||
if(vkCreateBuffer(attr->device,&buf_info,nullptr,&buf->buffer)!=VK_SUCCESS)
|
||||
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user