rsx: Rebuild shader texture state if we detect a silent mismatch #14420
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In some cases, we may have to update a texture reference without the RSX state having changed. This can happen for example if the game tries to use a color texture for depth read, so we swap the color texture with a depth one in-place. In this case, we would detect the change and switch the texture, but the shader would still be expecting the original texture because core RSX registers relating to texturing were not changed.
If we trivially detect the format class changed, reload the shader texture state. This isn't sophisticated, but should work for all of cases that would result in a crash.
Fixes #14071