GS: Get rid of GSApp for Qt

This commit is contained in:
Stenzek 2022-12-24 13:46:11 +10:00 committed by refractionpcsx2
parent 72fd5211f0
commit 35e28fc0d0
22 changed files with 107 additions and 154 deletions

View File

@ -692,7 +692,6 @@ set(pcsx2GSSources
GS/Renderers/SW/GSNewCodeGenerator.cpp GS/Renderers/SW/GSNewCodeGenerator.cpp
GS/Renderers/SW/GSTextureCacheSW.cpp GS/Renderers/SW/GSTextureCacheSW.cpp
GS/Renderers/SW/GSTextureSW.cpp GS/Renderers/SW/GSTextureSW.cpp
GS/Window/GSSetting.cpp
) )
# GS headers # GS headers
@ -757,7 +756,6 @@ set(pcsx2GSHeaders
GS/Renderers/SW/GSTextureCacheSW.h GS/Renderers/SW/GSTextureCacheSW.h
GS/Renderers/SW/GSTextureSW.h GS/Renderers/SW/GSTextureSW.h
GS/Renderers/SW/GSVertexSW.h GS/Renderers/SW/GSVertexSW.h
GS/Window/GSSetting.h
) )
if(USE_OPENGL) if(USE_OPENGL)
@ -815,9 +813,11 @@ if(PCSX2_CORE)
endif() endif()
else() else()
list(APPEND pcsx2GSSources list(APPEND pcsx2GSSources
GS/Window/GSSetting.cpp
GS/Window/GSwxDialog.cpp GS/Window/GSwxDialog.cpp
) )
list(APPEND pcsx2GSHeaders list(APPEND pcsx2GSHeaders
GS/Window/GSSetting.h
GS/Window/GSwxDialog.h GS/Window/GSwxDialog.h
) )
if(WIN32) if(WIN32)

View File

@ -734,6 +734,7 @@ struct Pcsx2Config
int ShadeBoost_Brightness{50}; int ShadeBoost_Brightness{50};
int ShadeBoost_Contrast{50}; int ShadeBoost_Contrast{50};
int ShadeBoost_Saturation{50}; int ShadeBoost_Saturation{50};
int PNGCompressionLevel{1};
int SaveN{0}; int SaveN{0};
int SaveL{5000}; int SaveL{5000};

View File

@ -111,6 +111,7 @@ int GSinit()
void GSinitConfig() void GSinitConfig()
{ {
#ifndef PCSX2_CORE
static bool config_inited = false; static bool config_inited = false;
if (config_inited) if (config_inited)
return; return;
@ -118,6 +119,7 @@ void GSinitConfig()
config_inited = true; config_inited = true;
theApp.SetConfigDir(); theApp.SetConfigDir();
theApp.Init(); theApp.Init();
#endif
} }
void GSshutdown() void GSshutdown()
@ -258,8 +260,7 @@ static bool DoGSOpen(GSRendererType renderer, u8* basemem)
} }
else else
{ {
const int threads = theApp.GetConfigI("extrathreads"); g_gs_renderer = std::unique_ptr<GSRenderer>(MULTI_ISA_SELECT(makeGSRendererSW)(GSConfig.SWExtraThreads));
g_gs_renderer = std::unique_ptr<GSRenderer>(MULTI_ISA_SELECT(makeGSRendererSW)(threads));
} }
} }
catch (std::exception& ex) catch (std::exception& ex)
@ -720,9 +721,12 @@ void GSgetStats(std::string& info)
void GSgetTitleStats(std::string& info) void GSgetTitleStats(std::string& info)
{ {
static constexpr const char* deinterlace_modes[] = {
"Automatic", "None", "Weave tff", "Weave bff", "Bob tff", "Bob bff", "Blend tff", "Blend bff", "Adaptive tff", "Adaptive bff"};
const char* api_name = HostDisplay::RenderAPIToString(s_render_api); const char* api_name = HostDisplay::RenderAPIToString(s_render_api);
const char* hw_sw_name = (GSConfig.Renderer == GSRendererType::Null) ? " Null" : (GSConfig.UseHardwareRenderer() ? " HW" : " SW"); const char* hw_sw_name = (GSConfig.Renderer == GSRendererType::Null) ? " Null" : (GSConfig.UseHardwareRenderer() ? " HW" : " SW");
const char* deinterlace_mode = theApp.m_gs_deinterlace[static_cast<int>(GSConfig.InterlaceMode)].name.c_str(); const char* deinterlace_mode = deinterlace_modes[static_cast<int>(GSConfig.InterlaceMode)];
#ifndef PCSX2_CORE #ifndef PCSX2_CORE
int iwidth, iheight; int iwidth, iheight;
@ -775,19 +779,10 @@ void GSUpdateConfig(const Pcsx2Config::GSOptions& new_config)
// Options which aren't using the global struct yet, so we need to recreate all GS objects. // Options which aren't using the global struct yet, so we need to recreate all GS objects.
if ( if (
GSConfig.DumpGSData != old_config.DumpGSData ||
GSConfig.SaveRT != old_config.SaveRT ||
GSConfig.SaveFrame != old_config.SaveFrame ||
GSConfig.SaveTexture != old_config.SaveTexture ||
GSConfig.SaveDepth != old_config.SaveDepth ||
GSConfig.UpscaleMultiplier != old_config.UpscaleMultiplier || GSConfig.UpscaleMultiplier != old_config.UpscaleMultiplier ||
GSConfig.CRCHack != old_config.CRCHack || GSConfig.CRCHack != old_config.CRCHack ||
GSConfig.SWExtraThreads != old_config.SWExtraThreads || GSConfig.SWExtraThreads != old_config.SWExtraThreads ||
GSConfig.SWExtraThreadsHeight != old_config.SWExtraThreadsHeight || GSConfig.SWExtraThreadsHeight != old_config.SWExtraThreadsHeight)
GSConfig.SaveN != old_config.SaveN ||
GSConfig.SaveL != old_config.SaveL)
{ {
if (!GSreopen(false, old_config)) if (!GSreopen(false, old_config))
pxFailRel("Failed to do quick GS reopen"); pxFailRel("Failed to do quick GS reopen");
@ -1050,12 +1045,10 @@ void GSFreeWrappedMemory(void* ptr, size_t size, size_t repeat)
#endif #endif
#ifndef PCSX2_CORE
size_t GSApp::GetIniString(const char* lpAppName, const char* lpKeyName, const char* lpDefault, char* lpReturnedString, size_t nSize, const char* lpFileName) size_t GSApp::GetIniString(const char* lpAppName, const char* lpKeyName, const char* lpDefault, char* lpReturnedString, size_t nSize, const char* lpFileName)
{ {
#ifdef PCSX2_CORE
std::string ret(Host::GetStringSettingValue("EmuCore/GS", lpKeyName, lpDefault));
return StringUtil::Strlcpy(lpReturnedString, ret, nSize);
#else
BuildConfigurationMap(lpFileName); BuildConfigurationMap(lpFileName);
std::string key(lpKeyName); std::string key(lpKeyName);
@ -1070,12 +1063,10 @@ size_t GSApp::GetIniString(const char* lpAppName, const char* lpKeyName, const c
strcpy(lpReturnedString, value.c_str()); strcpy(lpReturnedString, value.c_str());
return 0; return 0;
#endif
} }
bool GSApp::WriteIniString(const char* lpAppName, const char* lpKeyName, const char* pString, const char* lpFileName) bool GSApp::WriteIniString(const char* lpAppName, const char* lpKeyName, const char* pString, const char* lpFileName)
{ {
#ifndef PCSX2_CORE
BuildConfigurationMap(lpFileName); BuildConfigurationMap(lpFileName);
std::string key(lpKeyName); std::string key(lpKeyName);
@ -1104,12 +1095,10 @@ bool GSApp::WriteIniString(const char* lpAppName, const char* lpKeyName, const c
fprintf(f, "%s = %s\n", entry.first.c_str(), entry.second.c_str()); fprintf(f, "%s = %s\n", entry.first.c_str(), entry.second.c_str());
} }
fclose(f); fclose(f);
#endif
return false; return false;
} }
#ifndef PCSX2_CORE
int GSApp::GetIniInt(const char* lpAppName, const char* lpKeyName, int nDefault, const char* lpFileName) int GSApp::GetIniInt(const char* lpAppName, const char* lpKeyName, int nDefault, const char* lpFileName)
{ {
BuildConfigurationMap(lpFileName); BuildConfigurationMap(lpFileName);
@ -1124,7 +1113,6 @@ int GSApp::GetIniInt(const char* lpAppName, const char* lpKeyName, int nDefault,
else else
return atoi(value.c_str()); return atoi(value.c_str());
} }
#endif
GSApp theApp; GSApp theApp;
@ -1394,7 +1382,6 @@ void GSApp::Init()
// clang-format on // clang-format on
} }
#ifndef PCSX2_CORE
void GSApp::ReloadConfig() void GSApp::ReloadConfig()
{ {
if (m_configuration_map.empty()) if (m_configuration_map.empty())
@ -1453,7 +1440,6 @@ void GSApp::BuildConfigurationMap(const char* lpFileName)
m_configuration_map[key] = value; m_configuration_map[key] = value;
} }
} }
#endif
void GSApp::SetConfigDir() void GSApp::SetConfigDir()
{ {
@ -1492,40 +1478,18 @@ int GSApp::GetConfigI(const char* entry)
if (def != m_default_configuration.end()) if (def != m_default_configuration.end())
{ {
#ifndef PCSX2_CORE
return GetIniInt(m_section.c_str(), entry, std::stoi(def->second), m_ini.c_str()); return GetIniInt(m_section.c_str(), entry, std::stoi(def->second), m_ini.c_str());
#else
return Host::GetIntSettingValue("EmuCore/GS", entry, std::stoi(def->second));
#endif
} }
else else
{ {
fprintf(stderr, "Option %s doesn't have a default value\n", entry); fprintf(stderr, "Option %s doesn't have a default value\n", entry);
#ifndef PCSX2_CORE
return GetIniInt(m_section.c_str(), entry, 0, m_ini.c_str()); return GetIniInt(m_section.c_str(), entry, 0, m_ini.c_str());
#else
return Host::GetIntSettingValue("EmuCore/GS", entry, 0);
#endif
} }
} }
bool GSApp::GetConfigB(const char* entry) bool GSApp::GetConfigB(const char* entry)
{ {
#ifndef PCSX2_CORE
return !!GetConfigI(entry); return !!GetConfigI(entry);
#else
auto def = m_default_configuration.find(entry);
if (def != m_default_configuration.end())
{
return Host::GetBoolSettingValue("EmuCore/GS", entry, StringUtil::FromChars<bool>(def->second).value_or(false));
}
else
{
fprintf(stderr, "Option %s doesn't have a default value\n", entry);
return Host::GetBoolSettingValue("EmuCore/GS", entry, false);
}
#endif
} }
void GSApp::SetConfig(const char* entry, int value) void GSApp::SetConfig(const char* entry, int value)
@ -1537,6 +1501,8 @@ void GSApp::SetConfig(const char* entry, int value)
SetConfig(entry, buff); SetConfig(entry, buff);
} }
#endif // PCSX2_CORE
#ifdef PCSX2_CORE #ifdef PCSX2_CORE
static void HotkeyAdjustUpscaleMultiplier(s32 delta) static void HotkeyAdjustUpscaleMultiplier(s32 delta)

View File

@ -16,7 +16,6 @@
#pragma once #pragma once
#include "common/WindowInfo.h" #include "common/WindowInfo.h"
#include "Window/GSSetting.h"
#include "SaveState.h" #include "SaveState.h"
#include "pcsx2/Config.h" #include "pcsx2/Config.h"
#include "pcsx2/GS/config.h" #include "pcsx2/GS/config.h"
@ -24,6 +23,10 @@
#include <map> #include <map>
#ifndef PCSX2_CORE
#include "Window/GSSetting.h"
#endif
#ifdef None #ifdef None
// X11 seems to like to define this, not fun // X11 seems to like to define this, not fun
#undef None #undef None
@ -101,6 +104,8 @@ bool GSSaveSnapshotToMemory(u32 window_width, u32 window_height, bool apply_aspe
u32* width, u32* height, std::vector<u32>* pixels); u32* width, u32* height, std::vector<u32>* pixels);
void GSJoinSnapshotThreads(); void GSJoinSnapshotThreads();
#ifndef PCSX2_CORE
class GSApp class GSApp
{ {
std::string m_section; std::string m_section;
@ -157,14 +162,13 @@ public:
std::vector<GSSetting> m_gs_dump_compression; std::vector<GSSetting> m_gs_dump_compression;
}; };
extern GSApp theApp;
#endif
struct GSError struct GSError
{ {
}; };
struct GSRecoverableError : GSError struct GSRecoverableError : GSError
{ {
}; };
struct GSErrorGlVertexArrayTooSmall : GSError
{
};
extern GSApp theApp;

View File

@ -19,6 +19,10 @@
#include "GS.h" #include "GS.h"
#include "common/StringUtil.h" #include "common/StringUtil.h"
#ifdef PCSX2_CORE
#include "HostSettings.h"
#endif
const CRC::Game CRC::m_games[] = const CRC::Game CRC::m_games[] =
{ {
// Note: IDs 0x7ACF7E03, 0x7D4EA48F, 0x37C53760 - shouldn't be added as it's from the multiloaders when packing games. // Note: IDs 0x7ACF7E03, 0x7D4EA48F, 0x37C53760 - shouldn't be added as it's from the multiloaders when packing games.
@ -337,7 +341,11 @@ const CRC::Game& CRC::Lookup(u32 crc)
printf("GS Lookup CRC:%08X\n", crc); printf("GS Lookup CRC:%08X\n", crc);
if (m_map.empty()) if (m_map.empty())
{ {
#ifndef PCSX2_CORE
std::string exclusions = theApp.GetConfigS("CrcHacksExclusions"); std::string exclusions = theApp.GetConfigS("CrcHacksExclusions");
#else
std::string exclusions = Host::GetStringSettingValue("EmuCore/GS", "CrcHacksExclusions");
#endif
if (exclusions.length() != 0) if (exclusions.length() != 0)
printf("GS: CrcHacksExclusions: %s\n", exclusions.c_str()); printf("GS: CrcHacksExclusions: %s\n", exclusions.c_str());
int crcDups = 0; int crcDups = 0;

View File

@ -25,6 +25,7 @@
#include <iomanip> // Dump Verticles #include <iomanip> // Dump Verticles
int GSState::s_n = 0; int GSState::s_n = 0;
std::string GSState::s_dump_root;
static __fi bool IsAutoFlushEnabled() static __fi bool IsAutoFlushEnabled()
{ {
@ -55,16 +56,9 @@ GSState::GSState()
m_mipmap = GSConfig.Mipmap; m_mipmap = GSConfig.Mipmap;
s_n = 0; s_n = 0;
s_dump = theApp.GetConfigB("dump"); s_dump_root = "";
s_save = theApp.GetConfigB("save");
s_savet = theApp.GetConfigB("savet");
s_savez = theApp.GetConfigB("savez");
s_savef = theApp.GetConfigB("savef");
s_saven = theApp.GetConfigI("saven");
s_savel = theApp.GetConfigI("savel");
m_dump_root = "";
#if defined(__unix__) #if defined(__unix__)
if (s_dump) if (GSConfig.DumpGSData)
{ {
GSmkdir(root_hw.c_str()); GSmkdir(root_hw.c_str());
GSmkdir(root_sw.c_str()); GSmkdir(root_sw.c_str());
@ -2085,9 +2079,9 @@ void GSState::Read(u8* mem, int len)
m_mem.ReadImageX(m_tr.x, m_tr.y, mem, len, m_env.BITBLTBUF, m_env.TRXPOS, m_env.TRXREG); m_mem.ReadImageX(m_tr.x, m_tr.y, mem, len, m_env.BITBLTBUF, m_env.TRXPOS, m_env.TRXREG);
if (s_dump && s_save && s_n >= s_saven) if (GSConfig.DumpGSData && GSConfig.SaveRT && s_n >= GSConfig.SaveN)
{ {
std::string s = m_dump_root + StringUtil::StdStringFromFormat( std::string s = s_dump_root + StringUtil::StdStringFromFormat(
"%05d_read_%05x_%d_%d_%d_%d_%d_%d.bmp", "%05d_read_%05x_%d_%d_%d_%d_%d_%d.bmp",
s_n, (int)m_env.BITBLTBUF.SBP, (int)m_env.BITBLTBUF.SBW, (int)m_env.BITBLTBUF.SPSM, s_n, (int)m_env.BITBLTBUF.SBP, (int)m_env.BITBLTBUF.SBW, (int)m_env.BITBLTBUF.SPSM,
r.left, r.top, r.right, r.bottom); r.left, r.top, r.right, r.bottom);

View File

@ -241,14 +241,7 @@ public:
int m_backed_up_ctx; int m_backed_up_ctx;
static int s_n; static int s_n;
bool s_dump; static std::string s_dump_root;
bool s_save;
bool s_savet;
bool s_savez;
bool s_savef;
int s_saven;
int s_savel;
std::string m_dump_root;
static constexpr u32 STATE_VERSION = 8; static constexpr u32 STATE_VERSION = 8;

View File

@ -629,7 +629,7 @@ void GSRenderer::VSync(u32 field, bool registers_written)
{ {
Flush(GSFlushReason::VSYNC); Flush(GSFlushReason::VSYNC);
if (s_dump && s_n >= s_saven) if (GSConfig.DumpGSData && s_n >= GSConfig.SaveN)
{ {
m_regs->Dump(root_sw + StringUtil::StdStringFromFormat("%05d_f%lld_gs_reg.txt", s_n, g_perfmon.GetFrame())); m_regs->Dump(root_sw + StringUtil::StdStringFromFormat("%05d_f%lld_gs_reg.txt", s_n, g_perfmon.GetFrame()));
} }

View File

@ -58,7 +58,7 @@ bool GSTexture::Save(const std::string& fn)
return false; return false;
} }
const int compression = theApp.GetConfigI("png_compression_level"); const int compression = GSConfig.PNGCompressionLevel;
bool success = GSPng::Save(format, fn, map.bits, m_size.x, m_size.y, map.pitch, compression); bool success = GSPng::Save(format, fn, map.bits, m_size.x, m_size.y, map.pitch, compression);
g_gs_device->DownloadTextureComplete(); g_gs_device->DownloadTextureComplete();

View File

@ -179,8 +179,7 @@ bool GSTexture11::Save(const std::string& fn)
return false; return false;
} }
int compression = theApp.GetConfigI("png_compression_level"); bool success = GSPng::Save(format, fn, static_cast<u8*>(sm.pData), desc.Width, desc.Height, sm.RowPitch, GSConfig.PNGCompressionLevel);
bool success = GSPng::Save(format, fn, static_cast<u8*>(sm.pData), desc.Width, desc.Height, sm.RowPitch, compression);
GSDevice11::GetInstance()->GetD3DContext()->Unmap(res.get(), 0); GSDevice11::GetInstance()->GetD3DContext()->Unmap(res.get(), 0);

View File

@ -37,7 +37,7 @@ GSRendererHW::GSRendererHW()
m_mipmap = (GSConfig.HWMipmap >= HWMipmapLevel::Basic); m_mipmap = (GSConfig.HWMipmap >= HWMipmapLevel::Basic);
SetTCOffset(); SetTCOffset();
m_dump_root = root_hw; s_dump_root = root_hw;
GSTextureReplacements::Initialize(m_tc); GSTextureReplacements::Initialize(m_tc);
// Hope nothing requires too many draw calls. // Hope nothing requires too many draw calls.
@ -267,11 +267,11 @@ GSTexture* GSRendererHW::GetOutput(int i, int& y_offset)
} }
#ifdef ENABLE_OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
if (s_dump) if (GSConfig.DumpGSData)
{ {
if (s_savef && s_n >= s_saven) if (GSConfig.SaveFrame && s_n >= GSConfig.SaveN)
{ {
t->Save(m_dump_root + StringUtil::StdStringFromFormat("%05d_f%lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, (int)TEX0.TBP0, psm_str(TEX0.PSM))); t->Save(s_dump_root + StringUtil::StdStringFromFormat("%05d_f%lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, (int)TEX0.TBP0, psm_str(TEX0.PSM)));
} }
} }
#endif #endif
@ -299,8 +299,8 @@ GSTexture* GSRendererHW::GetFeedbackOutput()
GSTexture* t = rt->m_texture; GSTexture* t = rt->m_texture;
#ifdef ENABLE_OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
if (s_dump && s_savef && s_n >= s_saven) if (GSConfig.DumpGSData && GSConfig.SaveFrame && s_n >= GSConfig.SaveN)
t->Save(m_dump_root + StringUtil::StdStringFromFormat("%05d_f%lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), 3, (int)TEX0.TBP0, psm_str(TEX0.PSM))); t->Save(s_dump_root + StringUtil::StdStringFromFormat("%05d_f%lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), 3, (int)TEX0.TBP0, psm_str(TEX0.PSM)));
#endif #endif
return t; return t;
@ -1278,19 +1278,19 @@ void GSRendererHW::RoundSpriteOffset()
void GSRendererHW::Draw() void GSRendererHW::Draw()
{ {
if (s_dump && (s_n >= s_saven)) if (GSConfig.DumpGSData && (s_n >= GSConfig.SaveN))
{ {
std::string s; std::string s;
// Dump Register state // Dump Register state
s = StringUtil::StdStringFromFormat("%05d_context.txt", s_n); s = StringUtil::StdStringFromFormat("%05d_context.txt", s_n);
m_env.Dump(m_dump_root + s); m_env.Dump(s_dump_root + s);
m_context->Dump(m_dump_root + s); m_context->Dump(s_dump_root + s);
// Dump vertices // Dump vertices
s = StringUtil::StdStringFromFormat("%05d_vertex.txt", s_n); s = StringUtil::StdStringFromFormat("%05d_vertex.txt", s_n);
DumpVertices(m_dump_root + s); DumpVertices(s_dump_root + s);
} }
if (IsBadFrame()) if (IsBadFrame())
@ -1778,13 +1778,13 @@ void GSRendererHW::Draw()
m_src->m_texture = *m_src->m_from_target; m_src->m_texture = *m_src->m_from_target;
} }
if (s_dump) if (GSConfig.DumpGSData)
{ {
const u64 frame = g_perfmon.GetFrame(); const u64 frame = g_perfmon.GetFrame();
std::string s; std::string s;
if (s_savet && s_n >= s_saven && m_src) if (GSConfig.SaveTexture && s_n >= GSConfig.SaveN && m_src)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_itex_%05x_%s_%d%d_%02x_%02x_%02x_%02x.dds", s = StringUtil::StdStringFromFormat("%05d_f%lld_itex_%05x_%s_%d%d_%02x_%02x_%02x_%02x.dds",
s_n, frame, (int)context->TEX0.TBP0, psm_str(context->TEX0.PSM), s_n, frame, (int)context->TEX0.TBP0, psm_str(context->TEX0.PSM),
@ -1792,30 +1792,30 @@ void GSRendererHW::Draw()
(int)context->CLAMP.MINU, (int)context->CLAMP.MAXU, (int)context->CLAMP.MINU, (int)context->CLAMP.MAXU,
(int)context->CLAMP.MINV, (int)context->CLAMP.MAXV); (int)context->CLAMP.MINV, (int)context->CLAMP.MAXV);
m_src->m_texture->Save(m_dump_root + s); m_src->m_texture->Save(s_dump_root + s);
if (m_src->m_palette) if (m_src->m_palette)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_itpx_%05x_%s.dds", s_n, frame, context->TEX0.CBP, psm_str(context->TEX0.CPSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_itpx_%05x_%s.dds", s_n, frame, context->TEX0.CBP, psm_str(context->TEX0.CPSM));
m_src->m_palette->Save(m_dump_root + s); m_src->m_palette->Save(s_dump_root + s);
} }
} }
if (rt && s_save && s_n >= s_saven) if (rt && GSConfig.SaveRT && s_n >= GSConfig.SaveN)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_rt0_%05x_%s.bmp", s_n, frame, context->FRAME.Block(), psm_str(context->FRAME.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rt0_%05x_%s.bmp", s_n, frame, context->FRAME.Block(), psm_str(context->FRAME.PSM));
if (rt->m_texture) if (rt->m_texture)
rt->m_texture->Save(m_dump_root + s); rt->m_texture->Save(s_dump_root + s);
} }
if (ds && s_savez && s_n >= s_saven) if (ds && GSConfig.SaveDepth && s_n >= GSConfig.SaveN)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_rz0_%05x_%s.bmp", s_n, frame, context->ZBUF.Block(), psm_str(context->ZBUF.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rz0_%05x_%s.bmp", s_n, frame, context->ZBUF.Block(), psm_str(context->ZBUF.PSM));
if (ds->m_texture) if (ds->m_texture)
ds->m_texture->Save(m_dump_root + s); ds->m_texture->Save(s_dump_root + s);
} }
} }
@ -1939,31 +1939,31 @@ void GSRendererHW::Draw()
(this->*m_hacks.m_oo)(); (this->*m_hacks.m_oo)();
} }
if (s_dump) if (GSConfig.DumpGSData)
{ {
const u64 frame = g_perfmon.GetFrame(); const u64 frame = g_perfmon.GetFrame();
std::string s; std::string s;
if (s_save && s_n >= s_saven) if (GSConfig.SaveRT && s_n >= GSConfig.SaveN)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_%s.bmp", s_n, frame, context->FRAME.Block(), psm_str(context->FRAME.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_%s.bmp", s_n, frame, context->FRAME.Block(), psm_str(context->FRAME.PSM));
if (rt) if (rt)
rt->m_texture->Save(m_dump_root + s); rt->m_texture->Save(s_dump_root + s);
} }
if (s_savez && s_n >= s_saven) if (GSConfig.SaveDepth && s_n >= GSConfig.SaveN)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_rz1_%05x_%s.bmp", s_n, frame, context->ZBUF.Block(), psm_str(context->ZBUF.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rz1_%05x_%s.bmp", s_n, frame, context->ZBUF.Block(), psm_str(context->ZBUF.PSM));
if (ds) if (ds)
rt->m_texture->Save(m_dump_root + s); rt->m_texture->Save(s_dump_root + s);
} }
if (s_savel > 0 && (s_n - s_saven) > s_savel) if (GSConfig.SaveL > 0 && (s_n - GSConfig.SaveN) > GSConfig.SaveL)
{ {
s_dump = 0; GSConfig.DumpGSData = 0;
} }
} }

View File

@ -235,7 +235,7 @@ bool PNGLoader(const std::string& filename, GSTextureReplacements::ReplacementTe
bool GSTextureReplacements::SavePNGImage(const std::string& filename, u32 width, u32 height, const u8* buffer, u32 pitch) bool GSTextureReplacements::SavePNGImage(const std::string& filename, u32 width, u32 height, const u8* buffer, u32 pitch)
{ {
const int compression = theApp.GetConfigI("png_compression_level"); const int compression = GSConfig.PNGCompressionLevel;
png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
if (!png_ptr) if (!png_ptr)

View File

@ -212,9 +212,6 @@ public:
using PSSelector = GSHWDrawConfig::PSSelector; using PSSelector = GSHWDrawConfig::PSSelector;
// MARK: Configuration
int m_mipmap;
// MARK: Permanent resources // MARK: Permanent resources
std::shared_ptr<std::pair<std::mutex, GSDeviceMTL*>> m_backref; std::shared_ptr<std::pair<std::mutex, GSDeviceMTL*>> m_backref;
GSMTLDevice m_dev; GSMTLDevice m_dev;

View File

@ -89,7 +89,6 @@ GSDeviceMTL::GSDeviceMTL()
, m_dev(nil) , m_dev(nil)
{ {
m_backref->second = this; m_backref->second = this;
m_mipmap = theApp.GetConfigI("mipmap");
} }
GSDeviceMTL::~GSDeviceMTL() GSDeviceMTL::~GSDeviceMTL()
@ -783,7 +782,6 @@ bool GSDeviceMTL::Create()
// Init samplers // Init samplers
MTLSamplerDescriptor* sdesc = [[MTLSamplerDescriptor new] autorelease]; MTLSamplerDescriptor* sdesc = [[MTLSamplerDescriptor new] autorelease];
const int anisotropy = theApp.GetConfigI("MaxAnisotropy");
for (size_t i = 0; i < std::size(m_sampler_hw); i++) for (size_t i = 0; i < std::size(m_sampler_hw); i++)
{ {
GSHWDrawConfig::SamplerSelector sel; GSHWDrawConfig::SamplerSelector sel;
@ -826,7 +824,7 @@ bool GSDeviceMTL::Create()
sdesc.tAddressMode = sel.tav ? MTLSamplerAddressModeRepeat : MTLSamplerAddressModeClampToEdge; sdesc.tAddressMode = sel.tav ? MTLSamplerAddressModeRepeat : MTLSamplerAddressModeClampToEdge;
sdesc.rAddressMode = MTLSamplerAddressModeClampToEdge; sdesc.rAddressMode = MTLSamplerAddressModeClampToEdge;
sdesc.maxAnisotropy = anisotropy && sel.aniso ? anisotropy : 1; sdesc.maxAnisotropy = GSConfig.MaxAnisotropy && sel.aniso ? GSConfig.MaxAnisotropy : 1;
sdesc.lodMaxClamp = sel.lodclamp ? 0.25f : FLT_MAX; sdesc.lodMaxClamp = sel.lodclamp ? 0.25f : FLT_MAX;
[sdesc setLabel:[NSString stringWithFormat:@"%s%s %s%s", taudesc, tavdesc, magname, minname]]; [sdesc setLabel:[NSString stringWithFormat:@"%s%s %s%s", taudesc, tavdesc, magname, minname]];

View File

@ -97,7 +97,7 @@ bool GSDeviceOGL::Create()
if (!GLLoader::check_gl_requirements()) if (!GLLoader::check_gl_requirements())
return false; return false;
if (!theApp.GetConfigB("disable_shader_cache")) if (!GSConfig.DisableShaderCache)
{ {
if (!m_shader_cache.Open(false, EmuFolders::Cache, SHADER_CACHE_VERSION)) if (!m_shader_cache.Open(false, EmuFolders::Cache, SHADER_CACHE_VERSION))
Console.Warning("Shader cache failed to open."); Console.Warning("Shader cache failed to open.");

View File

@ -410,8 +410,7 @@ bool GSTextureOGL::Save(const std::string& fn)
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
} }
int compression = theApp.GetConfigI("png_compression_level"); return GSPng::Save(fmt, fn, image.get(), m_size.x, m_size.y, pitch, GSConfig.PNGCompressionLevel);
return GSPng::Save(fmt, fn, image.get(), m_size.x, m_size.y, pitch, compression);
} }
void GSTextureOGL::Swap(GSTexture* tex) void GSTextureOGL::Swap(GSTexture* tex)

View File

@ -38,7 +38,7 @@ static int compute_best_thread_height(int threads)
// - but not too small to keep the threading overhead low // - but not too small to keep the threading overhead low
// - ideal value between 3 and 5, or log2(64 / number of threads) // - ideal value between 3 and 5, or log2(64 / number of threads)
int th = theApp.GetConfigI("extrathreads_height"); int th = GSConfig.SWExtraThreadsHeight;
if (th > 0 && th < 9) if (th > 0 && th < 9)
return th; return th;

View File

@ -44,7 +44,7 @@ GSRendererSW::GSRendererSW(int threads)
std::fill(std::begin(m_fzb_pages), std::end(m_fzb_pages), 0); std::fill(std::begin(m_fzb_pages), std::end(m_fzb_pages), 0);
std::fill(std::begin(m_tex_pages), std::end(m_tex_pages), 0); std::fill(std::begin(m_tex_pages), std::end(m_tex_pages), 0);
m_dump_root = root_sw; s_dump_root = root_sw;
} }
GSRendererSW::~GSRendererSW() GSRendererSW::~GSRendererSW()
@ -201,11 +201,11 @@ GSTexture* GSRendererSW::GetOutput(int i, int& y_offset)
m_texture[i]->Update(out_r, m_output, pitch); m_texture[i]->Update(out_r, m_output, pitch);
if (s_dump) if (GSConfig.DumpGSData)
{ {
if (s_savef && s_n >= s_saven) if (GSConfig.SaveFrame && s_n >= GSConfig.SaveN)
{ {
m_texture[i]->Save(m_dump_root + StringUtil::StdStringFromFormat("%05d_f%lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, (int)DISPFB.Block(), psm_str(DISPFB.PSM))); m_texture[i]->Save(s_dump_root + StringUtil::StdStringFromFormat("%05d_f%lld_fr%d_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), i, (int)DISPFB.Block(), psm_str(DISPFB.PSM)));
} }
} }
} }
@ -333,21 +333,21 @@ void GSRendererSW::Draw()
{ {
const GSDrawingContext* context = m_context; const GSDrawingContext* context = m_context;
if (s_dump) if (GSConfig.DumpGSData)
{ {
std::string s; std::string s;
if (s_n >= s_saven) if (s_n >= GSConfig.SaveN)
{ {
// Dump Register state // Dump Register state
s = StringUtil::StdStringFromFormat("%05d_context.txt", s_n); s = StringUtil::StdStringFromFormat("%05d_context.txt", s_n);
m_env.Dump(m_dump_root + s); m_env.Dump(s_dump_root + s);
m_context->Dump(m_dump_root + s); m_context->Dump(s_dump_root + s);
// Dump vertices // Dump vertices
s = StringUtil::StdStringFromFormat("%05d_vertex.txt", s_n); s = StringUtil::StdStringFromFormat("%05d_vertex.txt", s_n);
DumpVertices(m_dump_root + s); DumpVertices(s_dump_root + s);
} }
} }
@ -454,7 +454,7 @@ void GSRendererSW::Draw()
// //
if (s_dump) if (GSConfig.DumpGSData)
{ {
Sync(2); Sync(2);
@ -465,67 +465,67 @@ void GSRendererSW::Draw()
// It will breaks the few games that really uses 16 bits RT // It will breaks the few games that really uses 16 bits RT
bool texture_shuffle = ((context->FRAME.PSM & 0x2) && ((context->TEX0.PSM & 3) == 2) && (m_vt.m_primclass == GS_SPRITE_CLASS)); bool texture_shuffle = ((context->FRAME.PSM & 0x2) && ((context->TEX0.PSM & 3) == 2) && (m_vt.m_primclass == GS_SPRITE_CLASS));
if (s_savet && s_n >= s_saven && PRIM->TME) if (GSConfig.SaveTexture && s_n >= GSConfig.SaveN && PRIM->TME)
{ {
if (texture_shuffle) if (texture_shuffle)
{ {
// Dump the RT in 32 bits format. It helps to debug texture shuffle effect // Dump the RT in 32 bits format. It helps to debug texture shuffle effect
s = StringUtil::StdStringFromFormat("%05d_f%lld_itexraw_%05x_32bits.bmp", s_n, frame, (int)m_context->TEX0.TBP0); s = StringUtil::StdStringFromFormat("%05d_f%lld_itexraw_%05x_32bits.bmp", s_n, frame, (int)m_context->TEX0.TBP0);
m_mem.SaveBMP(m_dump_root + s, m_context->TEX0.TBP0, m_context->TEX0.TBW, 0, 1 << m_context->TEX0.TW, 1 << m_context->TEX0.TH); m_mem.SaveBMP(s_dump_root + s, m_context->TEX0.TBP0, m_context->TEX0.TBW, 0, 1 << m_context->TEX0.TW, 1 << m_context->TEX0.TH);
} }
s = StringUtil::StdStringFromFormat("%05d_f%lld_itexraw_%05x_%s.bmp", s_n, frame, (int)m_context->TEX0.TBP0, psm_str(m_context->TEX0.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_itexraw_%05x_%s.bmp", s_n, frame, (int)m_context->TEX0.TBP0, psm_str(m_context->TEX0.PSM));
m_mem.SaveBMP(m_dump_root + s, m_context->TEX0.TBP0, m_context->TEX0.TBW, m_context->TEX0.PSM, 1 << m_context->TEX0.TW, 1 << m_context->TEX0.TH); m_mem.SaveBMP(s_dump_root + s, m_context->TEX0.TBP0, m_context->TEX0.TBW, m_context->TEX0.PSM, 1 << m_context->TEX0.TW, 1 << m_context->TEX0.TH);
} }
if (s_save && s_n >= s_saven) if (GSConfig.SaveRT && s_n >= GSConfig.SaveN)
{ {
if (texture_shuffle) if (texture_shuffle)
{ {
// Dump the RT in 32 bits format. It helps to debug texture shuffle effect // Dump the RT in 32 bits format. It helps to debug texture shuffle effect
s = StringUtil::StdStringFromFormat("%05d_f%lld_rt0_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block()); s = StringUtil::StdStringFromFormat("%05d_f%lld_rt0_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block());
m_mem.SaveBMP(m_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, 0, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, 0, GetFrameRect().width(), 512);
} }
s = StringUtil::StdStringFromFormat("%05d_f%lld_rt0_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), psm_str(m_context->FRAME.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rt0_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), psm_str(m_context->FRAME.PSM));
m_mem.SaveBMP(m_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, GetFrameRect().width(), 512);
} }
if (s_savez && s_n >= s_saven) if (GSConfig.SaveDepth && s_n >= GSConfig.SaveN)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_rz0_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), psm_str(m_context->ZBUF.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rz0_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), psm_str(m_context->ZBUF.PSM));
m_mem.SaveBMP(m_dump_root + s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, GetFrameRect().width(), 512);
} }
Queue(data); Queue(data);
Sync(3); Sync(3);
if (s_save && s_n >= s_saven) if (GSConfig.SaveRT && s_n >= GSConfig.SaveN)
{ {
if (texture_shuffle) if (texture_shuffle)
{ {
// Dump the RT in 32 bits format. It helps to debug texture shuffle effect // Dump the RT in 32 bits format. It helps to debug texture shuffle effect
s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block()); s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_32bits.bmp", s_n, frame, m_context->FRAME.Block());
m_mem.SaveBMP(m_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, 0, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, 0, GetFrameRect().width(), 512);
} }
s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), psm_str(m_context->FRAME.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_%s.bmp", s_n, frame, m_context->FRAME.Block(), psm_str(m_context->FRAME.PSM));
m_mem.SaveBMP(m_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, GetFrameRect().width(), 512);
} }
if (s_savez && s_n >= s_saven) if (GSConfig.SaveDepth && s_n >= GSConfig.SaveN)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_rz1_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), psm_str(m_context->ZBUF.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rz1_%05x_%s.bmp", s_n, frame, m_context->ZBUF.Block(), psm_str(m_context->ZBUF.PSM));
m_mem.SaveBMP(m_dump_root + s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, GetFrameRect().width(), 512);
} }
if (s_savel > 0 && (s_n - s_saven) > s_savel) if (GSConfig.SaveL > 0 && (s_n - GSConfig.SaveN) > GSConfig.SaveL)
{ {
s_dump = 0; GSConfig.DumpGSData = 0;
} }
} }
else else
@ -604,18 +604,18 @@ void GSRendererSW::Sync(int reason)
{ {
std::string s; std::string s;
if (s_save) if (GSConfig.SaveRT)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->FRAME.Block(), psm_str(m_context->FRAME.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_rt1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->FRAME.Block(), psm_str(m_context->FRAME.PSM));
m_mem.SaveBMP(m_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->FRAME.Block(), m_context->FRAME.FBW, m_context->FRAME.PSM, GetFrameRect().width(), 512);
} }
if (s_savez) if (GSConfig.SaveDepth)
{ {
s = StringUtil::StdStringFromFormat("%05d_f%lld_zb1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->ZBUF.Block(), psm_str(m_context->ZBUF.PSM)); s = StringUtil::StdStringFromFormat("%05d_f%lld_zb1_%05x_%s.bmp", s_n, g_perfmon.GetFrame(), m_context->ZBUF.Block(), psm_str(m_context->ZBUF.PSM));
m_mem.SaveBMP(m_dump_root + s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, GetFrameRect().width(), 512); m_mem.SaveBMP(s_dump_root + s, m_context->ZBUF.Block(), m_context->FRAME.FBW, m_context->ZBUF.PSM, GetFrameRect().width(), 512);
} }
} }
@ -1571,13 +1571,13 @@ void GSRendererSW::SharedData::UpdateSource()
// TODO // TODO
if (g_gs_renderer->s_dump) if (GSConfig.DumpGSData)
{ {
u64 frame = g_perfmon.GetFrame(); u64 frame = g_perfmon.GetFrame();
std::string s; std::string s;
if (g_gs_renderer->s_savet && g_gs_renderer->s_n >= g_gs_renderer->s_saven) if (GSConfig.SaveTexture && g_gs_renderer->s_n >= GSConfig.SaveN)
{ {
for (size_t i = 0; m_tex[i].t != NULL; i++) for (size_t i = 0; m_tex[i].t != NULL; i++)
{ {

View File

@ -91,7 +91,7 @@ bool GSTextureSW::Save(const std::string& fn)
#else #else
GSPng::Format fmt = GSPng::RGB_PNG; GSPng::Format fmt = GSPng::RGB_PNG;
#endif #endif
int compression = theApp.GetConfigI("png_compression_level"); int compression = GSConfig.PNGCompressionLevel;
return GSPng::Save(fmt, fn, static_cast<u8*>(m_data), m_size.x, m_size.y, m_pitch, compression); return GSPng::Save(fmt, fn, static_cast<u8*>(m_data), m_size.x, m_size.y, m_pitch, compression);
} }

View File

@ -489,6 +489,7 @@ bool Pcsx2Config::GSOptions::OptionsAreEqual(const GSOptions& right) const
OpEqu(ShadeBoost_Brightness) && OpEqu(ShadeBoost_Brightness) &&
OpEqu(ShadeBoost_Contrast) && OpEqu(ShadeBoost_Contrast) &&
OpEqu(ShadeBoost_Saturation) && OpEqu(ShadeBoost_Saturation) &&
OpEqu(PNGCompressionLevel) &&
OpEqu(SaveN) && OpEqu(SaveN) &&
OpEqu(SaveL) && OpEqu(SaveL) &&
@ -693,6 +694,7 @@ void Pcsx2Config::GSOptions::ReloadIniSettings()
GSSettingInt(ShadeBoost_Brightness); GSSettingInt(ShadeBoost_Brightness);
GSSettingInt(ShadeBoost_Contrast); GSSettingInt(ShadeBoost_Contrast);
GSSettingInt(ShadeBoost_Saturation); GSSettingInt(ShadeBoost_Saturation);
GSSettingIntEx(PNGCompressionLevel, "png_compression_level");
GSSettingIntEx(SaveN, "saven"); GSSettingIntEx(SaveN, "saven");
GSSettingIntEx(SaveL, "savel"); GSSettingIntEx(SaveL, "savel");

View File

@ -310,7 +310,6 @@
<ClCompile Include="GS\Renderers\HW\GSRendererHWMultiISA.cpp" /> <ClCompile Include="GS\Renderers\HW\GSRendererHWMultiISA.cpp" />
<ClCompile Include="GS\Renderers\Null\GSRendererNull.cpp" /> <ClCompile Include="GS\Renderers\Null\GSRendererNull.cpp" />
<ClCompile Include="GS\Renderers\SW\GSRendererSW.cpp" /> <ClCompile Include="GS\Renderers\SW\GSRendererSW.cpp" />
<ClCompile Include="GS\Window\GSSetting.cpp" />
<ClCompile Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.cpp" /> <ClCompile Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.cpp" />
<ClCompile Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.all.cpp" /> <ClCompile Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.all.cpp" />
<ClCompile Include="GS\GSState.cpp" /> <ClCompile Include="GS\GSState.cpp" />
@ -653,7 +652,6 @@
<ClInclude Include="GS\Renderers\Null\GSRendererNull.h" /> <ClInclude Include="GS\Renderers\Null\GSRendererNull.h" />
<ClInclude Include="GS\Renderers\SW\GSRendererSW.h" /> <ClInclude Include="GS\Renderers\SW\GSRendererSW.h" />
<ClInclude Include="GS\Renderers\SW\GSScanlineEnvironment.h" /> <ClInclude Include="GS\Renderers\SW\GSScanlineEnvironment.h" />
<ClInclude Include="GS\Window\GSSetting.h" />
<ClInclude Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.h" /> <ClInclude Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.h" />
<ClInclude Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.all.h" /> <ClInclude Include="GS\Renderers\SW\GSSetupPrimCodeGenerator.all.h" />
<ClInclude Include="GS\GSState.h" /> <ClInclude Include="GS\GSState.h" />
@ -893,4 +891,4 @@
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" /> <ImportGroup Label="ExtensionTargets" />
</Project> </Project>

View File

@ -1175,9 +1175,6 @@
<ClCompile Include="GS\GSCapture.cpp"> <ClCompile Include="GS\GSCapture.cpp">
<Filter>System\Ps2\GS\Window</Filter> <Filter>System\Ps2\GS\Window</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="GS\Window\GSSetting.cpp">
<Filter>System\Ps2\GS\Window</Filter>
</ClCompile>
<ClCompile Include="GS\Renderers\DX11\D3D.cpp"> <ClCompile Include="GS\Renderers\DX11\D3D.cpp">
<Filter>System\Ps2\GS\Renderers\Direct3D11</Filter> <Filter>System\Ps2\GS\Renderers\Direct3D11</Filter>
</ClCompile> </ClCompile>
@ -2123,9 +2120,6 @@
<ClInclude Include="GS\GSCapture.h"> <ClInclude Include="GS\GSCapture.h">
<Filter>System\Ps2\GS\Window</Filter> <Filter>System\Ps2\GS\Window</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="GS\Window\GSSetting.h">
<Filter>System\Ps2\GS\Window</Filter>
</ClInclude>
<ClInclude Include="GS\resource.h"> <ClInclude Include="GS\resource.h">
<Filter>System\Ps2\GS</Filter> <Filter>System\Ps2\GS</Filter>
</ClInclude> </ClInclude>