Dolphin, the GameCube and Wii emulator - Forums

Full Version: A question for devs-why not make jit run faster then gpu thread ( allow VPS>FPS ) ?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
(11-11-2012, 02:49 PM)skid Wrote: [ -> ]If dolphin emulates the GPU out of sync with the CPU, every game would black screen on boot.

Yeah it seems that out of sync is wrong term to use.
Of course cpu thread have to wait for results of gpu thread, what I am suggesting is that it doesnt have to do it at exact same speed or 2:1 speed of gpu thread.

(11-11-2012, 08:51 PM)neobrain Wrote: [ -> ]VPS > FPS means that the GPU can't process the amount of frame render request sent by the CPU, i.e. you're GPU-thread bound (a faster GPU will help here but is not a panacea because the GPU thread is also a fair bit CPU dependent)


EDIT: To elaborate a bit more on the second case: Like skid said, the game code takes care of this case and what most console games end up doing is "slow-motion". It would technically be possible to make the game logic dependent on the frame rate, but console games usually run at full FPS anyway so they're hardcoded for a fixed frame rate.
Needed to comment this sooner. Thing is, this does not happen with default dolphin settings.
I am suggesting to let this happen, it simply doesnt.
What happens is dolphin is slowing down jit/jitil, so it will never send not one frame render request more then gpu can process, or it will only send double the amount of frames when game is running at 30 fps, instead of letting game code take care of it.
But results, regarding game speed is equal, in both cases game will run slowmotion.
The emulator cannot control the 2:1 ratio of FPS:VPS. It is determined entirely by the game.

However, Dolphin can tell the game that it is running on an interlaced TV or progressive scan TV. Interlaced TV's are 2:1 ratio and progressive TV's are 1:1. The Accurate VBeam emulation tries to detect the sort of TV that the game is requesting and emulates the 2:1 or 1:1 ratio. The emulation still needs more work which is why it is an option right now.
(11-14-2012, 11:34 PM)skid Wrote: [ -> ]The emulator cannot control the 2:1 ratio of FPS:VPS. It is determined entirely by the game.
Not when vbeam is enabled and idle skipping disabled. Game can't cotrol the ratio then, or atleast it seems so.

(11-14-2012, 11:34 PM)skid Wrote: [ -> ]The Accurate VBeam emulation tries to detect the sort of TV that the game is requesting and emulates the 2:1 or 1:1 ratio. The emulation still needs more work which is why it is an option right now.
Yes, but combining vbeam with disabled idle skipping does more then just switch between 2:1 or 1:1 ratio.
It completely removes any ratio whatsoever between FPS and VPS.
For example, instead of only 2:1 or 1:1 we now have 3:1 or 5.5:1 ratio.
Which probaby means there is no ratio, but speed ( ratio ) is decided by hardware where dolphin is run, faster the cpu is, higher VPS will be, and faster the gpu is,higher FPS will be.
Dare I ask this? Did you have framelimiter on?
(11-16-2012, 06:17 AM)NaturalViolence Wrote: [ -> ]Dare I ask this? Did you have framelimiter on?


What that has to do with anything ?
I tested it both on and off. It only effects results when "vbeam trick" is used, limiting VPS to 60.
It has no effects whatsoever with default dolphin settings. ( with 3xIR and 4xSSAA )

If you mean that it will effect FPS/VPS ratio, of course it will, because it will limit VPS to 60, so instead around 1:3 we will have 1:1.7 ratio...
Either way, with it on or off, results don't fit 1:1 or 1:2 ratio...
No devs is willing to explain what is going on here ?
As NV said, have I successfully broken game throtling logic or not ? Smile
And if I have, is it something which can / should be implemented in dolphin ?
Or is it too much of a "hack" to be implemented ?
(11-12-2012, 09:32 AM)rpglord Wrote: [ -> ]
(11-12-2012, 09:00 AM)NaturalViolence Wrote: [ -> ]Incorrect. I have seen VPS > FPS happen with the default settings.


Usually it will only happen if game is coded to have lower fps.
For example,we all know that not all games run at 60 fps.A lot of games runs at 30 fps.
In that case, it will be 30 FPS / 60 VPS if computer is able to run the game at fullspeed.
But its fixed ratio of 1:2,game is programmed to run that way.
What I am talking here is "desynchronizing" two threads in a way, ( skid explained that true desynchronizing is imposible since we would get a black screen )
Basically letting the game code take care of sync issues intead forcibly slowing down jit/jitil recomplier.

Lets take my example where VPS>FPS by game design.
Now instead only allowing it to be 30/60 or 29/58 or 28/56 etc... allowing to for example be 29/60 20/60 15/60 etc..you get the point

I am not sure what logic they use to sync GPU and CPU, from 60 CPU requests only 30 is processed by the GPU in most games

What would help CPU sending 60 frame render requests per host if the GPU only can process 15 requests?
Next cpu cycle of requests will have other new 60 requests, then what happens with these other 15 frames(if the game runs at 30FPS) or 45 frames(if the game runs at 60FPS) of each cycle? they are dropped.
Do you like to play games with such huge framedrop?
That's why they sync vps with fps, in order to process all frames even if it gets slower.

otherwise

how could GPU process 60/fps if the CPU is only sending 20/vps?

like neobrain said, from where the data will come from?
(11-24-2012, 02:25 AM)killown Wrote: [ -> ]What would help CPU sending 60 frame render requests per host if the GPU only can process 15 requests?

It usually helps LLE sound not stutter, since DSP LLE runs at the same speed as cpu emulator engine.
There have been improvements made in HLE now as well, but person who is doing it ( delroth ) said his HLE implementation will also have stuttering sound if game is not running fullspeed, so I think it would help with new HLE as well.

(11-24-2012, 02:25 AM)killown Wrote: [ -> ]Next cpu cycle of requests will have other new 60 requests, then what happens with these other 15 frames(if the game runs at 30FPS) or 45 frames(if the game runs at 60FPS) of each cycle? they are dropped.
Do you like to play games with such huge framedrop?
Um no, they are dropped now as well in a sense, since in this case VPS would run at 15 fps instead of 60 fps it is capable of, basically not rendering other 45 frames it should be rendering.
There is no any noticable difference, besides better sounding audio, games run at exactly same speed.


(11-24-2012, 02:25 AM)killown Wrote: [ -> ]how could GPU process 60/fps if the CPU is only sending 20/vps?

like neobrain said, from where the data will come from?

Of course it is imposible, in that case game should and can only run at 20 fps.
I am suggesting to allow VPS>FPS , not FPS>VPS
Sorry to tell you this rpglord but having talked to both of them on IRC neither skid nor neobrain care about this.
(11-24-2012, 08:41 AM)NaturalViolence Wrote: [ -> ]Sorry to tell you this rpglord but having talked to both of them on IRC neither skid nor neobrain care about this.


Haha ok, I dont really need it since I can already run all games with LLE fine.
Just thought it could help some other people with slower computers.
Pages: 1 2 3