diff --git a/src/video_core/dma_pusher.h b/src/video_core/dma_pusher.h index f850513603..e42b0152bc 100644 --- a/src/video_core/dma_pusher.h +++ b/src/video_core/dma_pusher.h @@ -178,7 +178,7 @@ private: const bool ib_enable{true}; ///< IB mode enabled std::array subchannels{}; - std::array subchannel_type; + std::array subchannel_type{}; GPU& gpu; Core::System& system; diff --git a/src/video_core/engines/engine_interface.h b/src/video_core/engines/engine_interface.h index e271ecab59..5e3b6926eb 100644 --- a/src/video_core/engines/engine_interface.h +++ b/src/video_core/engines/engine_interface.h @@ -15,6 +15,7 @@ namespace Tegra::Engines { enum class EngineTypes : u32 { + Invalid = 0, KeplerCompute, Maxwell3D, Fermi2D, diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 7c1603d814..1c40f9ce56 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -256,7 +256,10 @@ void Maxwell3D::ProcessDirtyRegisters(u32 method, u32 argument) { } regs.reg_array[method] = argument; - const auto [flag0, flag1] = VideoCommon::Dirty::GetDirtyFlagsForMethod(method); + const auto& table0 = dirty.tables[0]; + const auto& table1 = dirty.tables[1]; + const u8 flag0 = table0[method]; + const u8 flag1 = table1[method]; dirty.flags[flag0] = true; if (flag1 != flag0) { dirty.flags[flag1] = true; diff --git a/src/video_core/macro/macro_interpreter.cpp b/src/video_core/macro/macro_interpreter.cpp index f9befce676..e0d1ed694f 100644 --- a/src/video_core/macro/macro_interpreter.cpp +++ b/src/video_core/macro/macro_interpreter.cpp @@ -107,8 +107,9 @@ void MacroInterpreterImpl::Execute(const std::vector& params, u32 method) { keep_executing = Step(false); } - // Assert the the macro used all the input parameters - ASSERT(next_parameter_index == num_parameters); + // Verify the macro used all the input parameters (debug only) + // Some games/macros may not consume all parameters, which is valid behavior + DEBUG_ASSERT(next_parameter_index == num_parameters); } void MacroInterpreterImpl::Reset() {