gonetz / GLideN64

A new generation, open-source graphics plugin for N64 emulators.
Other
771 stars 179 forks source link

A lot of stuttering when using latest versions. #2749

Open roioros opened 1 year ago

roioros commented 1 year ago

I don't know if it's my problem or if it happens in general but using the latest development versions I have a big stuttering problem.

This problem is fixed when the plugin finishes caching the shadows to disk, but if I don't have the cache done, the stuttering appears.

It happens in all games, but in some it is not very noticeable, while in others it is very visible, one of the games where this is most noticeable is Beetle Adventure Racing! (in the intro for example)

This problem doesn't happen to me using Public Release 4.0 or using other video plugins.

It would be great if I could make a video, so you can see what I'm talking about, but I don't know how to do it.

roioros commented 1 year ago

Luckily I was able to record two videos so you can see what I'm talking about:

Public Release 4.0

Watch the video

Latest dev build -----> cb6e6cb

Watch the video

Jj0YzL5nvJ commented 1 year ago

Micro stuttering by shader cache compilation... it's more of a hardware limitation, NVMe and M.2 can help a bit. If your GPU is stupidly fast, you can even disable the shader cache at the cost of increasing GPU usage.

roioros commented 1 year ago

Hi, I am using a SSD disk (SATA connector) and my video card is an AMD r9 280x.

This problem does not happen, as seen in the videos and I commented before, with the Public Release 4.0.

I also tried to disable the shader cache from the plugin and from the drivers and the same happens.

Jj0YzL5nvJ commented 1 year ago

I hope you are using Adrenalin 22.6.1...

Try with: Enable inaccurate texture coordinates

I use RX 460 with Mesa drivers on Linux, and the threaded video helps a lot. GLideN64's threaded video doesn't work on Windows. If you use Windows without an NVIDIA card with minimal support for OpenGL 4.5, you won't have a good experience...

roioros commented 1 year ago

I am using Windows 7 and I was using 19.5.2 drivers, then I changed them to the Adrenalin 21.5.2, which are the ones I currently use, and there was no change. I also tried one by one the plugin options but the result was the same, it's very frustrating.

Why with old versions of the plugin this problem does not appear?

Is there any solution?

Thanks.

Jj0YzL5nvJ commented 1 year ago

I also tried one by one the plugin options but the result was the same, it's very frustrating.

If you did the testing without erasing the shader cache after each test or disabling the shader cache completely, I'm sorry to inform you that your test results were invalid.

Why with old versions of the plugin this problem does not appear?

The old versions "communicated" with the hardware (GPU) more directly, some software calculations (GPU+CPU) are now used, so the "communication" is slower than before.

Is there any solution?

In theory it can be mitigated by using triple buffering... but it won't disappear entirely.

roioros commented 1 year ago

If you did the testing without erasing the shader cache after each test or disabling the shader cache completely, I'm sorry to inform you that your test results were invalid.

Before each test I clear the cache of the shaders created by the plugin, which are stored in: AppData\Local\AMD\GLCache

In the plugin options I don't have the option "Store compiled shaders for performance" enabled, In the case that I enable it, I also clear the cache created by the plugin inside the emulator (stored in: Plugin\GFX\shaders).

In theory it can be mitigated by using triple buffering... but it won't disappear entirely.

Enabling triple buffering does not improve the stuttering problem.

If in the future GLideN64 also used Vulkan, would it improve?

AMD video cards are known to have very poor OpenGL support.

To do tests, where can I download versions of the plugin that are from the year 2019/2020?

If there is no solution I will have to use, unfortunately, the Public Release 4.0.

roioros commented 1 year ago

Sorry for asking again, but does anyone know where I can download the development versions from the years 2019-2020 so I can tests them and see which one works best for me, because at some point in 2020-early 2021 the problems with stuttering started.

Thanks.

Jj0YzL5nvJ commented 1 year ago

1574

2037

roioros commented 1 year ago

Great, fantastic, thank you so much.

I'm going to download those versions and I'm going to start the testings.

roioros commented 1 year ago

I was able to do the tests and all the versions that I was able to download work fine, they don't do the stuttering that the latest versions do to me.

The last version that was available for download was the one from 07/01/2020.

If there are more newer versions than that (07/01/2020), I couldn't find them.

Jj0YzL5nvJ commented 1 year ago

If there are more newer versions than that (07/01/2020)

https://github.com/Jj0YzL5nvJ/GLideN64/actions/runs/4287592186

What emulator are you using?

roioros commented 1 year ago

Thank you very much for that pack of old versions, I will download it to continue testing.

The emulator I use is Project64, the latest version (v3.0.1).

roioros commented 1 year ago

I just finished doing the tests and the versions that do less stuttering are:

GLideN64-115399aa GLideN64-438bcc46 GLideN64-47013e24 GLideN64-4974f64a

All the others that were in the pack do a lot of stuttering.

Jj0YzL5nvJ commented 1 year ago

Try these: https://github.com/Jj0YzL5nvJ/GLideN64/actions/runs/4297643251

roioros commented 1 year ago

I finished testing with that new pack you gave me:

Less stuttering

GLideN64-3df3df99 GLideN64-4c8a40c6 GLideN64-4f58d66e GLideN64-46d170e5 GLideN64-4974f64a

A lot of stuttering

GLideN64-c48841cf GLideN64-ed1648c4

Without stuttering (broken plugin)

GLideN64-c14ae30c

This last one did not have stuttering but it does not work as it should since it does not show many screens and all the graphics are corrupted.

Jj0YzL5nvJ commented 1 year ago

According to your tests, the source of the issue is: c48841cfebff118af634135bc0f6a6a02bf4e7d4

roioros commented 1 year ago

To test, do you have the version before and after when that option was implemented?

Thanks.

Jj0YzL5nvJ commented 1 year ago

To test, do you have the version before and after when that option was implemented?

Look it yourself. Search using the first 7 hash characters and you will understand better.

The plugins you tested were recompiled on my demand using GitHub Actions with custom scripts.

https://github.com/Jj0YzL5nvJ/GLideN64/compare/1f4d04f43b53739bc9b128ab5577d20e3d60ed6a...c555ff25ab5a474f4d48bb5f13d204c64ffd522a (random selection on my part...) https://github.com/Jj0YzL5nvJ/GLideN64/compare/1f4d04f43b53739bc9b128ab5577d20e3d60ed6a...238a3ab1f1690278fd66dcf443c907ae0d79a955 (more accurate selection)

Maybe @gonetz could find those YAML scripts more useful...

In Linux I usually compile with -DVEC4_OPT="ON" and run with ThreadedVideo = True, maybe that's why I don't notice so much micro stuttering...

That's all from me... bisected to c48841cfebff118af634135bc0f6a6a02bf4e7d4

roioros commented 1 year ago

Thank you very much for all your help, I really appreciate it.

Hopefully @gonetz can help us and see if he can solve this stuttering problem.

LuismaSP89 commented 1 year ago

Same issue here with the latest version. RTX 4070, 32 GB of ram & 13600KF. I really don't understand why there are this huge slowdowns and stutterings in most games.

roioros commented 1 year ago

Does the same thing happen to you too?

Unfortunately the latest versions don't work very well, that's why as I mentioned above I have to use an old version of the plugin that works very well, the last version that works for me without (or almost without) stuttering is the one from January 7, 2020, in case you want to try it.

LuismaSP89 commented 1 year ago

Yes, but that old version doesn't have features that I use a lot, like the emulated fullscreen.

Anyway, I'm a bit confused, because after some more testing I realized that the emulator has a lot of stuttering even with other plugins such as jabo video core, so maybe the problem is my pc. The strange thing is that this is the only emulator I'm having this problems, in my old computer everything worked fine, and this pc is a lot stronger than the old one.

roioros commented 1 year ago

I use the latest stable version of Project64 (v3.0.1) and all plugins except the latest versions of GLideN64 work fine.

Even the plugins paraLLEl-RDP and Angrylion work without problems.

I assume it's a problem with OpenGL and AMD video cards, since their support is poor.