diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp index e54cbf9d1d..19f8d32ebb 100644 --- a/src/video_core/dma_pusher.cpp +++ b/src/video_core/dma_pusher.cpp @@ -14,6 +14,10 @@ #include "video_core/rasterizer_interface.h" #include "video_core/texture_cache/util.h" +#ifdef _MSC_VER +#include +#endif + namespace Tegra { constexpr u32 MacroRegistersStart = 0xE00; @@ -113,7 +117,11 @@ void DmaPusher::ProcessCommands(std::span commands) { for (std::size_t index = 0; index < total_commands;) { const std::size_t prefetch_index = index + BATCH_SIZE; if (prefetch_index < total_commands) { +#ifdef _MSC_VER + _mm_prefetch(reinterpret_cast(&commands[prefetch_index]), _MM_HINT_T0); +#else __builtin_prefetch(&commands[prefetch_index], 0, 1); +#endif } const CommandHeader& command_header = commands[index];