-
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
Super Robot Taisen OE graphic issue #4025
Comments
Looks like it is related to DoBlockTransfer(); comment out fix the issue .I'm wondering we need some check before start the block transfer. |
It seems to be overlapped with one of the framebuffer . Isn't it ? 22:56:680 CRI Server M I[SCEGE]: GLES\Framebuffer.cpp:1357 Destroying FBO for 00000000 : 480 x 272 x 1 33:13:199 user_main I[HLE]: GLES\GLES_GPU.cpp:1445 Block transfer: 04000000/8 -> 08400000/40, 8x60x2 (0,0)->(0,0) |
certainly looks like it, and we should handle it by copying the corresponding regions to the destination texture or invalidating it, and if the source is in a render target, we need to read it back. But those are some strange copy dimensions, 8x60? |
I think the 8x60 is the background logo displayed during in the battle in this game. |
If comment out doblocktransfer(), correct background reappears? |
That makes the video not showing,and only black in this scene. |
I see. |
I just remember the above logo artifact happened in both non-buffered and buffered mode but not framebuffer to memory mode .Is it the case for the video background abovE? or try the original one hack
|
Yes,the background is a video above.That hack work for in battle,but not work for this case. |
Even framebuffer to memory mode also cannot render the video correcttly? |
framebuffer to memory mode,not render video. |
I see. pretty bad. |
Text refresh is too slow. Partly revert unknownbrackets@4bc7752 const int LARGEST_TEXTURE_SIZE = 512 * 512 * 4; u64 startKey = addr - LARGEST_TEXTURE_SIZE; u64 endKey = addr + size + LARGEST_TEXTURE_SIZE; for (TexCache::iterator iter = cache.lower_bound(startKey), end = cache.upper_bound(endKey); iter != end; ++iter) { to for (TexCache::iterator iter = cache.begin(), end = cache.end(); iter != end; ++iter) { seems to fix it. |
Interestingly , i rememeber it somehow happen in some other games as well . I'm wondering if the intra-frame issue above is related to this texture invalidation . |
Try the build 0.81-163 which not merged that commit yet,still have intra-frame issue. |
@daniel229 if you only do that, it just means it's not invalidating textures at all, since you're basically disabling the functionality by making it look at the wrong range. This may mean it's simply invalidating textures too often. Are you saying that changing that fixes the bad graphics? -[Unknown] |
It does not fix bad graphics. |
Either multithreaded or nVidia threaded optimzation does not help speed in this case. |
Hmm, might help to eat cycles in some of the most called functions or something. Not sure. -[Unknown] |
Has this improved at all? Especially with the texture speedups off? -[Unknown] |
And speed is still slow. |
This one uses BlockTransfer() .It disable it , artifact disappear. |
Is the source of the block transfer an FBO? -[Unknown] |
Let me check . (I'm wondering do we have check for overlapping FBO or texture before doing block transfer) |
Well, from a texture is totally fine, but from an FBO will just get whatever was in that memory before. That said, "Read Framebuffers to Memory" should make that something useful ish, usually. It certainly wouldn't help the speed problem. -[Unknown] |
I think this is from an FBO ? (04000000) 42:21:451 user_main I[G3D]: GLES\GLES_GPU.cpp:1534 Block transfer: 04000000/8 -> 08400000/40, 8x60x2 (0,0)->(0,0) |
It is not happening in 'Read framebuffer to memory" mode. |
This srcBasePtr definitely the FBO address .Any check we can apply here to avoid them to do blocktransfer here? |
This looks like the line by line copies in Grand Knights History, and might work better now. -[Unknown] |
The graphics have been fixed with Simulate Block Transfer, |
After video played,the screen sometime will mix the last frame of the video,like this
Looking into the GE debugger, It's something wrong with the texture address 400000.
Skip that texture address seem to fix the issue.
The text was updated successfully, but these errors were encountered: