UI: Integrated Motion Adaptive Deinterlacing with UI

[SETTINGSVERSION+]
Added entries in the drop-down menu for Adaptive Deinterlacing
Re-arranged deinterlacing mode order in the drop-down menu.
"Auto" mode defaults to MAD.
Adjusted GameDB entries to be compatible with the new order of entries.
Improved Bob description for WX
This commit is contained in:
sideprojectslab 2022-11-11 09:24:08 +01:00 committed by refractionpcsx2
parent f10e7f4ab7
commit 0f42eab7a4
11 changed files with 121 additions and 96 deletions

View File

@ -425,7 +425,7 @@ SCAJ-10008:
name: "Taiko no Tatsujin - Atsumare! Matsuri da!! Yondaime"
region: "NTSC-Unk"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SCAJ-10009:
name: "Psikyo Shooting Collection Vol.1 - Strikers 1-2"
@ -440,31 +440,31 @@ SCAJ-10011:
name: "Taiko no Tatsujin - Go! Go! Godaime"
region: "NTSC-Unk"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SCAJ-10012:
name: "Taiko Drum Master"
region: "NTSC-Unk"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SCAJ-10013:
name: "Taiko no Tatsujin - Tobikkiri! Anime Special"
region: "NTSC-Unk"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SCAJ-10014:
name: "Taiko no Tatsujin - Wai Wai Happy! Rokudaime"
region: "NTSC-Unk"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SCAJ-10015:
name: "Taiko no Tatsujin - Doka! to Oomori Nanadaime"
region: "NTSC-Unk"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SCAJ-20001:
name: "Ratchet & Clank"
@ -3170,7 +3170,7 @@ SCES-51164:
name: "Mark of Kri, The"
region: "PAL-M5"
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
SCES-51176:
name: "Disney's Treasure Planet"
region: "PAL-M4"
@ -6471,7 +6471,7 @@ SCPS-51011:
region: "NTSC-J"
compat: 5
gsHWFixes:
deinterlace: 6 # Fixes blurriness.
deinterlace: 7 # Fixes blurriness.
SCPS-51012:
name: "Gigantic Drive"
region: "NTSC-J"
@ -6992,7 +6992,7 @@ SCUS-97140:
region: "NTSC-U"
compat: 5
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
patches:
DBD09DD4:
content: |-
@ -7218,7 +7218,7 @@ SCUS-97201:
name: "Mark of Kri, The"
region: "NTSC-U"
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
SCUS-97203:
name: "Wild ARMs 3"
region: "NTSC-U"
@ -7300,7 +7300,7 @@ SCUS-97222:
name: "Mark of Kri [Demo]"
region: "NTSC-U"
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
SCUS-97223:
name: "NFL GameDay 2003 [Demo]"
region: "NTSC-U"
@ -11965,7 +11965,7 @@ SLES-51235:
region: "PAL-M5"
compat: 5
gsHWFixes:
deinterlace: 6 # Fixes blurriness.
deinterlace: 7 # Fixes blurriness.
SLES-51236:
name: "Gungrave"
region: "PAL-M3"
@ -17330,7 +17330,7 @@ SLES-53621:
region: "PAL-M5"
compat: 5
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
halfPixelOffset: 1 # Fixes misalignment/bloom when upscaling.
SLES-53623:
name: "SpongeBob SquarePants - Battle for Bikini Bottom"
@ -19569,7 +19569,7 @@ SLES-54548:
name: "Cocoto Fishing Master"
region: "PAL-M4"
gsHWFixes:
deinterlace: 6 # Fixes blurriness.
deinterlace: 7 # Fixes blurriness.
halfPixelOffset: 1 # Fixes blur.
SLES-54549:
name: "Crazy Frog Racer 2"
@ -26604,7 +26604,7 @@ SLPM-64521:
region: "NTSC-K"
compat: 5
gsHWFixes:
deinterlace: 6 # Fixes blurriness.
deinterlace: 7 # Fixes blurriness.
SLPM-64522:
name: "La Pucelle"
region: "NTSC-K"
@ -27733,7 +27733,7 @@ SLPM-65310:
name: "Mark of Kri, The"
region: "NTSC-J"
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
SLPM-65311:
name: "Violet no Atelier - Gramnad no Renkinjutsushi"
region: "NTSC-J"
@ -31207,7 +31207,7 @@ SLPM-66327:
name: "Wallace & Gromit - The Curse of the Were-Rabbit"
region: "NTSC-J"
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
halfPixelOffset: 1 # Fixes misalignment/bloom when upscaling.
SLPM-66328:
name: "Call of Duty 2 - Big Red One"
@ -34743,7 +34743,7 @@ SLPS-20198:
region: "NTSC-J"
compat: 5
gsHWFixes:
deinterlace: 6 # Fixes blurriness.
deinterlace: 7 # Fixes blurriness.
SLPS-20199:
name: "F1 2002"
region: "NTSC-J"
@ -35146,13 +35146,13 @@ SLPS-20382:
name: "Taiko no Tatsujin - Atsumare! Matsuri da!! Yondaime [with Tatacon]"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20383:
name: "Taiko no Tatsujin - Atsumare! Matsuri da!! Yondaime"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20384:
name: "Hayarigami - Keishichou Kaii Jiken File"
@ -35194,13 +35194,13 @@ SLPS-20399:
name: "Taiko no Tatsujin - Go! Go! Godaime [with Tatacon]"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20400:
name: "Taiko no Tatsujin - Go! Go! Godaime"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20401:
name: "Tecmo Hit Parade"
@ -35241,14 +35241,14 @@ SLPS-20413:
name: "Taiko no Tatsujin - Taiko Drum Master [with Tatacon]"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20414:
name: "Taiko no Tatsujin - Taiko Drum Master"
region: "NTSC-J"
compat: 5
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20416:
name: "Inyou Taisenki - Byakko Enbu [with EyeToy]"
@ -35277,13 +35277,13 @@ SLPS-20424:
name: "Taiko no Tatsujin - Tobikkiri! Anime Special [with Tatacon]"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20425:
name: "Taiko no Tatsujin - Tobikkiri! Anime Special"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20426:
name: "Dreamworks Madagascar"
@ -35345,13 +35345,13 @@ SLPS-20450:
name: "Taiko no Tatsujin - Wai Wai Happy! Rokudaime [with Tatacon]"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20451:
name: "Taiko no Tatsujin - Wai Wai Happy! Rokudaime"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20452:
name: "Simple 2000 Series Ultimate Vol. 30 - Kourin! Zokusha Goddo!"
@ -35472,13 +35472,13 @@ SLPS-20485:
name: "Taiko no Tatsujin - Doka! to Oomori Nanadaime [with Tatacon]"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20486:
name: "Taiko no Tatsujin - Doka! to Oomori Nanadaime"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-20487:
name: "Pachi-Slot King! Kagaku Ninja-Tai Gatchaman"
@ -38987,7 +38987,7 @@ SLPS-73107:
name: "Taiko no Tatsujin - Go! Go! Godaime [PlayStation 2 The Best]"
region: "NTSC-J"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLPS-73108:
name: "Phantom Brave [PlayStation 2 The Best]"
@ -41510,7 +41510,7 @@ SLUS-20475:
name: "Dual Hearts"
region: "NTSC-U"
gsHWFixes:
deinterlace: 5 # Game requires blend tff deinterlacing when auto.
deinterlace: 6 # Game requires blend tff deinterlacing when auto.
compat: 5
SLUS-20476:
name: "NBA 2K3 - Sega Sports"
@ -43036,7 +43036,7 @@ SLUS-20800:
name: "Taiko Drum Master"
region: "NTSC-U"
gsHWFixes:
deinterlace: 4 # Game requires bob bff deinterlacing when auto.
deinterlace: 5 # Game requires bob bff deinterlacing when auto.
alignSprite: 1 # Fixes vertical lines.
SLUS-20801:
name: "Midway Arcade Treasures"
@ -45678,7 +45678,7 @@ SLUS-21312:
region: "NTSC-U"
compat: 5
gsHWFixes:
deinterlace: 3 # Game requires bob deinterlacing when auto.
deinterlace: 4 # Game requires bob deinterlacing when auto.
halfPixelOffset: 1 # Fixes misalignment/bloom when upscaling.
SLUS-21313:
name: "Friends - The One with all the Trivia"
@ -47380,7 +47380,7 @@ SLUS-21663:
region: "NTSC-U"
compat: 5
gsHWFixes:
deinterlace: 6 # Fixes blurriness.
deinterlace: 7 # Fixes blurriness.
halfPixelOffset: 1 # Fixes blur.
SLUS-21664:
name: "Sims 2, The - Castaway"

View File

@ -75,7 +75,7 @@ static const char* s_anisotropic_filtering_entries[] = {QT_TRANSLATE_NOOP("Graph
QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "8x"), QT_TRANSLATE_NOOP("GraphicsSettingsWidget", "16x"), nullptr};
static const char* s_anisotropic_filtering_values[] = {"0", "2", "4", "8", "16", nullptr};
static constexpr int DEFAULT_INTERLACE_MODE = 7;
static constexpr int DEFAULT_INTERLACE_MODE = 0;
static constexpr int DEFAULT_TV_SHADER_MODE = 0;
GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsDialog* dialog, QWidget* parent)

View File

@ -58,7 +58,7 @@
<item>
<widget class="QTabWidget" name="hardwareRendererGroup">
<property name="currentIndex">
<number>2</number>
<number>0</number>
</property>
<property name="documentMode">
<bool>true</bool>
@ -149,6 +149,11 @@
</item>
<item row="3" column="1">
<widget class="QComboBox" name="interlacing">
<item>
<property name="text">
<string>Automatic (Default)</string>
</property>
</item>
<item>
<property name="text">
<string>None</string>
@ -186,7 +191,12 @@
</item>
<item>
<property name="text">
<string>Automatic (Default)</string>
<string>Adaptive (Top Field First)</string>
</property>
</item>
<item>
<property name="text">
<string>Adaptive (Bottom Field First)</string>
</property>
</item>
</widget>

View File

@ -130,6 +130,7 @@ enum class GSRendererType : s8
enum class GSInterlaceMode : u8
{
Automatic,
Off,
WeaveTFF,
WeaveBFF,
@ -137,7 +138,8 @@ enum class GSInterlaceMode : u8
BobBFF,
BlendTFF,
BlendBFF,
Automatic,
AdaptiveTFF,
AdaptiveBFF,
Count
};

View File

@ -140,9 +140,18 @@ The clamp modes are also numerically based.
### GS Hardware General Fixes
* conservativeFramebuffer [`0` or `1`] {Off or On} Default: On (`1`)
* texturePreloading [`0` or `1` or `2`] {None, Partial or Full Hash Cache} Default: None (`0`)
* deinterlace [Value between `0` to `7`] {Off, WeaveTFF, WeaveBFF, BobTFF, BobBFF, BlendTFF, BlendBFF, Automatic} Default: Automatic (No value, looks up GameDB)
* conservativeFramebuffer
[`0` or `1`]
{Off or On}
Default: On (`1`)
* texturePreloading
[`0` or `1` or `2`]
{None, Partial or Full Hash Cache}
Default: None (`0`)
* deinterlace
[Value between `0` to `9`]
{Automatic Off, WeaveTFF, WeaveBFF, BobTFF, BobBFF, BlendTFF, BlendBFF, AdaptiveTFF, AdaptiveBFF}
Default: Automatic (No value, looks up GameDB)
### GS Hardware Renderer Fixes

View File

@ -52,7 +52,7 @@
#include <ShlObj.h>
#endif
static constexpr u32 SETTINGS_VERSION = 1;
static constexpr u32 SETTINGS_VERSION = 2;
namespace CommonHost
{

View File

@ -1310,14 +1310,16 @@ void GSApp::Init()
// The null renderer goes last, it has use for benchmarking purposes in a release build
m_gs_renderers.push_back(GSSetting(static_cast<u32>(GSRendererType::Null), "Null", ""));
m_gs_deinterlace.push_back(GSSetting(0, "None", ""));
m_gs_deinterlace.push_back(GSSetting(1, "Weave tff", "saw-tooth"));
m_gs_deinterlace.push_back(GSSetting(2, "Weave bff", "saw-tooth"));
m_gs_deinterlace.push_back(GSSetting(3, "Bob tff", "use blend if shaking"));
m_gs_deinterlace.push_back(GSSetting(4, "Bob bff", "use blend if shaking"));
m_gs_deinterlace.push_back(GSSetting(5, "Blend tff", "slight blur, 1/2 fps"));
m_gs_deinterlace.push_back(GSSetting(6, "Blend bff", "slight blur, 1/2 fps"));
m_gs_deinterlace.push_back(GSSetting(7, "Automatic", "Default"));
m_gs_deinterlace.push_back(GSSetting(0, "Automatic", "Default"));
m_gs_deinterlace.push_back(GSSetting(1, "None", ""));
m_gs_deinterlace.push_back(GSSetting(2, "Weave tff", "saw-tooth"));
m_gs_deinterlace.push_back(GSSetting(3, "Weave bff", "saw-tooth"));
m_gs_deinterlace.push_back(GSSetting(4, "Bob tff", "use adaptive or blend if shaking"));
m_gs_deinterlace.push_back(GSSetting(5, "Bob bff", "use adaptive or blend if shaking"));
m_gs_deinterlace.push_back(GSSetting(6, "Blend tff", "slight blur, 1/2 fps"));
m_gs_deinterlace.push_back(GSSetting(7, "Blend bff", "slight blur, 1/2 fps"));
m_gs_deinterlace.push_back(GSSetting(8, "Adaptive tff", "minor artifacts"));
m_gs_deinterlace.push_back(GSSetting(9, "Adaptive bff", "minor artifacts"));
m_gs_upscale_multiplier.push_back(GSSetting(1, "Native", "PS2"));
m_gs_upscale_multiplier.push_back(GSSetting(2, "2x Native", "~720p"));

View File

@ -364,41 +364,41 @@ void GSDevice::Merge(GSTexture* sTex[3], GSVector4* sRect, GSVector4* dRect, con
void GSDevice::Interlace(const GSVector2i& ds, int field, int mode, float yoffset)
{
static int bufIdx = 0;
if (mode == 0) // weave
{
const float offset = yoffset * static_cast<float>(field);
ResizeTarget(&m_weavebob, ds.x, ds.y);
DoInterlace(m_merge, m_weavebob, field, false, GSConfig.DisableInterlaceOffset ? 0.0f : offset, 0);
m_current = m_weavebob;
}
else if (mode == 1) // bob
{
// Field is reversed here as we are countering the bounce.
ResizeTarget(&m_weavebob, ds.x, ds.y);
DoInterlace(m_merge, m_weavebob, 3, true, yoffset * (1-field), 0);
m_current = m_weavebob;
}
else if (mode == 2) // FastMAD Motion Adaptive Deinterlacing
{
bufIdx++;
bufIdx &= ~(field ^ 1);
bufIdx |= (field);
bufIdx &= 3;
float offset = (yoffset * field);
float offset = yoffset * static_cast<float>(field);
offset = GSConfig.DisableInterlaceOffset ? 0.0f : offset;
switch (mode)
{
case 0: // weave
ResizeTarget(&m_weavebob, ds.x, ds.y);
DoInterlace(m_merge, m_weavebob, field, false, offset, 0);
m_current = m_weavebob;
break;
case 1: // bob
// Field is reversed here as we are countering the bounce.
ResizeTarget(&m_weavebob, ds.x, ds.y);
DoInterlace(m_merge, m_weavebob, 3, true, yoffset * (1 - field), 0);
m_current = m_weavebob;
break;
case 2: //Blend
ResizeTarget(&m_weavebob, ds.x, ds.y);
DoInterlace(m_merge, m_weavebob, field, false, offset, 0);
ResizeTarget(&m_blend, ds.x, ds.y);
DoInterlace(m_weavebob, m_blend, 2, false, 0, 0);
m_current = m_blend;
break;
case 3: // FastMAD Motion Adaptive Deinterlacing
bufIdx++;
bufIdx &= ~1;
bufIdx |= field;
bufIdx &= 3;
ResizeTarget(&m_mad, ds.x, ds.y * 2.0f);
DoInterlace(m_merge, m_mad, 4, false, offset, bufIdx);
ResizeTarget(&m_blend, ds.x, ds.y);
DoInterlace(m_mad, m_blend, 5, false, 0, bufIdx);
m_current = m_blend;
}
else
{
ResizeTarget(&m_weavebob, ds.x, ds.y);
DoInterlace(m_mad, m_weavebob, 5, false, 0, bufIdx);
m_current = m_weavebob;
break;
default:
m_current = m_merge;
}
}

View File

@ -179,13 +179,13 @@ bool GSRenderer::Merge(int field)
float offset = is_bob ? (tex[1] ? tex[1]->GetScale().y : tex[0]->GetScale().y) : 0.0f;
int field2 = 0;
int mode = 2;
int mode = 3;
// FFMD (half frames) requires blend deinterlacing, so automatically use that. Same when SCANMSK is used but not blended in the merge circuit (Alpine Racer 3)
if (GSConfig.InterlaceMode != GSInterlaceMode::Automatic || (!m_regs->SMODE2.FFMD && !scanmask_frame))
{
field2 = ((static_cast<int>(GSConfig.InterlaceMode) - 1) & 1);
mode = ((static_cast<int>(GSConfig.InterlaceMode) - 1) >> 1);
field2 = ((static_cast<int>(GSConfig.InterlaceMode) - 2) & 1);
mode = ((static_cast<int>(GSConfig.InterlaceMode) - 2) >> 1);
}
for (int i = 0; i < 2; i++)

View File

@ -723,8 +723,9 @@ void GSDevice12::DoMerge(GSTexture* sTex[3], GSVector4* sRect, GSTexture* dTex,
void GSDevice12::DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool linear, float yoffset, int bufIdx)
{
const GSVector4 ss = GSVector4(sTex->GetSize());
const GSVector4 ds = GSVector4(dTex->GetSize());
const GSVector2i ds_i(dTex->GetSize());
const GSVector2i ds_i = dTex->GetSize();
const GSVector4 ds = GSVector4(ds_i);
const GSVector4 sRect(0, 0, 1, 1);
const GSVector4 dRect(0.0f, yoffset, ds.x, ds.y + yoffset);
@ -733,7 +734,7 @@ void GSDevice12::DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool
cb.ZrH = GSVector4(static_cast<float>(bufIdx), 1.0f / ss.y, ss.y, MAD_SENSITIVITY);
GL_PUSH("DoInterlace %dx%d Shader:%d Linear:%d", size.x, size.y, shader, linear);
GL_PUSH("DoInterlace %dx%d Shader:%d Linear:%d", ds_i.x, ds_i.y, shader, linear);
static_cast<GSTexture12*>(dTex)->TransitionToState(D3D12_RESOURCE_STATE_RENDER_TARGET);

View File

@ -858,8 +858,9 @@ void GSDeviceVK::DoMerge(GSTexture* sTex[3], GSVector4* sRect, GSTexture* dTex,
void GSDeviceVK::DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool linear, float yoffset, int bufIdx)
{
const GSVector4 ss = GSVector4(sTex->GetSize());
const GSVector4 ds = GSVector4(dTex->GetSize());
const GSVector2i ds_i(dTex->GetSize());
const GSVector2i ds_i = dTex->GetSize();
const GSVector4 ds = GSVector4(ds_i);
const GSVector4 sRect(0, 0, 1, 1);
const GSVector4 dRect(0.0f, yoffset, ds.x, ds.y + yoffset);
@ -868,7 +869,7 @@ void GSDeviceVK::DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool
cb.ZrH = GSVector4(static_cast<float>(bufIdx), 1.0f / ss.y, ss.y, MAD_SENSITIVITY);
GL_PUSH("DoInterlace %dx%d Shader:%d Linear:%d", size.x, size.y, shader, linear);
GL_PUSH("DoInterlace %dx%d Shader:%d Linear:%d", ds_i.x, ds_i.y, shader, linear);
static_cast<GSTextureVK*>(dTex)->TransitionToLayout(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);