Dolphin, the GameCube and Wii emulator - Forums

Full Version: Hyrule Field Slowdown Observation
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I need to know the file that this function is contained in before I can do that though. Tongue
Class view => Search YieldCPU():
[color=#696969]..\Core\Common\Src\Thread.h => 216 inline void YieldCPU()[/color]

That one? Is just _mm_pause .. O_O"
I don't think that is it, that doesn't seem to do much of anything if it does anything at all. The code would likely be in the C++ file, but I can't seem to find YieldCPU() in thread.cpp, so the actual function might exist in a different file. I'm going to check the Fifo.cpp and Fifo.h to see if this function exists in there.

Scratch what I mentioned above, upon examining the files and the functions a bit more I was aware of what they were for. Fifo.cpp references thread.h, YieldCPU() functions exist in both these files.

If there is anything you would like me to test skid, be sure to let me know. Smile
I think we are passed the point of testing and at the point of needing some coding being done. I enjoy testing things just as you seem to, but since the problem is already known but is just not quite fixed yet, no amount of testing is going to magically make the correct code appear in the emulator.
I realize that, I was thinking of anything skid could suggest changing in the YieldCPU(); function that way I can test to see if it has any impact on the slowdowns and report back, this way it saves the developers some work since they have already done some amazing work on the emulator.
(03-29-2010, 01:11 PM)KrossX Wrote: [ -> ]Class view => Search YieldCPU():
[color=#696969]..\Core\Common\Src\Thread.h => 216 inline void YieldCPU()[/color]

That one? Is just _mm_pause .. O_O"

Yes, that is the one. The fix is to replace it with something better than _mm_pause. What to replace it with? dunno.
Quote:#ifdef _WIN32
YieldProcessor();
#elif defined(_M_IX86) || defined(_M_X64)
_mm_pause();
#endif
}

Is this code commented out in thread.h? If so, why is it commented out?
(03-29-2010, 03:13 PM)skid Wrote: [ -> ]
(03-29-2010, 01:11 PM)KrossX Wrote: [ -> ]Class view => Search YieldCPU():
[color=#696969]..\Core\Common\Src\Thread.h => 216 inline void YieldCPU()[/color]

That one? Is just _mm_pause .. O_O"

Yes, that is the one. The fix is to replace it with something better than _mm_pause. What to replace it with? dunno.

How about __yield

http://msdn.microsoft.com/en-us/library/2b2h26kx%28VS.80%29.aspx
I did a bit more testing and it seems the slowdowns do in fact occur in single core mode.
(03-29-2010, 09:05 AM)skid Wrote: [ -> ]It is generally known what is causing it to slow down, but a suitable solution has not been found.

And is it only found in this game or is it also known or suspected for others? (might get some clues through this)