From daff17c776b8ee5f7fc31eda12b0a196a2aa189c Mon Sep 17 00:00:00 2001 From: PixelyIon Date: Wed, 8 Dec 2021 14:20:39 +0530 Subject: [PATCH] Order `TextureView` Definition Correctly The definition of the `TextureView` class was spread across `texture.cpp` and has now been moved to the top of the file above the other half of the definition. --- .../main/cpp/skyline/gpu/texture/texture.cpp | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/app/src/main/cpp/skyline/gpu/texture/texture.cpp b/app/src/main/cpp/skyline/gpu/texture/texture.cpp index c700889b..bbe4dc94 100644 --- a/app/src/main/cpp/skyline/gpu/texture/texture.cpp +++ b/app/src/main/cpp/skyline/gpu/texture/texture.cpp @@ -8,6 +8,34 @@ #include "copy.h" namespace skyline::gpu { + TextureView::TextureView(std::shared_ptr texture, vk::ImageViewType type, vk::ImageSubresourceRange range, texture::Format format, vk::ComponentMapping mapping) : texture(std::move(texture)), type(type), format(format), mapping(mapping), range(range) {} + + vk::ImageView TextureView::GetView() { + if (view) + return **view; + + auto viewType{[&]() { + switch (texture->dimensions.GetType()) { + case vk::ImageType::e1D: + return range.layerCount > 1 ? vk::ImageViewType::e1DArray : vk::ImageViewType::e1D; + case vk::ImageType::e2D: + return range.layerCount > 1 ? vk::ImageViewType::e2DArray : vk::ImageViewType::e2D; + case vk::ImageType::e3D: + return vk::ImageViewType::e3D; + } + }()}; + + vk::ImageViewCreateInfo createInfo{ + .image = texture->GetBacking(), + .viewType = viewType, + .format = format ? *format : *texture->format, + .components = mapping, + .subresourceRange = range, + }; + + return *view.emplace(texture->gpu.vkDevice, createInfo); + } + void TextureView::lock() { auto backing{std::atomic_load(&texture)}; while (true) { @@ -521,32 +549,4 @@ namespace skyline::gpu { Texture::~Texture() { WaitOnFence(); } - - TextureView::TextureView(std::shared_ptr texture, vk::ImageViewType type, vk::ImageSubresourceRange range, texture::Format format, vk::ComponentMapping mapping) : texture(std::move(texture)), type(type), format(format), mapping(mapping), range(range) {} - - vk::ImageView TextureView::GetView() { - if (view) - return **view; - - auto viewType{[&]() { - switch (texture->dimensions.GetType()) { - case vk::ImageType::e1D: - return range.layerCount > 1 ? vk::ImageViewType::e1DArray : vk::ImageViewType::e1D; - case vk::ImageType::e2D: - return range.layerCount > 1 ? vk::ImageViewType::e2DArray : vk::ImageViewType::e2D; - case vk::ImageType::e3D: - return vk::ImageViewType::e3D; - } - }()}; - - vk::ImageViewCreateInfo createInfo{ - .image = texture->GetBacking(), - .viewType = viewType, - .format = format ? *format : *texture->format, - .components = mapping, - .subresourceRange = range, - }; - - return *view.emplace(texture->gpu.vkDevice, createInfo); - } }