PCSX2 / pcsx2

PCSX2 - The Playstation 2 Emulator
https://pcsx2.net
GNU General Public License v3.0
11.77k stars 1.63k forks source link

Onimusha 3 [NTSC] massive GS performace hit in cutscenes on higher than native resolution. #1495

Closed RazielZnot closed 4 years ago

RazielZnot commented 8 years ago

So, I checked this game and to my big surprise it behaves kinda strange. Everything works flawlessly on native resolution, but changing it to 2x causes massive performance hit in cutscenes. In native mode GS usually shows 20-30% load, but in bigger modes and only in cutscenes it estimates 100% and in gameplay it stays the same as in native mode – 20-30%. On my not so new PC this causes framerate drop from steady 60 FPS to about 45.

After some experimentation I found out that setting skipdraw to 1 completely removes this weird behavior without any noticeable changes in graphics.

I tested this game in build pcsx2-v1.5.0-dev-1060.

gregory38 commented 8 years ago

The game likely uses strange depth configuration. If you disable depth emulation you will have some speedup too. Hum actually could you test without the large framebuffer option.

RazielZnot commented 8 years ago

With depth emulation disabled and without large framebuffer I don't see difference, only skipdraw = 1 gives the best result for me.

And I noticed one little detail, that performance hit is biggest when characters are most close to the camera view. Here it's good. 1 And here it's bad. 2

jcdenton2k commented 8 years ago

Very weird bug O_o I just noticed this: http://wiki.pcsx2.net/index.php/Onimusha_3:_Demon_Siege Do you happen to have Dolby Digital ProLogic II enabled in the sounds? Could you disable it and try testing again?

gregory38 commented 8 years ago

Skikpdraw = 1 is very close to disable depth emulation. What is the speed in native, 2x, 3x ? And what is your CPU/GPU ?

RazielZnot commented 8 years ago

CPU: i3 2120 3.3 GHz GPU: GeForce GTS 450

In native mode performance is perfect, FPS is always steady 60FPS.

In 2x in cutscenes 40-60 FPS - without skipdraw, 60 FPS - with skipdraw. In gameplay 60 FPS with and without skipdraw.

In 3x in cutscenes 20 FPS - without skipdraw, 30-55 FPS - with skipdraw, in gameplay 35-60 FPS with and without skipdraw.

So, this performance impact happens the most when main characters stay very close to the camera view. Disabling depth emulation helps very little, effect is almost unnoticeable but depth emulation is required to unlock door in the sewer, so there is no point to disable it.

gregory38 commented 8 years ago

Coud you monitor your gpu activity? The game likely read back the target. It is costly on both cpu and gpu.

RazielZnot commented 8 years ago

GPU usage without skipdraw: Native - cutscenes - 20-50%, gameplay - 25-40%. 2x - cutscenes - 50-100%, gameplay - 50-80%. With skipdraw: Native - cutscenes - 20-40%, gameplay - 25-40%. 2x - cuscenes - 50-80%, gameplay 50-80%.

I noticed that in intro cutscene with Jack in Paris there is haze-like tint, it boosts colors and makes the biggest performance drop and it is pretty constant to the end of that cutscene. Skipdraw disables that tint. But in all other cutscenes I can't see any difference at all and yet framerate still drops. Like if there some kind of mask applied to the characters to produce postprocessing and cover their models, that's why framerate drops the most when they are closer to the camera view. And sometimes this mask covers whole screen like in case with the intro in Paris.

gregory38 commented 8 years ago

Do you have vsync enabled? Did you try custom resolution (depth won't work but just to check the perf).

Honestly, I'm afraid that you're PC can't do it. The increase of accuracy comes with a price. The last small effects are the most expensive.

RazielZnot commented 8 years ago

Do you have vsync enabled? Did you try custom resolution (depth won't work but just to check the perf).

Vsync always disabled. And with custom resolution emulator just crashes in the first ingame intro.

Honestly, I'm afraid that you're PC can't do it. The increase of accuracy comes with a price. The last small effects are the most expensive.

Well, that's sucks, with other games I didn't had such issues. Personally I don't care about graphics at all, even native resolution could be enough for me if it wasn't so damn blurry. The worst thing that PCSX2 makes it even blurrier when scales framebuffer to the window. I think, integer scaling without filtering could be very useful for this case, but we don't have, so this is even more sucks. This is the main reason why I play in 2x mode.

jcdenton2k commented 8 years ago

Well, that's sucks, with other games I didn't had such issues. None of that matters, by the way. On the same system you can have drastically different performance on a per-game basis depending on how well/poorly it is emulated, how many emulation bugs are unresolved, and how accurate you want the emulation to be.

There's always the option of playing on the original console on a CRT so the 'blurry' stuff isn't that big a deal with that setup. Might be worth a shot at experimenting with the various accuracy/hacks options and seeing what works for you. The wiki I linked earlier has a few tips as well.

RazielZnot commented 8 years ago

There's always the option of playing on the original console on a CRT so the 'blurry' stuff isn't that big a deal with that setup.

Nonsense. This is PCSX2 fault that image looks so blurry in native resolution when it is scaled to the window. And some games already have scaled image in the output framebuffer, so they have that lame antialiasing effect, but PCSX2 takes that picture and blurs it even more.

The wiki I linked earlier has a few tips as well.

That wiki is useless. I don't have problems listed there.

And about PCSX2 performance. If emulator struggles on some basic effects then this is definitely optimization issue. You can spend lots of money on top notch PC but is it really worth it when developers don't care about optimization? I don't believe in such "philosophy" that if we have gigabytes of memory and gigahertzes of speed then people don't need to count each byte and each hertz.

gregory38 commented 8 years ago
And about PCSX2 performance. If emulator struggles on some basic effects then this is definitely optimization issue. You can spend lots of money on top notch PC but is it really worth it when developers don't care about optimization? I don't believe in such "philosophy" that if we have gigabytes of memory and gigahertzes of speed then people don't need to count each byte and each hertz.

Why do you call the effect basic ? There are maybe basic effect on modern game on modern GPU but there were very complex effect when the PS2 was released. And due to the emulation nature they become even more complex. It doesn't help that modern GPU struggle to support feature supported by the PS2. Some reading here => http://pcsx2.net/developer-blog/277-channel-shuffle-effect.html

So, you can't say that we don't care about optimization. We can optimize more but it will drop the support of pre-Maxwell v2 GPU.

An upscaling require to process a million of extra pixels in less than 16 ms. It isn't free.

RazielZnot commented 8 years ago

@gregory38 so far GS emulation is very slow in some games. Something must be done to change this situation. Do you know that Echo Night Beyond works much slower in hardware with native resolution than in software mode? I don't think that's OK. I never have full speed in this game when I switch to hardware, but in software framerate is always silky smooth. I believe that the reason is in accurate blending, because it is responsible for correct rendering of the walls.

So, you can't say that we don't care about optimization. We can optimize more but it will drop the support of pre-Maxwell v2 GPU.

And how about making another plugin for this case?

gregory38 commented 8 years ago

Solution call Nvidia/AMD/Intel to ask to put back feature supported on the GS but not in the GPU. GPU are faster if you could use hardware unit to do the computing. If you can't, there are no magically faster. So a couple of games are slower than the SW renderer. Accurate blending done on the SW renderer is a million time faster. Beside you might need a quad core to use this feature properly because the GPU will driver will need nearly a CPU core for itself. 90% of the hardware renderer are speed optimizations to emulate the GS the best as we can.

And how about making another plugin for this case?
RazielZnot commented 8 years ago

Sooner or later it must be done anyway. Why not start from now? Procrastination is very bad thing and even little progress is still progress. At lest some prototyping could be very useful, I think.

gregory38 commented 8 years ago

How dare you say that I'm a procrastinator. Look at the git commit log https://github.com/PCSX2/pcsx2

Again I don't any GPU to develop this kind of new renderer. And I have others priority. You're not alone, some people want some glitch fixes. Some performances. Some extra effects. I have a full time jobs + a family to handle.

willkuer commented 8 years ago

This issue just shows again why we have a forum on pcsx2.net and why we have a bug tracker on github. You shouldn't handle such stuff gregory. There is some strong lack of understanding around and obviously no intention to fill this gap with relevant information but just the typical 'write everything from scratch to make it better'-Ansatz.

RazielZnot commented 8 years ago

@gregory38 I didn't say that you are, I mean it in general, you just misunderstood what I wanted to tell. And I apologize if my words sounded to you like this, I really didn't know that it can sound like an insult.

What I really mean that if something doesn't work right then it is no need to do it in one sitting, but bit by bit do it in long time. Example: for many years people complain about mipmapping issue and imagine where we could be now if somebody just started to work with this issue from the moment when it was shown for the first time. That's it.

ssakash commented 8 years ago

What I really mean that if something doesn't work right then it is no need to do it in one sitting, but bit by bit do it in long time.

This is an open source project, if someone becomes interested in fixing the issue, they will fix it.

If you want an immediate change then you should be the one to make that change. You're free to do it bit by bit (or) whatever way you feel like but no need to point your fingers at other developers who are busy with their RL schedule.

RazielZnot commented 8 years ago

@ssakash I already said that I don't want immediate change, this was the main point of my words.

jcdenton2k commented 8 years ago

@RazielZnot you really need to stop with this, please!

First off, I'm immensely grateful to all the developers of all open-source and free software that I use daily. Go back about 20-30 years and you'd be hard-pressed to find anything worth a damn that was usable and now we have SO MUCH that is not only free but FLOSS (Free and Libre Open Source Software). This is an AMAZING time we live in!

Realize that everything is done by volunteers in their spare time with very few exceptions. Programming is DIFFICULT work and incredibly brain-intensive. All I had to do was analyze some Chrono Trigger code using Temporal Flux to fix a longstanding bug in the racing minigame and it took me over two hours for that ONE little thing! And then I ended up just bypassing the bug instead of actually fixing it because of size constraints within that part of the code!

So right now you can: -Learn to code and then fork this project and do whatever changes you feel you want to do. -Support PCSX2 with some recurring donations on a monthly basis and encourage others to do so. -Realize that we get what we get and we should be grateful for the ability to play PS2 games on our PC, imperfectly or otherwise. -Developer priorities are what they are because they work with the code quite often and they know what they want to work on (for free in their spare time with no compensation). -Offer to help test out games in your collection with a variety of builds (stable and git ones) to help identify and resolve bugs rather than just complain about them.

If you're wondering what I do? I am grateful, realize dev priorities, and offer to help test out things when I can. It is a little bit but every bit helps. :)

RazielZnot commented 8 years ago

@jcdenton2k //_-) https://en.wikipedia.org/wiki/Sycophancy

MrCK1 commented 8 years ago

@RazielZnot posting stuff like that is not only rude, but it's very immature and disrespectful of fellow contributors.

As we said before, if you'd like to see the issue fixed; you should contribute the code yourself or patiently wait for a fix.

Attacking others makes us even less likely to help you if you can't respect us; or the work we put in during our free time.

RazielZnot commented 8 years ago

@MrCK1 sorry for that, but I didn't asked his opinion

And just to clarify my position, I respect PCSX2 team and all what was done so far by team. I don't force anybody to do something what they can't do, this was just a little dispute driven by my curiosity, that's all. I asked questions and I was given all needed answers.

gregory38 commented 8 years ago

Please let's stop this drama.

To conclude, the issue is that I work slowly on a feature. I won't work on others activities. If I work on all in parallel, nothing will progress. So a small performance issue that got a workaround isn't a priority. (small because a faster PC might compensate it).

lightningterror commented 4 years ago

I will close this as it looks like a gpu bottleneck.