summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2023-12-09 19:00:11 -0600
committeriwubcode <iwubcode@users.noreply.github.com>2023-12-15 11:06:02 -0600
commit12dd15c8ddb587e2f76351b59e0097940061485b (patch)
tree0a0ba100b4b60b208ee5dfbeceeb73d6d990bb90 /Source/Core/VideoBackends/Vulkan/VKTexture.cpp
parent370474a7cbec12c9647b155f9d7cc4409c438df8 (diff)
VideoBackends / VideoCommon: add type enum to dictate whether a texture is a 2D texture, a texture array, or a cube map; support 2D texture type across backends
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
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;