-
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
Princess Maker 5 Portable half screen in Vulkan #13741
Comments
Weird, the dump renders correctly on NVIDIA for me... |
It happen in Samsung S6 Tablet ,lg v20 ,Blackshark 3 |
The bug maybe from these log: |
Ok, thanks for letting me know. Nah, those are unrelated for sure. |
It's quite strange, I can't seem to repro this problem with the recording, even on Android. |
It might have some bug in reproducing 's code |
gid15 from jpcsp explain this game "20:30:33 DEBUG ge - GUI - fbp fbp=0x04000000, fbw=1024 |
Does age 96 is too long ? 36:20:413 root I[SCEKERNEL]: hle\scekernelthread.cpp:2007 276=sceKernelCreateThread(user_main, 08804114, 00000020, 524288, 80000000, 00000000) |
This logs the impacts of hrydgard#13762 so we can see why that helps, even though it doesn't look like a correct fix.
The dump doesn't reproduce the issue, unfortunately. Maybe it's related to decimation - but that should be common to all backends. But, this games draws using a 1024x512 framebuffer (including verts.) It's even texturing 1024x1024, which I actually wasn't sure was supported... I wouldn't be shocked if we had an assumption somewhere in the Vulkan code that 512x512 is the max. In the dump at 127/190, it's doing a texture from self 1024x1024 -> 1024x512. It uses this to reduce the 1024x512 render down to 480x272. That's for sure the most unusual thing in this dump. I don't think #13762 is the right fix, since basically that's just flushing texture state kinda often - it's bound to accidentally fix it if it's missing somewhere else. What would interest me is comparing each time it rechecks texture params (DIRTY_TEXTURE_PARAMS), here: bool textureNeedsApply = false;
if (gstate_c.IsDirty(DIRTY_TEXTURE_IMAGE | DIRTY_TEXTURE_PARAMS) && !gstate.isModeClear() && gstate.isTextureMapEnabled()) {
textureCache_->SetTexture();
gstate_c.Clean(DIRTY_TEXTURE_IMAGE | DIRTY_TEXTURE_PARAMS);
textureNeedsApply = true; This would help log more useful info: master...unknownbrackets:dbg-13741 -[Unknown] |
That's interesting, it seems like it must be related to frambuffer as texture - I wonder if we're losing the offset? I added more logging on the branch: master...unknownbrackets:dbg-13741 Also the most recent commit makes it only apply for framebuffers (at least in that scene.) It'll be interesting if it still works, or if it's now broken. -[Unknown] |
I forget log lvel default to error now.I re-do log |
Interesting, nothing is obviously different. I wonder if it's from flushing other flags. Updated the branch again to skip some flags and log a bit more. -[Unknown] |
The screen still work in Vulkan |
Sorry, I think I must not've pushed - "New texture" shouldn't show anymore. Pushed now. -[Unknown] |
The screen still work in Vulkan |
I pushed another commit - in theory it should still work and just log a bit less. If that's true, the next thing to try is making this (DrawEngineVulkan.cpp): if (forceTexParamsDirty && !Memory::IsVRAMAddress(gstate.getTextureAddress(0))) {
forceTexParamsDirty = false;
} Simply always false. forceTexParamsDirty = false; If this still works, it's not SetTexture() at all (sorry, I at first assumed it was), but maybe Execute_TexSize0 or something. If it worked until that change, then it might be -[Unknown] |
Hope don't have undocumented flag in vukan if (forceTexParamsDirty && !Memory::IsVRAMAddress(gstate.getTextureAddress(0))) {
forceTexParamsDirty = false;
} Simply always false. forceTexParamsDirty = false; The screen DO NOT work in Vulkan log: https://gist.github.com/sum2012/ce934375c8f86738b31838eb4d3400d6 |
Very interesting. What if you change:
To:
But keep the 6 change? -[Unknown] |
Also I pushed another commit, which should log if I missed any other flags. If it doesn't log anything, and if -[Unknown] |
DO NOT WORK
To:
But keep the 6 change? ==================== |
Hmm, well that implies that the imageView or sampler is changing, which is interesting. The next change would verify when you have time. -[Unknown] |
i ask you first.hope answer before i back home. |
No, it shouldn't include either one. Just what's in the branch. -[Unknown] |
change 8(?) still work |
Seem do not log new thing. |
This logs the impacts of hrydgard#13762 so we can see why that helps, even though it doesn't look like a correct fix.
I've updated the branch with another try: master...unknownbrackets:dbg-13741 Does this potentially stop it from logging -[Unknown] |
It is still logging Change 6 or 7 screen NOT work |
Does #14233 help? -[Unknown] |
Yes,fixed it,very thanks |
Please note that OpenGL don't require that change |
The change doesn't hurt much if anything, so that's alright. Probably the same flag gets set some different way in GL anyway, although I haven't looked into this... |
This logs the impacts of hrydgard#13762 so we can see why that helps, even though it doesn't look like a correct fix.
Test on v1.10.3-1290-g2399c5f90-windows-amd64
Try v1.6.3 version also have this problem
Only happened in Vulkan
frame dump:
recording.zip
The text was updated successfully, but these errors were encountered: