Skip to content

Commit c548a67

Browse files
authored
Merge pull request #25 from ps2dev/FixIMRWorkaround
Remove IMR workaround
2 parents 8b77628 + 0b9d47a commit c548a67

File tree

1 file changed

+2
-17
lines changed

1 file changed

+2
-17
lines changed

src/glcontext.cpp

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,6 @@ void CGLContext::RenderGeometry()
343343

344344
int CGLContext::GsIntHandler(int cause)
345345
{
346-
int ret = 0;
347-
348346
uint32_t csr = *(volatile uint32_t*)GS::ControlRegs::csr;
349347
// is this a signal interrupt?
350348
if (csr & 1) {
@@ -369,8 +367,6 @@ int CGLContext::GsIntHandler(int cause)
369367
*(volatile uint64_t*)GS::ControlRegs::siglblid = sigLblId;
370368
// clear the exception and wait for the next
371369
*(volatile unsigned int*)GS::ControlRegs::csr = 1;
372-
373-
ret = -1; // don't call other handlers
374370
}
375371
}
376372
// is this a vsync interrupt?
@@ -380,20 +376,9 @@ int CGLContext::GsIntHandler(int cause)
380376
*(volatile unsigned int*)GS::ControlRegs::csr = 8;
381377
}
382378

383-
// I'm not entirely sure why this is necessary, but if I don't do
384-
// it then framing out can cause the display thread to lock (I've
385-
// only verified it frozen waiting on pglFinishRenderingGeometry().)
386-
// The GS manual says that a second "signal" event occuring before
387-
// the first is cleared causes the gs to stop drawing, and the second
388-
// interrupt will not be raised until that interrupt (signal) is masked
389-
// and then unmasked. Could something similar be true for gs events/
390-
// interrupts in general? This needs to be here, not in the vsync branch.
391-
if (ret == -1) {
392-
*(volatile unsigned int*)GS::ControlRegs::imr = 0x7f00;
393-
*(volatile unsigned int*)GS::ControlRegs::imr = 0x7600;
394-
}
379+
ExitHandler();
395380

396-
return ret;
381+
return 0;
397382
}
398383

399384
void CGLContext::FinishRenderingGeometry(bool forceImmediateStop)

0 commit comments

Comments
 (0)