summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_texture_cache.cpp
diff options
context:
space:
mode:
authorRodrigo Locatti <reinuseslisp@airmail.cc>2021-02-13 22:08:50 +0100
committerameerj <52414509+ameerj@users.noreply.github.com>2021-03-13 18:16:03 +0100
commit2f30c105849c214345e2201f4bd6f9b4b76ab4a1 (patch)
tree5e5889a44af4194fcf22d1375bdf9f91b5302dc1 /src/video_core/renderer_vulkan/vk_texture_cache.cpp
parentastc_decoder: Fix out of bounds memory access (diff)
downloadyuzu-2f30c105849c214345e2201f4bd6f9b4b76ab4a1.tar
yuzu-2f30c105849c214345e2201f4bd6f9b4b76ab4a1.tar.gz
yuzu-2f30c105849c214345e2201f4bd6f9b4b76ab4a1.tar.bz2
yuzu-2f30c105849c214345e2201f4bd6f9b4b76ab4a1.tar.lz
yuzu-2f30c105849c214345e2201f4bd6f9b4b76ab4a1.tar.xz
yuzu-2f30c105849c214345e2201f4bd6f9b4b76ab4a1.tar.zst
yuzu-2f30c105849c214345e2201f4bd6f9b4b76ab4a1.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_texture_cache.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp46
1 files changed, 25 insertions, 21 deletions
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
index f7f744587..18155e449 100644
--- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
@@ -823,27 +823,31 @@ Image::Image(TextureCacheRuntime& runtime, const ImageInfo& info_, GPUVAddr gpu_
.usage = VK_IMAGE_USAGE_STORAGE_BIT,
};
if (IsPixelFormatASTC(info.format) && !runtime.device.IsOptimalAstcSupported()) {
- storage_image_view = runtime.device.GetLogical().CreateImageView(VkImageViewCreateInfo{
- .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
- .pNext = &storage_image_view_usage_create_info,
- .flags = 0,
- .image = *image,
- .viewType = VK_IMAGE_VIEW_TYPE_2D,
- .format = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
- .components{
- .r = VK_COMPONENT_SWIZZLE_IDENTITY,
- .g = VK_COMPONENT_SWIZZLE_IDENTITY,
- .b = VK_COMPONENT_SWIZZLE_IDENTITY,
- .a = VK_COMPONENT_SWIZZLE_IDENTITY,
- },
- .subresourceRange{
- .aspectMask = aspect_mask,
- .baseMipLevel = 0,
- .levelCount = VK_REMAINING_MIP_LEVELS,
- .baseArrayLayer = 0,
- .layerCount = VK_REMAINING_ARRAY_LAYERS,
- },
- });
+ const auto& device = runtime.device.GetLogical();
+ storage_image_views.reserve(info.resources.levels);
+ for (s32 level = 0; level < info.resources.levels; ++level) {
+ storage_image_views.push_back(device.CreateImageView(VkImageViewCreateInfo{
+ .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
+ .pNext = &storage_image_view_usage_create_info,
+ .flags = 0,
+ .image = *image,
+ .viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
+ .format = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
+ .components{
+ .r = VK_COMPONENT_SWIZZLE_IDENTITY,
+ .g = VK_COMPONENT_SWIZZLE_IDENTITY,
+ .b = VK_COMPONENT_SWIZZLE_IDENTITY,
+ .a = VK_COMPONENT_SWIZZLE_IDENTITY,
+ },
+ .subresourceRange{
+ .aspectMask = aspect_mask,
+ .baseMipLevel = static_cast<u32>(level),
+ .levelCount = 1,
+ .baseArrayLayer = 0,
+ .layerCount = VK_REMAINING_ARRAY_LAYERS,
+ },
+ }));
+ }
}
}