mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-05 22:41:18 +12:00
check if pixel formats match for framebuffer fetch
This commit is contained in:
parent
ca3fe96104
commit
217e2edda3
2 changed files with 26 additions and 19 deletions
|
@ -9,6 +9,9 @@
|
|||
#include "Cafe/HW/Latte/Core/LatteShader.h"
|
||||
#include "Cafe/HW/Latte/Renderer/Renderer.h"
|
||||
|
||||
// Defined in LatteTextureLegacy.cpp
|
||||
Latte::E_GX2SURFFMT LatteTexture_ReconstructGX2Format(const Latte::LATTE_SQ_TEX_RESOURCE_WORD1_N& texUnitWord1, const Latte::LATTE_SQ_TEX_RESOURCE_WORD4_N& texUnitWord4);
|
||||
|
||||
/*
|
||||
* Return index of used color attachment based on shader pixel export index (0-7)
|
||||
*/
|
||||
|
@ -876,10 +879,13 @@ void LatteDecompiler_analyze(LatteDecompilerShaderContext* shaderContext, LatteD
|
|||
// TODO: uncomment?
|
||||
/*
|
||||
auto lastMip = texRegister.word5.get_LAST_LEVEL();
|
||||
// TODO: multiple mip levels could technically be supported as well
|
||||
if (lastMip != 0)
|
||||
continue;
|
||||
*/
|
||||
|
||||
Latte::E_GX2SURFFMT format = LatteTexture_ReconstructGX2Format(texRegister.word1, texRegister.word4);
|
||||
|
||||
// Check if the texture is used as render target
|
||||
for (sint32 j = 0; j < LATTE_NUM_COLOR_TARGET; j++)
|
||||
{
|
||||
|
@ -890,9 +896,10 @@ void LatteDecompiler_analyze(LatteDecompilerShaderContext* shaderContext, LatteD
|
|||
uint32 regColorBufferBase = colorBufferRegBase[mmCB_COLOR0_BASE - mmCB_COLOR0_BASE] & 0xFFFFFF00; // the low 8 bits are ignored? How to Survive seems to rely on this
|
||||
|
||||
MPTR colorBufferPhysMem = regColorBufferBase;
|
||||
Latte::E_GX2SURFFMT colorBufferFormat = LatteMRT::GetColorBufferFormat(j, *shaderContext->contextRegistersNew);
|
||||
|
||||
// TODO: check if mip matches as well?
|
||||
if (physAddr == colorBufferPhysMem)
|
||||
if (physAddr == colorBufferPhysMem && format == colorBufferFormat)
|
||||
{
|
||||
shader->textureRenderTargetIndex[textureIndex] = j;
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue