summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-03-18 21:15:05 +0100
committerSubv <subv2112@gmail.com>2018-03-18 21:23:24 +0100
commita64b936cbe6e779627f69ebde85a3055ccd6c2de (patch)
tree134b00ab118a890e7903688f1e13289ddba9344e
parentMerge pull request #246 from Subv/gpu_macro_calls (diff)
downloadyuzu-a64b936cbe6e779627f69ebde85a3055ccd6c2de.tar
yuzu-a64b936cbe6e779627f69ebde85a3055ccd6c2de.tar.gz
yuzu-a64b936cbe6e779627f69ebde85a3055ccd6c2de.tar.bz2
yuzu-a64b936cbe6e779627f69ebde85a3055ccd6c2de.tar.lz
yuzu-a64b936cbe6e779627f69ebde85a3055ccd6c2de.tar.xz
yuzu-a64b936cbe6e779627f69ebde85a3055ccd6c2de.tar.zst
yuzu-a64b936cbe6e779627f69ebde85a3055ccd6c2de.zip
-rw-r--r--src/video_core/CMakeLists.txt1
-rw-r--r--src/video_core/gpu.cpp21
-rw-r--r--src/video_core/gpu.h18
3 files changed, 30 insertions, 10 deletions
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt
index ed87f8ff1..2f946e7be 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 000000000..c384d236e
--- /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<MemoryManager>();
+ maxwell_3d = std::make_unique<Engines::Maxwell3D>(*memory_manager);
+ fermi_2d = std::make_unique<Engines::Fermi2D>();
+ maxwell_compute = std::make_unique<Engines::MaxwellCompute>();
+}
+
+GPU::~GPU() = default;
+
+} // namespace Tegra
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index d2e4ff52d..2a9064ba3 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -8,13 +8,16 @@
#include <unordered_map>
#include <vector>
#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<MemoryManager>();
- maxwell_3d = std::make_unique<Engines::Maxwell3D>(*memory_manager);
- fermi_2d = std::make_unique<Engines::Fermi2D>();
- maxwell_compute = std::make_unique<Engines::MaxwellCompute>();
- }
- ~GPU() = default;
+ GPU();
+ ~GPU();
/// Processes a command list stored at the specified address in GPU memory.
void ProcessCommandList(GPUVAddr address, u32 size);