Use a possibly harmless hack to prevent hangs.

Not sure where the problem is, but this fixes it pretty consistently for
me... seems like lists are somehow not being processed after becoming
processable?
This commit is contained in:
Unknown W. Brackets 2013-08-10 20:03:43 -07:00
parent 639ab8306b
commit e0f699fd5f
2 changed files with 6 additions and 0 deletions

View File

@ -304,6 +304,8 @@ void GLES_GPU::SetDisplayFramebuffer(u32 framebuf, u32 stride, GEBufferFormat fo
} }
bool GLES_GPU::FramebufferDirty() { bool GLES_GPU::FramebufferDirty() {
// FIXME: Workaround for displaylists sometimes hanging unprocessed. Not yet sure of the cause.
ScheduleEvent(GPU_EVENT_PROCESS_QUEUE);
// Allow it to process fully before deciding if it's dirty. // Allow it to process fully before deciding if it's dirty.
SyncThread(); SyncThread();

View File

@ -46,6 +46,8 @@ void GPUCommon::PopDLQueue() {
} }
u32 GPUCommon::DrawSync(int mode) { u32 GPUCommon::DrawSync(int mode) {
// FIXME: Workaround for displaylists sometimes hanging unprocessed. Not yet sure of the cause.
ScheduleEvent(GPU_EVENT_PROCESS_QUEUE);
// Sync first, because the CPU is usually faster than the emulated GPU. // Sync first, because the CPU is usually faster than the emulated GPU.
SyncThread(); SyncThread();
@ -93,6 +95,8 @@ void GPUCommon::CheckDrawSync() {
} }
int GPUCommon::ListSync(int listid, int mode) { int GPUCommon::ListSync(int listid, int mode) {
// FIXME: Workaround for displaylists sometimes hanging unprocessed. Not yet sure of the cause.
ScheduleEvent(GPU_EVENT_PROCESS_QUEUE);
// Sync first, because the CPU is usually faster than the emulated GPU. // Sync first, because the CPU is usually faster than the emulated GPU.
SyncThread(); SyncThread();