summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
diff options
context:
space:
mode:
authorMai <mai.iam2048@gmail.com>2023-12-17 14:40:39 -0500
committerGitHub <noreply@github.com>2023-12-17 14:40:39 -0500
commitf589c04aa7684e72f9866d1d85e9cb32b3d281ca (patch)
treed5cf7a22f818ad48ee5c6f4e333772058b9660ab /Source/Core/VideoBackends/Vulkan/VKTexture.cpp
parente6c85bf8f09c54297bc71fd37432d7daa7f22bcc (diff)
parent12dd15c8ddb587e2f76351b59e0097940061485b (diff)
Merge pull request #12372 from iwubcode/texture_usage_flag
VideoBackends / VideoCommon: add type enum to dictate how the texture is used; support texture 2d
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/VKTexture.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/VKTexture.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/VKTexture.cpp b/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
index e80ce4f2f7..6756305d1e 100644
--- a/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
+++ b/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
@@ -70,8 +70,9 @@ std::unique_ptr<VKTexture> VKTexture::Create(const TextureConfig& tex_config, st
VkImageCreateInfo image_info = {VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
nullptr,
- tex_config.IsCubeMap() ? VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT :
- static_cast<VkImageCreateFlags>(0),
+ tex_config.type == AbstractTextureType::Texture_CubeMap ?
+ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT :
+ static_cast<VkImageCreateFlags>(0),
VK_IMAGE_TYPE_2D,
GetVkFormatForHostTextureFormat(tex_config.format),
{tex_config.width, tex_config.height, 1},
@@ -107,8 +108,26 @@ std::unique_ptr<VKTexture> VKTexture::Create(const TextureConfig& tex_config, st
std::unique_ptr<VKTexture> texture = std::make_unique<VKTexture>(
tex_config, alloc, image, name, VK_IMAGE_LAYOUT_UNDEFINED, ComputeImageLayout::Undefined);
- if (!texture->CreateView(tex_config.IsCubeMap() ? VK_IMAGE_VIEW_TYPE_CUBE :
- VK_IMAGE_VIEW_TYPE_2D_ARRAY))
+
+ VkImageViewType image_view_type = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
+ if (tex_config.type == AbstractTextureType::Texture_CubeMap)
+ {
+ image_view_type = VK_IMAGE_VIEW_TYPE_CUBE;
+ }
+ else if (tex_config.type == AbstractTextureType::Texture_2D)
+ {
+ image_view_type = VK_IMAGE_VIEW_TYPE_2D;
+ }
+ else if (tex_config.type == AbstractTextureType::Texture_2DArray)
+ {
+ image_view_type = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
+ }
+ else
+ {
+ PanicAlertFmt("Unhandled texture type.");
+ return nullptr;
+ }
+ if (!texture->CreateView(image_view_type))
return nullptr;
return texture;