aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/vk_rasterizer.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-11-03 22:21:58 -0700
committerGitHub <noreply@github.com>2022-11-03 22:21:58 -0700
commit7c3bee5601fd87bda663f85d0ea74e6e408ff1ca (patch)
treeb9af6ed0a26285f4b0dcd5c21028601004267607 /src/video_core/renderer_vulkan/vk_rasterizer.cpp
parent900d89f2b9e278edf88acb236f398cc5d3c3d65a (diff)
parent328ad69854496822f6058407485a0da7be6f3631 (diff)
Merge pull request #8858 from vonchenplus/mipmap
video_core: Generate mipmap texture by drawing
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index d94dbf8735..5af3c930ba 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -683,6 +683,22 @@ void RasterizerVulkan::UpdateViewportsState(Tegra::Engines::Maxwell3D::Regs& reg
if (!state_tracker.TouchViewports()) {
return;
}
+ if (!regs.viewport_transform_enabled) {
+ const auto x = static_cast<float>(regs.render_area.x);
+ const auto y = static_cast<float>(regs.render_area.y);
+ const auto width = static_cast<float>(regs.render_area.width);
+ const auto height = static_cast<float>(regs.render_area.height);
+ VkViewport viewport{
+ .x = x,
+ .y = y,
+ .width = width != 0.0f ? width : 1.0f,
+ .height = height != 0.0f ? height : 1.0f,
+ .minDepth = 0.0f,
+ .maxDepth = 1.0f,
+ };
+ scheduler.Record([viewport](vk::CommandBuffer cmdbuf) { cmdbuf.SetViewport(0, viewport); });
+ return;
+ }
const bool is_rescaling{texture_cache.IsRescaling()};
const float scale = is_rescaling ? Settings::values.resolution_info.up_factor : 1.0f;
const std::array viewports{