diff options
author | Fernando S <fsahmkow27@gmail.com> | 2023-06-18 00:02:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-18 00:02:05 +0200 |
commit | 27a36cd51bbc832b0b73cbbaef6bd8453368a38d (patch) | |
tree | 00a30700c65665e2eaf2b02f03d73585c4d4f790 /src/video_core/renderer_vulkan/pipeline_helper.h | |
parent | Merge pull request #10783 from liamwhite/memory (diff) | |
parent | video_core: Only apply AF to 2D (array) image types (diff) | |
download | yuzu-27a36cd51bbc832b0b73cbbaef6bd8453368a38d.tar yuzu-27a36cd51bbc832b0b73cbbaef6bd8453368a38d.tar.gz yuzu-27a36cd51bbc832b0b73cbbaef6bd8453368a38d.tar.bz2 yuzu-27a36cd51bbc832b0b73cbbaef6bd8453368a38d.tar.lz yuzu-27a36cd51bbc832b0b73cbbaef6bd8453368a38d.tar.xz yuzu-27a36cd51bbc832b0b73cbbaef6bd8453368a38d.tar.zst yuzu-27a36cd51bbc832b0b73cbbaef6bd8453368a38d.zip |
Diffstat (limited to 'src/video_core/renderer_vulkan/pipeline_helper.h')
-rw-r--r-- | src/video_core/renderer_vulkan/pipeline_helper.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/video_core/renderer_vulkan/pipeline_helper.h b/src/video_core/renderer_vulkan/pipeline_helper.h index 983e1c2e1..71c783709 100644 --- a/src/video_core/renderer_vulkan/pipeline_helper.h +++ b/src/video_core/renderer_vulkan/pipeline_helper.h @@ -178,7 +178,7 @@ public: inline void PushImageDescriptors(TextureCache& texture_cache, GuestDescriptorQueue& guest_descriptor_queue, const Shader::Info& info, RescalingPushConstant& rescaling, - const VkSampler*& samplers, + const VideoCommon::SamplerId*& samplers, const VideoCommon::ImageViewInOut*& views) { const u32 num_texture_buffers = Shader::NumDescriptors(info.texture_buffer_descriptors); const u32 num_image_buffers = Shader::NumDescriptors(info.image_buffer_descriptors); @@ -187,10 +187,15 @@ inline void PushImageDescriptors(TextureCache& texture_cache, for (const auto& desc : info.texture_descriptors) { for (u32 index = 0; index < desc.count; ++index) { const VideoCommon::ImageViewId image_view_id{(views++)->id}; - const VkSampler sampler{*(samplers++)}; + const VideoCommon::SamplerId sampler_id{*(samplers++)}; ImageView& image_view{texture_cache.GetImageView(image_view_id)}; const VkImageView vk_image_view{image_view.Handle(desc.type)}; - guest_descriptor_queue.AddSampledImage(vk_image_view, sampler); + const Sampler& sampler{texture_cache.GetSampler(sampler_id)}; + const bool use_fallback_sampler{sampler.HasAddedAnisotropy() && + !image_view.SupportsAnisotropy()}; + const VkSampler vk_sampler{use_fallback_sampler ? sampler.HandleWithDefaultAnisotropy() + : sampler.Handle()}; + guest_descriptor_queue.AddSampledImage(vk_image_view, vk_sampler); rescaling.PushTexture(texture_cache.IsRescaling(image_view)); } } |