Permalink
Browse files
DS GX: Hack around writing to a full FIFO that has a swap pending (fi…
- Loading branch information...
Showing
with
6 additions
and
0 deletions.
-
+1
−0
CHANGES
-
+5
−0
src/ds/gx.c
|
|
@@ -12,6 +12,7 @@ Bugfixes: |
|
|
- DS GX: Fix 4-color texture coordinates
|
|
|
- DS GX: Reset polygon attributes between buffer swaps
|
|
|
- DS Video: Fix blend bit on windows for 3D layer (fixes mgba.io/i/611)
|
|
|
+ - DS GX: Hack around writing to a full FIFO that has a swap pending (fixes mgba.io/i/608)
|
|
|
Misc:
|
|
|
- DS: Set boot complete bit in RAM on boot (fixes mgba.io/i/576, mgba.io/i/580, mgba.io/i/586)
|
|
|
- DS Memory: Ensure DS9 I/O is 8-byte aligned
|
|
|
|
|
|
@@ -1374,6 +1374,11 @@ static void DSGXWriteFIFO(struct DSGX* gx, struct DSGXEntry entry) { |
|
|
mLOG(DS_GX, INFO, "FIFO full");
|
|
|
while (gx->p->cpuBlocked & DS_CPU_BLOCK_GX) {
|
|
|
// Can happen from STM
|
|
|
+ if (gx->swapBuffers) {
|
|
|
+ // XXX: Let's hope those GX entries aren't important, since STM isn't preemptable
|
|
|
+ mLOG(DS_GX, ERROR, "FIFO full with swap pending");
|
|
|
+ return;
|
|
|
+ }
|
|
|
mTimingDeschedule(&gx->p->ds9.timing, &gx->fifoEvent);
|
|
|
_fifoRun(&gx->p->ds9.timing, gx, 0);
|
|
|
}
|
|
|
|
0 comments on commit
01738f3