diff options
author | Marshall Mohror <mohror64@gmail.com> | 2021-10-17 03:33:58 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-11-16 22:11:31 +0100 |
commit | 37cb0377ae30e2139f6fa381d04124e51fcccded (patch) | |
tree | a1cd811a61535d8aa8790a9ac0400b0e79976499 /src/video_core/renderer_vulkan/vk_fsr.h | |
parent | Texture Cache: Rescale conversions between depth and color (diff) | |
download | yuzu-37cb0377ae30e2139f6fa381d04124e51fcccded.tar yuzu-37cb0377ae30e2139f6fa381d04124e51fcccded.tar.gz yuzu-37cb0377ae30e2139f6fa381d04124e51fcccded.tar.bz2 yuzu-37cb0377ae30e2139f6fa381d04124e51fcccded.tar.lz yuzu-37cb0377ae30e2139f6fa381d04124e51fcccded.tar.xz yuzu-37cb0377ae30e2139f6fa381d04124e51fcccded.tar.zst yuzu-37cb0377ae30e2139f6fa381d04124e51fcccded.zip |
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_fsr.h')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_fsr.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_fsr.h b/src/video_core/renderer_vulkan/vk_fsr.h new file mode 100644 index 000000000..8391e2e58 --- /dev/null +++ b/src/video_core/renderer_vulkan/vk_fsr.h @@ -0,0 +1,54 @@ +// Copyright 2021 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "common/math_util.h" +#include "video_core/vulkan_common/vulkan_memory_allocator.h" +#include "video_core/vulkan_common/vulkan_wrapper.h" + +namespace Vulkan { + +class Device; +class VKScheduler; + +class FSR { +public: + explicit FSR(const Device& device, MemoryAllocator& memory_allocator, size_t image_count, + VkExtent2D output_size); + VkImageView Draw(VKScheduler& scheduler, size_t image_index, VkImageView image_view, + const Common::Rectangle<int>& crop_rect); + +private: + void CreateDescriptorPool(); + void CreateDescriptorSetLayout(); + void CreateDescriptorSets(); + void CreateImages(); + void CreateSampler(); + void CreateShaders(); + void CreatePipeline(); + void CreatePipelineLayout(); + + void UpdateDescriptorSet(std::size_t image_index, VkImageView image_view) const; + + const Device& device; + MemoryAllocator& memory_allocator; + size_t image_count; + VkExtent2D output_size; + + vk::DescriptorPool descriptor_pool; + vk::DescriptorSetLayout descriptor_set_layout; + vk::DescriptorSets descriptor_sets; + vk::PipelineLayout pipeline_layout; + vk::ShaderModule easu_shader; + vk::ShaderModule rcas_shader; + vk::Pipeline easu_pipeline; + vk::Pipeline rcas_pipeline; + vk::Sampler sampler; + std::vector<vk::Image> images; + std::vector<vk::ImageView> image_views; + std::vector<MemoryCommit> buffer_commits; +}; + +} // namespace Vulkan |