mupen64plus / mupen64plus-video-rice

Video plugin for the Mupen64Plus v2.0 project, using OpenGL. This plugin is based on the RiceVideoLinux plugin from earlier versions of Mupen64Plus.
31 stars 40 forks source link

Rice fixes #23

Closed Gillou68310 closed 9 years ago

Gillou68310 commented 9 years ago

Flashing textures example:

Frame X-1 texture ok: zelda_castle_001

Frame X texture not ok: zelda_castle_002

Frame X+1 texture ok (same as Frame X-1).

richard42 commented 9 years ago

Are you sure that this won't cause a regression by clearing the color buffer after each SwapBuffers call? It seems like quite a few games (Kirby 64 I think, and others) sometimes don't clear the screen on every redraw and rely on the graphics buffer retaining its old contents.

Gillou68310 commented 9 years ago

I checked Kirby 64 everything seems fine, do you recall any other games doing this?

Narann commented 9 years ago

The texture flashing should be fixed by the incoming Rice refactoring.

Plus: using "gl" prefix instead of "hand imported pgl" cause possible cross platform regression (I agree this is something we need to fix).

The heart fix is interesting. I will create ticket for this.

About the force clear, create such unconditional clear can potentially affect other games and the N64 hardware doesn't clear the buffer at swapping so if it's not N64 behaviour, it's a hack and if it's a hack it had to be conditional. So the question here is: What are you trying to achieve? :)

@Gillou68310 I will do a push request for the Rice refactoring. I will now also only work on the official repo. All this fixes are interesting but they would be lost/irrelevant with the refactored Rice.

I close this (Richard, feel free to repoen it if you think it's relevant) and create separate tickets to keep a track of your commits and integrate them in the refactored Rice code.

Gillou68310 commented 9 years ago

it's a hack and if it's a hack it had to be conditional. So the question here is: What are you trying to achieve? :)

This fix garbage outside the VI window with some crappy GLES driver. I didn't notice any regression using this hack that's why I didn't make it conditional but I agree that this is a hack and it should be conditional.

On another subject I tested this https://github.com/Narann/mupen64plus-video-rice/commit/7273e0aeaa3aa651b7f62fe963910d771c57d3ed Still have wrong textures color on GLES ;-) Did you managed to setup a PowerVR environnement?

littleguy77 commented 9 years ago

Still have wrong textures color on GLES ;-)

The GL code path uses GL_BGRA ordering in many places. Unfortunately, GLES2 only supports it as an extension GL_BGRA_EXT, which can't be relied on for every GLES2 device. I wonder what the performance penalty would be to replace all instances of GL_BGRA with GL_RGBA (and make the requisite changes to the encoding/decoding logic, e.g. in ReadScreen2).

Narann commented 9 years ago

I identified the problem.

I will update the OGLTexture to find the best format permutation at runtime depending user options and available extensions. I will open a ticket to track this. :)

Did you managed to setup a PowerVR environnement?

Not yet but not too far. :D

Narann commented 9 years ago

Ticket to make the OGLTexture nicer created.