From 88cc695d0b70ae867938ad7ea2c46c39d5b602d6 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 17 May 2020 21:05:35 +1000 Subject: [PATCH] HostDisplay: Adjust offsets for linear filtering Fixes line on right of screen in South Park. --- src/duckstation-qt/d3d11hostdisplay.cpp | 4 ++-- src/duckstation-qt/openglhostdisplay.cpp | 10 +++++----- src/duckstation-sdl/d3d11_host_display.cpp | 7 ++++--- src/duckstation-sdl/opengl_host_display.cpp | 7 ++++--- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/duckstation-qt/d3d11hostdisplay.cpp b/src/duckstation-qt/d3d11hostdisplay.cpp index f91c40f6c..a3781b478 100644 --- a/src/duckstation-qt/d3d11hostdisplay.cpp +++ b/src/duckstation-qt/d3d11hostdisplay.cpp @@ -455,8 +455,8 @@ void D3D11HostDisplay::renderDisplay() 0, 1, m_display_linear_filtering ? m_linear_sampler.GetAddressOf() : m_point_sampler.GetAddressOf()); const float uniforms[4] = { - (static_cast(m_display_texture_view_x) + 0.25f) / static_cast(m_display_texture_width), - (static_cast(m_display_texture_view_y) + 0.25f) / static_cast(m_display_texture_height), + static_cast(m_display_texture_view_x) / static_cast(m_display_texture_width), + static_cast(m_display_texture_view_y) / static_cast(m_display_texture_height), (static_cast(m_display_texture_view_width) - 0.5f) / static_cast(m_display_texture_width), (static_cast(m_display_texture_view_height) - 0.5f) / static_cast(m_display_texture_height)}; const auto map = m_display_uniform_buffer.Map(m_context.Get(), sizeof(uniforms), sizeof(uniforms)); diff --git a/src/duckstation-qt/openglhostdisplay.cpp b/src/duckstation-qt/openglhostdisplay.cpp index 7dcc47f31..1ceb1e21e 100644 --- a/src/duckstation-qt/openglhostdisplay.cpp +++ b/src/duckstation-qt/openglhostdisplay.cpp @@ -4,10 +4,10 @@ #include "imgui.h" #include "qtdisplaywidget.h" #include "qthostinterface.h" +#include #include #include #include -#include #include #include #include @@ -63,7 +63,7 @@ static void SetSwapInterval(QOpenGLContext* context, int interval) const QString platform_name(QGuiApplication::platformName()); if (platform_name == QStringLiteral("xcb")) { - static void(*glx_swap_interval_ext)(Display*, GLXDrawable, int) = nullptr; + static void (*glx_swap_interval_ext)(Display*, GLXDrawable, int) = nullptr; if (last_context != context) { @@ -71,7 +71,7 @@ static void SetSwapInterval(QOpenGLContext* context, int interval) last_context = context; glx_swap_interval_ext = reinterpret_cast( - glXGetProcAddress(reinterpret_cast("glXSwapIntervalEXT"))); + glXGetProcAddress(reinterpret_cast("glXSwapIntervalEXT"))); if (!glx_swap_interval_ext) return; } @@ -534,8 +534,8 @@ void OpenGLHostDisplay::renderDisplay() glDepthMask(GL_FALSE); m_display_program.Bind(); m_display_program.Uniform4f( - 0, (static_cast(m_display_texture_view_x) + 0.25f) / static_cast(m_display_texture_width), - (static_cast(m_display_texture_view_y) - 0.25f) / static_cast(m_display_texture_height), + 0, static_cast(m_display_texture_view_x) / static_cast(m_display_texture_width), + static_cast(m_display_texture_view_y) / static_cast(m_display_texture_height), (static_cast(m_display_texture_view_width) - 0.5f) / static_cast(m_display_texture_width), (static_cast(m_display_texture_view_height) + 0.5f) / static_cast(m_display_texture_height)); glBindTexture(GL_TEXTURE_2D, static_cast(reinterpret_cast(m_display_texture_handle))); diff --git a/src/duckstation-sdl/d3d11_host_display.cpp b/src/duckstation-sdl/d3d11_host_display.cpp index 20d04eaea..d4e4c1e37 100644 --- a/src/duckstation-sdl/d3d11_host_display.cpp +++ b/src/duckstation-sdl/d3d11_host_display.cpp @@ -409,7 +409,8 @@ void D3D11HostDisplay::RenderDisplay() if (!m_display_texture_handle) return; - const auto [vp_left, vp_top, vp_width, vp_height] = CalculateDrawRect(m_window_width, m_window_height, m_display_top_margin); + const auto [vp_left, vp_top, vp_width, vp_height] = + CalculateDrawRect(m_window_width, m_window_height, m_display_top_margin); m_context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); m_context->VSSetShader(m_display_vertex_shader.Get(), nullptr, 0); @@ -419,8 +420,8 @@ void D3D11HostDisplay::RenderDisplay() 0, 1, m_display_linear_filtering ? m_linear_sampler.GetAddressOf() : m_point_sampler.GetAddressOf()); const float uniforms[4] = { - (static_cast(m_display_texture_view_x) + 0.25f) / static_cast(m_display_texture_width), - (static_cast(m_display_texture_view_y) + 0.25f) / static_cast(m_display_texture_height), + static_cast(m_display_texture_view_x) / static_cast(m_display_texture_width), + static_cast(m_display_texture_view_y) / static_cast(m_display_texture_height), (static_cast(m_display_texture_view_width) - 0.5f) / static_cast(m_display_texture_width), (static_cast(m_display_texture_view_height) - 0.5f) / static_cast(m_display_texture_height)}; const auto map = m_display_uniform_buffer.Map(m_context.Get(), sizeof(uniforms), sizeof(uniforms)); diff --git a/src/duckstation-sdl/opengl_host_display.cpp b/src/duckstation-sdl/opengl_host_display.cpp index db1371cb2..935a44c51 100644 --- a/src/duckstation-sdl/opengl_host_display.cpp +++ b/src/duckstation-sdl/opengl_host_display.cpp @@ -391,7 +391,8 @@ void OpenGLHostDisplay::RenderDisplay() if (!m_display_texture_handle) return; - const auto [vp_left, vp_top, vp_width, vp_height] = CalculateDrawRect(m_window_width, m_window_height, m_display_top_margin); + const auto [vp_left, vp_top, vp_width, vp_height] = + CalculateDrawRect(m_window_width, m_window_height, m_display_top_margin); glViewport(vp_left, m_window_height - vp_top - vp_height, vp_width, vp_height); glDisable(GL_BLEND); @@ -401,8 +402,8 @@ void OpenGLHostDisplay::RenderDisplay() glDepthMask(GL_FALSE); m_display_program.Bind(); m_display_program.Uniform4f( - 0, (static_cast(m_display_texture_view_x) + 0.25f) / static_cast(m_display_texture_width), - (static_cast(m_display_texture_view_y) - 0.25f) / static_cast(m_display_texture_height), + 0, static_cast(m_display_texture_view_x) / static_cast(m_display_texture_width), + static_cast(m_display_texture_view_y) / static_cast(m_display_texture_height), (static_cast(m_display_texture_view_width) - 0.5f) / static_cast(m_display_texture_width), (static_cast(m_display_texture_view_height) + 0.5f) / static_cast(m_display_texture_height)); glBindTexture(GL_TEXTURE_2D, static_cast(reinterpret_cast(m_display_texture_handle)));