gonetz / GLideN64

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

starcraft shakes #2208

Open olivieryuyu opened 4 years ago

olivieryuyu commented 4 years ago

run in the intro, the screen shakes

loganmc10 commented 4 years ago

Are you talking about the intro video? In mupen64plus it doesn't shake, but it looks like this:

starcraft_64-000

However, it seems to work fine when running in 1x native res

fzurita commented 4 years ago

@loganmc10 I think that video needs "stripped" background render mode.

loganmc10 commented 4 years ago

It's weird, sometimes it seems to do it, sometimes it doesn't even with stripped mode, but in either case I don't see any shaking

gonetz commented 4 years ago

I don't see any shaking

I also can't reproduce the issue. I fixed an issue with the intro in "OnePiece" mode. @olivieryuyu please test again. If the issue can be reproduced, please give me your GLideN64.ini, or try to reset the settings.

Searinox commented 3 years ago

I think the lack of details in the main post here is being a problem, and then the issue got further derailed by a report of unrelated FMV graphic corruption. Let's try again...

The intro - expansion pak detected, N64 logo, Blizz entertainment and Mass Media logos - are shaking very rapidly - I'd gather once per frame - from left to right. Happening 100% on my end.

EDIT: This seems to go away if Threaded Video is unchecked. EDIT 2: Confirmed. It went away on all future attempts, then came back as soon as I re-enabled Threaded Video.

fzurita commented 3 years ago

Hmmm, ok... Probably have to fix this.

fzurita commented 3 years ago

Can I get a video of it since I don't see it on my end?

Searinox commented 3 years ago

https://drive.google.com/file/d/12lKR2lEWmdqQ-Rh-8NO_l4xbrjA79POf/view

Note that since the video isn't 60 FPS the effect sometimes doesn't sync up with the frames in the video, and it appears to go away for a while. It persisted right up to the title screen. It is in fact doing that every other frame, so 30 times a second.

fzurita commented 3 years ago

This seems to only happen with NVidia. I tried a few Android devices and AMD Radeon and it doesn't happen there. It did happen in my Nvidia graphics card though.

It doesn't happen with NVidia if I change "frame buffer swap" to color buffer change.

fzurita commented 3 years ago

@gonetz Can you re-open this?

fzurita commented 3 years ago

For reference, these are the commands executed on each shake:

2021/05/22,21:43:17.134,opengl_Command.cpp:31,ERROR, "Command: glActiveTexture"
2021/05/22,21:43:17.135,opengl_Command.cpp:31,ERROR, "Command: glBindTexture"
2021/05/22,21:43:17.135,opengl_Command.cpp:31,ERROR, "Command: glTexSubImage2D"
2021/05/22,21:43:17.135,opengl_Command.cpp:31,ERROR, "Command: glUseProgram"
2021/05/22,21:43:17.136,opengl_Command.cpp:31,ERROR, "Command: glBindFramebuffer"
2021/05/22,21:43:17.136,opengl_Command.cpp:31,ERROR, "Command: glDisable"
2021/05/22,21:43:17.136,opengl_Command.cpp:31,ERROR, "Command: glViewport"
2021/05/22,21:43:17.136,opengl_Command.cpp:31,ERROR, "Command: glDrawArrays"
2021/05/22,21:43:17.136,opengl_Command.cpp:31,ERROR, "Command: glEnable"
2021/05/22,21:43:17.137,opengl_Command.cpp:31,ERROR, "Command: glBindFramebuffer"
2021/05/22,21:43:17.137,opengl_Command.cpp:31,ERROR, "Command: glBindFramebuffer"
2021/05/22,21:43:17.137,opengl_Command.cpp:31,ERROR, "Command: glDisable"
2021/05/22,21:43:17.137,opengl_Command.cpp:31,ERROR, "Command: glClearBufferfv"
2021/05/22,21:43:17.138,opengl_Command.cpp:31,ERROR, "Command: glEnable"
2021/05/22,21:43:17.138,opengl_Command.cpp:31,ERROR, "Command: glDisable"
2021/05/22,21:43:17.138,opengl_Command.cpp:31,ERROR, "Command: glDepthMask"
2021/05/22,21:43:17.138,opengl_Command.cpp:31,ERROR, "Command: glClear"
2021/05/22,21:43:17.138,opengl_Command.cpp:31,ERROR, "Command: glEnable"
2021/05/22,21:43:17.139,opengl_Command.cpp:31,ERROR, "Command: glActiveTexture"
2021/05/22,21:43:17.139,opengl_Command.cpp:31,ERROR, "Command: glBindTexture"
2021/05/22,21:43:17.139,opengl_Command.cpp:31,ERROR, "Command: glViewport"
2021/05/22,21:43:17.139,opengl_Command.cpp:31,ERROR, "Command: glDisablei"
2021/05/22,21:43:17.139,opengl_Command.cpp:31,ERROR, "Command: glDepthMask"
2021/05/22,21:43:17.139,opengl_Command.cpp:31,ERROR, "Command: glUseProgram"
2021/05/22,21:43:17.140,opengl_Command.cpp:31,ERROR, "Command: glDisable"
2021/05/22,21:43:17.140,opengl_Command.cpp:31,ERROR, "Command: glDrawArrays"
2021/05/22,21:43:17.140,opengl_Command.cpp:31,ERROR, "Command: glEnable"
2021/05/22,21:43:17.140,opengl_Command.cpp:31,ERROR, "Command: glBindFramebuffer"
2021/05/22,21:43:17.140,opengl_Command.cpp:31,ERROR, "Command: glBindFramebuffer"
2021/05/22,21:43:17.140,opengl_Command.cpp:31,ERROR, "Command: glViewport"
2021/05/22,21:43:17.141,opengl_Command.cpp:31,ERROR, "Command: glEnablei"
2021/05/22,21:43:17.141,opengl_Command.cpp:31,ERROR, "Command: glUseProgram"
2021/05/22,21:43:17.141,opengl_Command.cpp:31,ERROR, "Command: glActiveTexture"
2021/05/22,21:43:17.141,opengl_Command.cpp:31,ERROR, "Command: glBindTexture"
2021/05/22,21:43:17.141,opengl_Command.cpp:31,ERROR, "Command: glDrawArrays"
2021/05/22,21:43:17.142,opengl_Command.cpp:31,ERROR, "Command: WindowsSwapBuffersCommand"
2021/05/22,21:43:17.142,opengl_Command.cpp:31,ERROR, "Command: glBindFramebuffer"

If I make any of them synchronous on the NVidia GPU, the issue goes away. I suspect it may have something to do with the glViewPort command.

fzurita commented 3 years ago

I think this must be a driver bug. There is no difference on what is going to the driver in threaded or non-threaded mode. The only difference that I can see is the timing of the calls.

This only happens with NVidia as well. I should probably check if it happens in Android.

fzurita commented 3 years ago

Ok, I finally have the problem. It's a problem with the RingBufferPool in the threaded renderer, when setting the initial size to 10MB, it doesn't happen. There seems to be a problem when the buffer is grown to accommodate the large 640x480x4 byte textures that the game uses.

fzurita commented 3 years ago

@olivieryuyu Can you verify that it's fixed for now?