diff options
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 a3d992ed3..42a20530d 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -117,6 +117,17 @@ template <typename Engine, typename Entry> | |||
| 117 | Tegra::Texture::FullTextureInfo GetTextureInfo(const Engine& engine, const Entry& entry, | 117 | Tegra::Texture::FullTextureInfo GetTextureInfo(const Engine& engine, const Entry& entry, |
| 118 | std::size_t stage, std::size_t index = 0) { | 118 | std::size_t stage, std::size_t index = 0) { |
| 119 | const auto stage_type = static_cast<Tegra::Engines::ShaderType>(stage); | 119 | const auto stage_type = static_cast<Tegra::Engines::ShaderType>(stage); |
| 120 | if constexpr (std::is_same_v<Entry, SamplerEntry>) { | ||
| 121 | if (entry.is_separated) { | ||
| 122 | const u32 buffer_1 = entry.buffer; | ||
| 123 | const u32 buffer_2 = entry.secondary_buffer; | ||
| 124 | const u32 offset_1 = entry.offset; | ||
| 125 | const u32 offset_2 = entry.secondary_offset; | ||
| 126 | const u32 handle_1 = engine.AccessConstBuffer32(stage_type, buffer_1, offset_1); | ||
| 127 | const u32 handle_2 = engine.AccessConstBuffer32(stage_type, buffer_2, offset_2); | ||
| 128 | return engine.GetTextureInfo(handle_1 | handle_2); | ||
| 129 | } | ||
| 130 | } | ||
| 120 | if (entry.is_bindless) { | 131 | if (entry.is_bindless) { |
| 121 | const auto tex_handle = engine.AccessConstBuffer32(stage_type, entry.buffer, entry.offset); | 132 | const auto tex_handle = engine.AccessConstBuffer32(stage_type, entry.buffer, entry.offset); |
| 122 | return engine.GetTextureInfo(tex_handle); | 133 | return engine.GetTextureInfo(tex_handle); |