mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-27 07:20:49 +00:00
Fix bug in the new color writemask code, failing to limit it to Outrun properly. Fixes #13650.
This commit is contained in:
parent
d99cba7308
commit
c61f9bfd09
@ -958,6 +958,7 @@ void ApplyStencilReplaceAndLogicOpIgnoreBlend(ReplaceAlphaType replaceAlphaWithS
|
||||
|
||||
bool IsColorWriteMaskComplex(bool allowFramebufferRead) {
|
||||
// Restrict to Outrun temporarily (by uglily reusing the ReinterpretFramebuffers flag)
|
||||
// This check must match the one in ConvertMaskState.
|
||||
if (!allowFramebufferRead || !PSP_CoreParameter().compat.flags().ReinterpretFramebuffers) {
|
||||
// Don't have a choice - we'll make do but it won't always be right.
|
||||
return false;
|
||||
@ -998,7 +999,9 @@ void ConvertMaskState(GenericMaskState &maskState, bool allowFramebufferRead) {
|
||||
break;
|
||||
default:
|
||||
if (allowFramebufferRead) {
|
||||
maskState.applyFramebufferRead = true;
|
||||
// Instead of just 'true', restrict shader bitmasks to Outrun temporarily (by uglily reusing the ReinterpretFramebuffers flag)
|
||||
// TODO: This check must match the one in IsColorWriteMaskComplex.
|
||||
maskState.applyFramebufferRead = PSP_CoreParameter().compat.flags().ReinterpretFramebuffers;
|
||||
maskState.rgba[i] = true;
|
||||
} else {
|
||||
// Use the old heuristic.
|
||||
|
@ -162,7 +162,7 @@ void DrawEngineD3D11::ApplyDrawState(int prim) {
|
||||
GenericMaskState maskState;
|
||||
ConvertMaskState(maskState, gstate_c.allowFramebufferRead);
|
||||
|
||||
if (blendState.applyFramebufferRead) {
|
||||
if (blendState.applyFramebufferRead || maskState.applyFramebufferRead) {
|
||||
if (ApplyFramebufferRead(&fboTexNeedsBind_)) {
|
||||
// The shader takes over the responsibility for blending, so recompute.
|
||||
ApplyStencilReplaceAndLogicOpIgnoreBlend(blendState.replaceAlphaWithStencil, blendState);
|
||||
|
Loading…
Reference in New Issue
Block a user