gsdump: implement renderer overrides, fix linux GSRT, remove GS assert

This commit is contained in:
Gauvain 'GovanifY' Roussel-Tarbouriech 2021-03-08 09:07:40 +01:00 committed by Kojin
parent 0020568823
commit 6249831bb9
4 changed files with 25 additions and 9 deletions

View File

@ -328,8 +328,6 @@ bool AppCorePlugins::Shutdown()
void AppCorePlugins::Close()
{
AffinityAssert_AllowFrom_CoreThread();
if (!NeedsClose())
return;

View File

@ -633,8 +633,24 @@ void Dialogs::GSDumpDialog::GSThread::ExecuteTaskInThread()
{
GSDump::isRunning = true;
u32 crc = 0, ss = 0;
// XXX: check the numbers are correct
const int renderer_override = m_root_window->m_renderer_overrides->GetSelection();
s8 renderer_override = 0;
switch (m_root_window->m_renderer_overrides->GetSelection())
{
// OGL SW
case 1:
renderer_override = 13;
break;
// D3D11 HW
case 2:
renderer_override = 3;
break;
// OGL HW
case 3:
renderer_override = 12;
break;
default:
break;
}
char regs[8192];
m_dump_file->Read(&crc, 4);
@ -709,7 +725,7 @@ void Dialogs::GSDumpDialog::GSThread::ExecuteTaskInThread()
}
GSsetBaseMem((void*)regs);
if (GSopen2((void*)pDsp, renderer_override) != 0)
if (GSopen2((void*)pDsp, (renderer_override<<24)) != 0)
{
OnStop();
return;

View File

@ -413,8 +413,9 @@ EXPORT_C_(int) GSopen2(void** dsp, uint32 flags)
{
static bool stored_toggle_state = false;
const bool toggle_state = !!(flags & 4);
auto current_renderer = theApp.GetCurrentRendererType();
GSRendererType current_renderer = static_cast<GSRendererType>(flags >> 24);
if (current_renderer == GSRendererType::NO_RENDERER)
current_renderer = theApp.GetCurrentRendererType();
if (current_renderer != GSRendererType::Undefined && stored_toggle_state != toggle_state)
{

View File

@ -231,10 +231,11 @@ enum class GS_MIN_FILTER : uint8_t
enum class GSRendererType : int8_t
{
Undefined = -1,
NO_RENDERER = 0,
DX1011_HW = 3,
Null = 11,
OGL_HW,
OGL_SW,
OGL_HW = 12,
OGL_SW = 13,
#ifdef _WIN32
Default = Undefined