(09-24-2014, 09:55 PM)xemnas99 Wrote: I understand that if the extra rendering threads is 0, GSDX will use only 1 core (thread). So for quad-core CPUs, the extra rendering threads should be set to 3. Do I understand this correctly?
Yes and no.
Yes to the fact that with extra threads = 0, GSdx uses 1 thread for rendering.
No to using 3 on a quad core.
Every case is different but generally it works like this: First consider hardware mode with no MTVU.
Core #0: EE recompiler
Core #1: GS recompiler
Core #2: Idle
Core #3: Idle
Now consider software mode with 0 extra threads:
Core #0: EE recompiler
Core #1: GS recompiler
Core #2: Software rendering thread #0
Core #3: Idle
Now consider software mode with 3 extra threads:
Core #0: EE recompiler + Software rendering thread #2
Core #1: GS recompiler + Software rendering thread #3
Core #2: Software rendering thread #0
Core #3: Software rendering thread #1
See how now you are sharing resources on two cores between the recompilers and the renderers? This can lead to a performance DECREASE because they are competing. It might or might not depending on the power of CPU, but it can.
Generally for a four core 2 extra threads is best. In that case you have:
Core #0: EE recompiler + Software rendering thread #2
Core #1: GS recompiler
Core #2: Software rendering thread #0
Core #3: Software rendering thread #1
But this is okay because generally the EE thread is not maxing out anyway, and you gain more from another software thread than you lose from sharing resources.
If the game's core emulation is low enough demand wise, 3 extra threads might be okay as well. But generally 2 is best for 4 cores.
Anyway, if you are having trouble staying full speed in software, it's best to experiment. But never set extra threads > cores - 1. Because then you have software threads competing with software threads so any further gain is lost. Also over 4 extra rendering threads, you have seriously diminished gains even with a lot of cores, because of cross thread communication and such.