diff options
| author | 2020-06-13 13:48:27 -0400 | |
|---|---|---|
| committer | 2020-06-13 13:48:27 -0400 | |
| commit | c2ea1e1bcb88f8e307e54cf588829a516b40258e (patch) | |
| tree | 3975cb756ef9d289cc13f3f6dc2a302dacc2c758 /src/video_core/renderer_vulkan | |
| parent | Merge pull request #3986 from ReinUsesLisp/shader-cache (diff) | |
| parent | shader/texture: Join separate image and sampler pairs offline (diff) | |
| download | yuzu-c2ea1e1bcb88f8e307e54cf588829a516b40258e.tar.gz yuzu-c2ea1e1bcb88f8e307e54cf588829a516b40258e.tar.xz yuzu-c2ea1e1bcb88f8e307e54cf588829a516b40258e.zip | |
Merge pull request #4049 from ReinUsesLisp/separate-samplers
shader/texture: Join separate image and sampler pairs offline
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 3170c41f8..184b2238a 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -118,6 +118,17 @@ template <typename Engine, typename Entry> | |||
| 118 | Tegra::Texture::FullTextureInfo GetTextureInfo(const Engine& engine, const Entry& entry, | 118 | Tegra::Texture::FullTextureInfo GetTextureInfo(const Engine& engine, const Entry& entry, |
| 119 | std::size_t stage, std::size_t index = 0) { | 119 | std::size_t stage, std::size_t index = 0) { |
| 120 | const auto stage_type = static_cast<Tegra::Engines::ShaderType>(stage); | 120 | const auto stage_type = static_cast<Tegra::Engines::ShaderType>(stage); |
| 121 | if constexpr (std::is_same_v<Entry, SamplerEntry>) { | ||
| 122 | if (entry.is_separated) { | ||
| 123 | const u32 buffer_1 = entry.buffer; | ||
| 124 | const u32 buffer_2 = entry.secondary_buffer; | ||
| 125 | const u32 offset_1 = entry.offset; | ||
| 126 | const u32 offset_2 = entry.secondary_offset; | ||
| 127 | const u32 handle_1 = engine.AccessConstBuffer32(stage_type, buffer_1, offset_1); | ||
| 128 | const u32 handle_2 = engine.AccessConstBuffer32(stage_type, buffer_2, offset_2); | ||
| 129 | return engine.GetTextureInfo(handle_1 | handle_2); | ||
| 130 | } | ||
| 131 | } | ||
| 121 | if (entry.is_bindless) { | 132 | if (entry.is_bindless) { |
| 122 | const auto tex_handle = engine.AccessConstBuffer32(stage_type, entry.buffer, entry.offset); | 133 | const auto tex_handle = engine.AccessConstBuffer32(stage_type, entry.buffer, entry.offset); |
| 123 | return engine.GetTextureInfo(tex_handle); | 134 | return engine.GetTextureInfo(tex_handle); |