mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-11-30 07:54:15 +01:00
Invalidate HLE macro state on macro updates
This commit is contained in:
parent
2360ca24da
commit
b810470601
@ -161,6 +161,7 @@ namespace skyline::soc::gm20b::engine::maxwell3d {
|
|||||||
throw exception("Macro memory is full!");
|
throw exception("Macro memory is full!");
|
||||||
|
|
||||||
macroState.macroCode[registers.mme->instructionRamPointer++] = instructionRamLoad;
|
macroState.macroCode[registers.mme->instructionRamPointer++] = instructionRamLoad;
|
||||||
|
macroState.Invalidate();
|
||||||
|
|
||||||
// Wraparound writes
|
// Wraparound writes
|
||||||
// This works on HW but will also generate an error interrupt
|
// This works on HW but will also generate an error interrupt
|
||||||
@ -172,6 +173,7 @@ namespace skyline::soc::gm20b::engine::maxwell3d {
|
|||||||
throw exception("Maximum amount of macros reached!");
|
throw exception("Maximum amount of macros reached!");
|
||||||
|
|
||||||
macroState.macroPositions[registers.mme->startAddressRamPointer++] = startAddressRamLoad;
|
macroState.macroPositions[registers.mme->startAddressRamPointer++] = startAddressRamLoad;
|
||||||
|
macroState.Invalidate();
|
||||||
})
|
})
|
||||||
|
|
||||||
ENGINE_STRUCT_CASE(i2m, launchDma, {
|
ENGINE_STRUCT_CASE(i2m, launchDma, {
|
||||||
|
@ -65,8 +65,10 @@ namespace skyline::soc::gm20b {
|
|||||||
void MacroState::Execute(u32 position, span<u32> args, engine::MacroEngineBase *targetEngine) {
|
void MacroState::Execute(u32 position, span<u32> args, engine::MacroEngineBase *targetEngine) {
|
||||||
size_t offset{macroPositions[position]};
|
size_t offset{macroPositions[position]};
|
||||||
|
|
||||||
if (invalidatePending)
|
if (invalidatePending) {
|
||||||
macroHleFunctions.fill({});
|
macroHleFunctions.fill({});
|
||||||
|
invalidatePending = false;
|
||||||
|
}
|
||||||
|
|
||||||
auto &hleEntry{macroHleFunctions[position]};
|
auto &hleEntry{macroHleFunctions[position]};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user