aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines/maxwell_3d.cpp
diff options
context:
space:
mode:
authorsimply0001 <nicolas.tobago@icloud.com>2026-06-26 04:15:31 +0200
committercrueter <crueter@eden-emu.dev>2026-06-26 04:15:31 +0200
commit629ebf1bdee023d3d3ecc96c3276cf3285f8f727 (patch)
treede95d7adc46ff0ee49def3e632653f755a254eb6 /src/video_core/engines/maxwell_3d.cpp
parentc993bc01a49c39c3d293ce401db86b3dccba69c1 (diff)
[video_core/maxwell3d] compute macro param address on demand (#4067)
GetMacroAddress only reads a couple of indices per macro, but ProcessMacro was then building a full std::vector GPUVAddr> with one push_back per parameter word every submission. macro_segments already holds base, count per chunk, so GetMacroAddress can just walk it instead, drops the per-word loop, a .clear(), and a vector member. Also makes it so it returns on the first match in the macro dispatch instead of running every std::get_if check. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4067 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src/video_core/engines/maxwell_3d.cpp')
-rw-r--r--src/video_core/engines/maxwell_3d.cpp4
1 files changed, 0 insertions, 4 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index 3474ad6d63..53b75726bd 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -208,9 +208,6 @@ void Maxwell3D::ProcessMacro(Core::System& system, u32 method, const u32* base_s
}
macro_params.insert(macro_params.end(), base_start, base_start + amount);
- for (size_t i = 0; i < amount; i++) {
- macro_addresses.push_back(current_dma_segment + i * sizeof(u32));
- }
macro_segments.emplace_back(current_dma_segment, amount);
current_macro_dirty |= current_dirty;
current_dirty = false;
@@ -220,7 +217,6 @@ void Maxwell3D::ProcessMacro(Core::System& system, u32 method, const u32* base_s
ConsumeSink(system);
CallMacroMethod(system, executing_macro, macro_params);
macro_params.clear();
- macro_addresses.clear();
macro_segments.clear();
current_macro_dirty = false;
}