summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
diff options
context:
space:
mode:
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;