Skip to content
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

VK: Super Robot Wars Advance Portable - Bad VShader Cached #11599

Closed
hrydgard opened this issue Nov 26, 2018 · 7 comments
Closed

VK: Super Robot Wars Advance Portable - Bad VShader Cached #11599

hrydgard opened this issue Nov 26, 2018 · 7 comments
Labels
Milestone

Comments

@hrydgard
Copy link
Owner

As reported in the forums:

http://forums.ppsspp.org/showthread.php?tid=24427

This error keeps appearing when the Vulkan backend is selected.

Got to be some state caching bug. A frame dump (from any API) would be most useful: https://github.com/hrydgard/ppsspp/wiki/How-to-create-a-frame-dump

@hrydgard hrydgard added this to the v1.8.0 milestone Nov 26, 2018
@hrydgard
Copy link
Owner Author

Is this the same games as Super Robot Taisen?

@unknownbrackets
Copy link
Collaborator

Hm. In Execute_Bezier / Execute_Spline, we don't actually flush before we gstate_c.Dirty(DIRTY_VERTEXSHADER_STATE);. SubmitCurve flushes, but this is already too late, as we've already prevented transform. That seems like an issue.

But, I'm not sure it's causing this, since useHWTransform won't have changed.

This might help if someone can reproduce it:

		if ((*vshader)->UseHWTransform() != useHWTransform) {
			VShaderID CorrectVSID;
			ComputeVertexShaderID(&CorrectVSID, vertType, useHWTransform);
			ERROR_LOG_REPORT(HLE, "Wrong: %s, right: %s", VertexShaderDesc(VSID).c_str(), VertexShaderDesc(CorrectVSID).c_str());
		}

-[Unknown]

@unknownbrackets
Copy link
Collaborator

This recording was provided near the error, but unfortunately it doesn't trigger the error for me:
https://cdn.discordapp.com/attachments/480103153803460614/517100741723291658/recording.ppdmp

-[Unknown]

@unknownbrackets
Copy link
Collaborator

It seems like this can, at least, happen when switching hardware transform on/off mid game.

-[Unknown]

@unknownbrackets
Copy link
Collaborator

My theory is that this was happening with the prim inner loop, when the prim type switched from triangle to rectangle. SubmitPrim() would flush, but not dirty the vertexshader state. SetDrawType() does dirty the state, though.

So I suspect #11613 may have fixed this since it added a call to SetDrawType().

Does this still happen?

-[Unknown]

@PikachuEXE
Copy link

Seems not having it in v1.7.5-431-g9736bc431
Tested with window 64bit version

@unknownbrackets
Copy link
Collaborator

Thanks again for reporting this is fixed.

-[Unknown]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants