diff options
| author | JMC47 <JMC4789@gmail.com> | 2022-04-07 17:01:56 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-07 17:01:56 -0400 |
| commit | e02194057bde797c03de9a4e29f522d361ed87b4 (patch) | |
| tree | 8109ff0b0404ec9c544ed666abeeab327d9af7fc /Source/Core/VideoCommon/RenderBase.cpp | |
| parent | 7a33659e7bd7b6504f37b80d8c8ce605dca655cd (diff) | |
| parent | af316f7bfe7bd6470204abf4a98ef2430467e589 (diff) | |
Merge pull request #10412 from Pokechu22/sw-efb-peek-alpha
Software: Implement pixel engine alpha read mode
Diffstat (limited to 'Source/Core/VideoCommon/RenderBase.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/RenderBase.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 861c69d985..9d3cfedbd3 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -247,9 +247,6 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) // a little-endian value is expected to be returned color = ((color & 0xFF00FF00) | ((color >> 16) & 0xFF) | ((color << 16) & 0xFF0000)); - // check what to do with the alpha channel (GX_PokeAlphaRead) - PixelEngine::UPEAlphaReadReg alpha_read_mode = PixelEngine::GetAlphaReadMode(); - if (bpmem.zcontrol.pixel_format == PixelFormat::RGBA6_Z24) { color = RGBA8ToRGBA6ToRGBA8(color); @@ -263,17 +260,24 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) color |= 0xFF000000; } - if (alpha_read_mode.ReadMode == 2) + // check what to do with the alpha channel (GX_PokeAlphaRead) + PixelEngine::AlphaReadMode alpha_read_mode = PixelEngine::GetAlphaReadMode(); + + if (alpha_read_mode == PixelEngine::AlphaReadMode::ReadNone) { - return color; // GX_READ_NONE + return color; } - else if (alpha_read_mode.ReadMode == 1) + else if (alpha_read_mode == PixelEngine::AlphaReadMode::ReadFF) { - return color | 0xFF000000; // GX_READ_FF + return color | 0xFF000000; } - else /*if(alpha_read_mode.ReadMode == 0)*/ + else { - return color & 0x00FFFFFF; // GX_READ_00 + if (alpha_read_mode != PixelEngine::AlphaReadMode::Read00) + { + PanicAlertFmt("Invalid PE alpha read mode: {}", static_cast<u16>(alpha_read_mode)); + } + return color & 0x00FFFFFF; } } else // if (type == EFBAccessType::PeekZ) |
