-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update vram on render (optionally or lazily) #618
Comments
Also, in the long run, a software renderer that renders directly to the vram would be nice for ultimate accuracy, would also enable the many homebrews that mix HW rendering and "pixel poking" to work correctly. |
I wonder if we could at least do it in this case without huge performance issues: http://report.ppsspp.org/temp/recent/kind/192 FWIW, 3rd Birthday calls this: Right before a black screen. Clearly it's trying to blit the framebuffer. Another game, Vempire, has always had weird graphic issues, and it seems to do a lot of this: sceDmacMemcpy(dest=04110000, src=04088000, size=557056) That should be easily detectable and probably not a huge penalty to other games. -[Unknown] |
Oh yeah, I'm all for detecting cases like that and doing the right thing. If both source and destination are FBOs or textures maybe we can get away with doing it without glReadPixels too. |
Cool. I gave it an intial shot using In the case of 3rd Birthday: In the case of Vempire, it seems to copy to 04110000 (which never has an FBO created for it), and the copy back from it later to "clear" the screen. Here's my initial attempt: -[Unknown] |
Just wondering. Is it possible to change the GE Saving to VRAM just by changing the Hex for fb_address in ppsspp/GPU/GLES/Frambuffer.cpp, line 355? Since "textureCache_->NotifyFramebuffer(vfb->fb_address, vfb);". |
Nope, it requires a lot more code. We haven't implemented saving the rendered image to RAM at all. |
Hope someone implement this ASAP... edit: Search around the JPCSP code and I found GEProfiler.java & GETextureManager.java which I believe contains the code to save the GE to VRAM instead of Texture. I'm not entirely sure as I'm a noob at codes and stuff, but I hope this will give other people a head start. It seems to import other java files to "map" the codes together. It also uses the same hash code for START_VRAM address which is 0x04000000. |
Another example of this is Legend of Heroes 1. When you save, it takes a screenshot and stores it as the save icon. It does this by doing a block transfer: If we supported downloads in block transfers (when the destination isn't a fbo, which there's a separate bug for), this would work and would not require making the game unplayably slow on mobile. -[Unknown] |
Indeed, that wouldn't be too hard to do. |
@unknownbrackets Just curious what is "downloads in block transfer" ? |
It means that the game does a block transfer "down" from VRAM to RAM, instead of the other direction which is more common. We could add special handling code for this case which would allow those screenshots to work while probably not slowing games down at all. |
I see.Hope it is not very difficult to implement |
Well, this is currently supported optionally, so I think it's time to close this one. We still have others (like #3515) for more specific cases. -[Unknown] |
An unknown quantity of games may use this functionality for various purposes, so an option to commit to VRAM would be useful to test.
Some notes:
We would either add an option to always update vram, or potentially find a way to detect it / do it lazily. Options there include:
Note discussion in #109.
-[Unknown]
The text was updated successfully, but these errors were encountered: