From a64b936cbe6e779627f69ebde85a3055ccd6c2de Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 18 Mar 2018 15:15:05 -0500 Subject: [PATCH] GPU: Move the GPU's class constructor and destructors to a cpp file. This should reduce recompile times when editing the Maxwell3D register structure. --- src/video_core/CMakeLists.txt | 1 + src/video_core/gpu.cpp | 21 +++++++++++++++++++++ src/video_core/gpu.h | 18 ++++++++---------- 3 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 src/video_core/gpu.cpp diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index ed87f8ff1f..2f946e7be3 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -7,6 +7,7 @@ add_library(video_core STATIC engines/maxwell_3d.h engines/maxwell_compute.cpp engines/maxwell_compute.h + gpu.cpp gpu.h memory_manager.cpp memory_manager.h diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp new file mode 100644 index 0000000000..c384d236ef --- /dev/null +++ b/src/video_core/gpu.cpp @@ -0,0 +1,21 @@ +// Copyright 2018 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "video_core/engines/fermi_2d.h" +#include "video_core/engines/maxwell_3d.h" +#include "video_core/engines/maxwell_compute.h" +#include "video_core/gpu.h" + +namespace Tegra { + +GPU::GPU() { + memory_manager = std::make_unique(); + maxwell_3d = std::make_unique(*memory_manager); + fermi_2d = std::make_unique(); + maxwell_compute = std::make_unique(); +} + +GPU::~GPU() = default; + +} // namespace Tegra diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index d2e4ff52d6..2a9064ba30 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -8,13 +8,16 @@ #include #include #include "common/common_types.h" -#include "video_core/engines/fermi_2d.h" -#include "video_core/engines/maxwell_3d.h" -#include "video_core/engines/maxwell_compute.h" #include "video_core/memory_manager.h" namespace Tegra { +namespace Engines { +class Fermi2D; +class Maxwell3D; +class MaxwellCompute; +} // namespace Engines + enum class EngineID { FERMI_TWOD_A = 0x902D, // 2D Engine MAXWELL_B = 0xB197, // 3D Engine @@ -25,13 +28,8 @@ enum class EngineID { class GPU final { public: - GPU() { - memory_manager = std::make_unique(); - maxwell_3d = std::make_unique(*memory_manager); - fermi_2d = std::make_unique(); - maxwell_compute = std::make_unique(); - } - ~GPU() = default; + GPU(); + ~GPU(); /// Processes a command list stored at the specified address in GPU memory. void ProcessCommandList(GPUVAddr address, u32 size);