mirror of https://github.com/PCSX2/pcsx2.git
gs: remove old pre-mtgs cruft
This commit is contained in:
parent
740b421ce8
commit
8095490d23
|
@ -58,7 +58,6 @@ extern bool RunLinuxDialog();
|
||||||
#undef None
|
#undef None
|
||||||
|
|
||||||
static GSRenderer* s_gs = NULL;
|
static GSRenderer* s_gs = NULL;
|
||||||
static void (*s_irq)() = NULL;
|
|
||||||
static uint8* s_basemem = NULL;
|
static uint8* s_basemem = NULL;
|
||||||
static int s_vsync = 0;
|
static int s_vsync = 0;
|
||||||
static bool s_exclusive = true;
|
static bool s_exclusive = true;
|
||||||
|
@ -147,7 +146,7 @@ void GSclose()
|
||||||
int _GSopen(void** dsp, const char* title, GSRendererType renderer, int threads = -1)
|
int _GSopen(void** dsp, const char* title, GSRendererType renderer, int threads = -1)
|
||||||
{
|
{
|
||||||
GSDevice* dev = NULL;
|
GSDevice* dev = NULL;
|
||||||
bool old_api = *dsp == NULL;
|
ASSERT(dsp != nullptr);
|
||||||
|
|
||||||
// Fresh start up or config file changed
|
// Fresh start up or config file changed
|
||||||
if (renderer == GSRendererType::Undefined)
|
if (renderer == GSRendererType::Undefined)
|
||||||
|
@ -234,22 +233,8 @@ int _GSopen(void** dsp, const char* title, GSRendererType renderer, int threads
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (old_api)
|
wnd->Attach(win_handle, false);
|
||||||
{
|
|
||||||
// old-style API expects us to create and manage our own window:
|
|
||||||
wnd->Create(title, w, h);
|
|
||||||
|
|
||||||
wnd->Show();
|
|
||||||
|
|
||||||
*dsp = wnd->GetDisplay();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wnd->Attach(win_handle, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
window = wnd; // Previous code will throw if window isn't supported
|
window = wnd; // Previous code will throw if window isn't supported
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
catch (GSRecoverableError)
|
catch (GSRecoverableError)
|
||||||
|
@ -335,12 +320,8 @@ int _GSopen(void** dsp, const char* title, GSRendererType renderer, int threads
|
||||||
}
|
}
|
||||||
|
|
||||||
s_gs->SetRegsMem(s_basemem);
|
s_gs->SetRegsMem(s_basemem);
|
||||||
s_gs->SetIrqCallback(s_irq);
|
|
||||||
s_gs->SetVSync(s_vsync);
|
s_gs->SetVSync(s_vsync);
|
||||||
|
|
||||||
if (!old_api)
|
|
||||||
s_gs->SetMultithreaded(true);
|
|
||||||
|
|
||||||
if (!s_gs->CreateDevice(dev))
|
if (!s_gs->CreateDevice(dev))
|
||||||
{
|
{
|
||||||
// This probably means the user has DX11 configured with a video card that is only DX9
|
// This probably means the user has DX11 configured with a video card that is only DX9
|
||||||
|
@ -424,40 +405,6 @@ int GSopen2(void** dsp, uint32 flags)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GSopen(void** dsp, const char* title, int mt)
|
|
||||||
{
|
|
||||||
GSRendererType renderer = GSRendererType::Default;
|
|
||||||
|
|
||||||
// Legacy GUI expects to acquire vsync from the configuration files.
|
|
||||||
|
|
||||||
s_vsync = theApp.GetConfigI("vsync");
|
|
||||||
|
|
||||||
if (mt == 2)
|
|
||||||
{
|
|
||||||
// pcsx2 sent a switch renderer request
|
|
||||||
mt = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// normal init
|
|
||||||
|
|
||||||
renderer = static_cast<GSRendererType>(theApp.GetConfigI("Renderer"));
|
|
||||||
}
|
|
||||||
|
|
||||||
*dsp = NULL;
|
|
||||||
|
|
||||||
int retval = _GSopen(dsp, title, renderer);
|
|
||||||
|
|
||||||
if (retval == 0 && s_gs)
|
|
||||||
{
|
|
||||||
s_gs->SetMultithreaded(!!mt);
|
|
||||||
}
|
|
||||||
|
|
||||||
gsopen_done = true;
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSreset()
|
void GSreset()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -753,16 +700,6 @@ int GStest()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSirqCallback(void (*irq)())
|
|
||||||
{
|
|
||||||
s_irq = irq;
|
|
||||||
|
|
||||||
if (s_gs)
|
|
||||||
{
|
|
||||||
s_gs->SetIrqCallback(s_irq);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void pt(const char* str)
|
void pt(const char* str)
|
||||||
{
|
{
|
||||||
struct tm* current;
|
struct tm* current;
|
||||||
|
|
|
@ -1780,7 +1780,6 @@ int _GSopen(void** dsp, const char* title, GSRendererType renderer, int threads)
|
||||||
void GSosdLog(const char* utf8, uint32 color);
|
void GSosdLog(const char* utf8, uint32 color);
|
||||||
void GSosdMonitor(const char* key, const char* value, uint32 color);
|
void GSosdMonitor(const char* key, const char* value, uint32 color);
|
||||||
int GSopen2(void** dsp, uint32 flags);
|
int GSopen2(void** dsp, uint32 flags);
|
||||||
int GSopen(void** dsp, const char* title, int mt);
|
|
||||||
void GSreset();
|
void GSreset();
|
||||||
void GSgifSoftReset(uint32 mask);
|
void GSgifSoftReset(uint32 mask);
|
||||||
void GSwriteCSR(uint32 csr);
|
void GSwriteCSR(uint32 csr);
|
||||||
|
@ -1798,7 +1797,6 @@ void GSkeyEvent(const HostKeyEvent& e);
|
||||||
int GSfreeze(FreezeAction mode, freezeData* data);
|
int GSfreeze(FreezeAction mode, freezeData* data);
|
||||||
void GSconfigure();
|
void GSconfigure();
|
||||||
int GStest();
|
int GStest();
|
||||||
void GSirqCallback(void (*irq)());
|
|
||||||
bool GSsetupRecording(std::string& filename);
|
bool GSsetupRecording(std::string& filename);
|
||||||
void GSendRecording();
|
void GSendRecording();
|
||||||
void GSsetGameCRC(uint32 crc, int options);
|
void GSsetGameCRC(uint32 crc, int options);
|
||||||
|
|
|
@ -24,8 +24,6 @@ int GSState::s_n = 0;
|
||||||
|
|
||||||
GSState::GSState()
|
GSState::GSState()
|
||||||
: m_version(6)
|
: m_version(6)
|
||||||
, m_mt(false)
|
|
||||||
, m_irq(NULL)
|
|
||||||
, m_path3hack(0)
|
, m_path3hack(0)
|
||||||
, m_gsc(NULL)
|
, m_gsc(NULL)
|
||||||
, m_skip(0)
|
, m_skip(0)
|
||||||
|
@ -160,34 +158,6 @@ void GSState::SetRegsMem(uint8* basemem)
|
||||||
m_regs = (GSPrivRegSet*)basemem;
|
m_regs = (GSPrivRegSet*)basemem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSState::SetIrqCallback(void (*irq)())
|
|
||||||
{
|
|
||||||
m_irq = irq;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSState::SetMultithreaded(bool mt)
|
|
||||||
{
|
|
||||||
// Some older versions of PCSX2 didn't properly set the irq callback to NULL
|
|
||||||
// in multithreaded mode (possibly because ZeroGS itself would assert in such
|
|
||||||
// cases), and didn't bind them to a dummy callback either. PCSX2 handles all
|
|
||||||
// IRQs internally when multithreaded anyway -- so let's ignore them here:
|
|
||||||
|
|
||||||
m_mt = mt;
|
|
||||||
|
|
||||||
if (mt)
|
|
||||||
{
|
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_SIGNAL] = &GSState::GIFRegHandlerNull;
|
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_FINISH] = &GSState::GIFRegHandlerNull;
|
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_LABEL] = &GSState::GIFRegHandlerNull;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_SIGNAL] = &GSState::GIFRegHandlerSIGNAL;
|
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_FINISH] = &GSState::GIFRegHandlerFINISH;
|
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_LABEL] = &GSState::GIFRegHandlerLABEL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSState::SetFrameSkip(int skip)
|
void GSState::SetFrameSkip(int skip)
|
||||||
{
|
{
|
||||||
if (m_frameskip == skip)
|
if (m_frameskip == skip)
|
||||||
|
@ -359,7 +329,9 @@ void GSState::ResetHandlers()
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_TRXDIR] = &GSState::GIFRegHandlerTRXDIR;
|
m_fpGIFRegHandlers[GIF_A_D_REG_TRXDIR] = &GSState::GIFRegHandlerTRXDIR;
|
||||||
m_fpGIFRegHandlers[GIF_A_D_REG_HWREG] = &GSState::GIFRegHandlerHWREG;
|
m_fpGIFRegHandlers[GIF_A_D_REG_HWREG] = &GSState::GIFRegHandlerHWREG;
|
||||||
|
|
||||||
SetMultithreaded(m_mt);
|
m_fpGIFRegHandlers[GIF_A_D_REG_SIGNAL] = &GSState::GIFRegHandlerNull;
|
||||||
|
m_fpGIFRegHandlers[GIF_A_D_REG_FINISH] = &GSState::GIFRegHandlerNull;
|
||||||
|
m_fpGIFRegHandlers[GIF_A_D_REG_LABEL] = &GSState::GIFRegHandlerNull;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSState::isinterlaced()
|
bool GSState::isinterlaced()
|
||||||
|
@ -1388,37 +1360,6 @@ void GSState::GIFRegHandlerHWREG(const GIFReg* RESTRICT r)
|
||||||
Write(reinterpret_cast<const uint8*>(r), 8); // haunting ground
|
Write(reinterpret_cast<const uint8*>(r), 8); // haunting ground
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSState::GIFRegHandlerSIGNAL(const GIFReg* RESTRICT r)
|
|
||||||
{
|
|
||||||
GL_REG("SIGNAL = 0x%x_%x", r->u32[1], r->u32[0]);
|
|
||||||
|
|
||||||
m_regs->SIGLBLID.SIGID = (m_regs->SIGLBLID.SIGID & ~r->SIGNAL.IDMSK) | (r->SIGNAL.ID & r->SIGNAL.IDMSK);
|
|
||||||
|
|
||||||
if (m_regs->CSR.wSIGNAL)
|
|
||||||
m_regs->CSR.rSIGNAL = 1;
|
|
||||||
|
|
||||||
if (!m_regs->IMR.SIGMSK && m_irq)
|
|
||||||
m_irq();
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSState::GIFRegHandlerFINISH(const GIFReg* RESTRICT r)
|
|
||||||
{
|
|
||||||
GL_REG("FINISH = 0x%x_%x", r->u32[1], r->u32[0]);
|
|
||||||
|
|
||||||
if (m_regs->CSR.wFINISH)
|
|
||||||
m_regs->CSR.rFINISH = 1;
|
|
||||||
|
|
||||||
if (!m_regs->IMR.FINISHMSK && m_irq)
|
|
||||||
m_irq();
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSState::GIFRegHandlerLABEL(const GIFReg* RESTRICT r)
|
|
||||||
{
|
|
||||||
GL_REG("LABEL = 0x%x_%x", r->u32[1], r->u32[0]);
|
|
||||||
|
|
||||||
m_regs->SIGLBLID.LBLID = (m_regs->SIGLBLID.LBLID & ~r->LABEL.IDMSK) | (r->LABEL.ID & r->LABEL.IDMSK);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSState::Flush()
|
void GSState::Flush()
|
||||||
{
|
{
|
||||||
FlushWrite();
|
FlushWrite();
|
||||||
|
@ -2112,21 +2053,11 @@ void GSState::Transfer(const uint8* mem, uint32 size)
|
||||||
{
|
{
|
||||||
if (size == 0 && path.nloop > 0)
|
if (size == 0 && path.nloop > 0)
|
||||||
{
|
{
|
||||||
if (m_mt)
|
// Hackfix for BIOS, which sends an incomplete packet when it does an XGKICK without
|
||||||
{
|
// having an EOP specified anywhere in VU1 memory. Needed until PCSX2 is fixed to
|
||||||
// Hackfix for BIOS, which sends an incomplete packet when it does an XGKICK without
|
// handle it more properly (ie, without looping infinitely).
|
||||||
// having an EOP specified anywhere in VU1 memory. Needed until PCSX2 is fixed to
|
|
||||||
// handle it more properly (ie, without looping infinitely).
|
|
||||||
|
|
||||||
path.nloop = 0;
|
path.nloop = 0;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Unused in 0.9.7 and above, but might as well keep this for now; allows GS
|
|
||||||
// to work with legacy editions of PCSX2.
|
|
||||||
|
|
||||||
Transfer<0>(mem - 0x4000, 0x4000 / 16);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,15 +119,9 @@ class GSState : public GSAlignedClass<32>
|
||||||
void GIFRegHandlerTRXREG(const GIFReg* RESTRICT r);
|
void GIFRegHandlerTRXREG(const GIFReg* RESTRICT r);
|
||||||
void GIFRegHandlerTRXDIR(const GIFReg* RESTRICT r);
|
void GIFRegHandlerTRXDIR(const GIFReg* RESTRICT r);
|
||||||
void GIFRegHandlerHWREG(const GIFReg* RESTRICT r);
|
void GIFRegHandlerHWREG(const GIFReg* RESTRICT r);
|
||||||
void GIFRegHandlerSIGNAL(const GIFReg* RESTRICT r);
|
|
||||||
void GIFRegHandlerFINISH(const GIFReg* RESTRICT r);
|
|
||||||
void GIFRegHandlerLABEL(const GIFReg* RESTRICT r);
|
|
||||||
|
|
||||||
int m_version;
|
int m_version;
|
||||||
int m_sssize;
|
int m_sssize;
|
||||||
|
|
||||||
bool m_mt;
|
|
||||||
void (*m_irq)();
|
|
||||||
bool m_path3hack;
|
bool m_path3hack;
|
||||||
|
|
||||||
struct GSTransferBuffer
|
struct GSTransferBuffer
|
||||||
|
@ -274,6 +268,4 @@ public:
|
||||||
virtual void SetGameCRC(uint32 crc, int options);
|
virtual void SetGameCRC(uint32 crc, int options);
|
||||||
void SetFrameSkip(int skip);
|
void SetFrameSkip(int skip);
|
||||||
void SetRegsMem(uint8* basemem);
|
void SetRegsMem(uint8* basemem);
|
||||||
void SetIrqCallback(void (*irq)());
|
|
||||||
void SetMultithreaded(bool mt = true);
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -226,12 +226,6 @@ union PacketTagType
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
static void dummyIrqCallback()
|
|
||||||
{
|
|
||||||
// dummy, because MTGS doesn't need this mess!
|
|
||||||
// (and zerogs does >_<)
|
|
||||||
}
|
|
||||||
|
|
||||||
void SysMtgsThread::OpenGS()
|
void SysMtgsThread::OpenGS()
|
||||||
{
|
{
|
||||||
if (m_Opened)
|
if (m_Opened)
|
||||||
|
@ -242,7 +236,6 @@ void SysMtgsThread::OpenGS()
|
||||||
|
|
||||||
memcpy(RingBuffer.Regs, PS2MEM_GS, sizeof(PS2MEM_GS));
|
memcpy(RingBuffer.Regs, PS2MEM_GS, sizeof(PS2MEM_GS));
|
||||||
GSsetBaseMem(RingBuffer.Regs);
|
GSsetBaseMem(RingBuffer.Regs);
|
||||||
GSirqCallback(dummyIrqCallback);
|
|
||||||
|
|
||||||
pxAssertMsg((GSopen2((void**)pDsp, 1 | (renderswitch ? 4 : 0)) == 0), "GS failed to open!");
|
pxAssertMsg((GSopen2((void**)pDsp, 1 | (renderswitch ? 4 : 0)) == 0), "GS failed to open!");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue