diff options
Diffstat (limited to 'src/video_core/gpu.cpp')
| -rw-r--r-- | src/video_core/gpu.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index 512578c8b..acb6e6d46 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp | |||
| @@ -27,21 +27,28 @@ namespace Tegra { | |||
| 27 | 27 | ||
| 28 | MICROPROFILE_DEFINE(GPU_wait, "GPU", "Wait for the GPU", MP_RGB(128, 128, 192)); | 28 | MICROPROFILE_DEFINE(GPU_wait, "GPU", "Wait for the GPU", MP_RGB(128, 128, 192)); |
| 29 | 29 | ||
| 30 | GPU::GPU(Core::System& system, std::unique_ptr<VideoCore::RendererBase>&& renderer_, bool is_async) | 30 | GPU::GPU(Core::System& system_, bool is_async_) |
| 31 | : system{system}, renderer{std::move(renderer_)}, is_async{is_async} { | 31 | : system{system_}, dma_pusher{std::make_unique<Tegra::DmaPusher>(system, *this)}, |
| 32 | auto& rasterizer{renderer->Rasterizer()}; | 32 | memory_manager{std::make_unique<Tegra::MemoryManager>(system)}, |
| 33 | memory_manager = std::make_unique<Tegra::MemoryManager>(system, rasterizer); | 33 | maxwell_3d{std::make_unique<Engines::Maxwell3D>(system, *memory_manager)}, |
| 34 | dma_pusher = std::make_unique<Tegra::DmaPusher>(system, *this); | 34 | fermi_2d{std::make_unique<Engines::Fermi2D>()}, |
| 35 | maxwell_3d = std::make_unique<Engines::Maxwell3D>(system, rasterizer, *memory_manager); | 35 | kepler_compute{std::make_unique<Engines::KeplerCompute>(system, *memory_manager)}, |
| 36 | fermi_2d = std::make_unique<Engines::Fermi2D>(rasterizer); | 36 | maxwell_dma{std::make_unique<Engines::MaxwellDMA>(system, *memory_manager)}, |
| 37 | kepler_compute = std::make_unique<Engines::KeplerCompute>(system, rasterizer, *memory_manager); | 37 | kepler_memory{std::make_unique<Engines::KeplerMemory>(system, *memory_manager)}, |
| 38 | maxwell_dma = std::make_unique<Engines::MaxwellDMA>(system, *memory_manager); | 38 | shader_notify{std::make_unique<VideoCore::ShaderNotify>()}, is_async{is_async_} {} |
| 39 | kepler_memory = std::make_unique<Engines::KeplerMemory>(system, *memory_manager); | ||
| 40 | shader_notify = std::make_unique<VideoCore::ShaderNotify>(); | ||
| 41 | } | ||
| 42 | 39 | ||
| 43 | GPU::~GPU() = default; | 40 | GPU::~GPU() = default; |
| 44 | 41 | ||
| 42 | void GPU::BindRenderer(std::unique_ptr<VideoCore::RendererBase> renderer_) { | ||
| 43 | renderer = std::move(renderer_); | ||
| 44 | |||
| 45 | VideoCore::RasterizerInterface& rasterizer = renderer->Rasterizer(); | ||
| 46 | memory_manager->BindRasterizer(rasterizer); | ||
| 47 | maxwell_3d->BindRasterizer(rasterizer); | ||
| 48 | fermi_2d->BindRasterizer(rasterizer); | ||
| 49 | kepler_compute->BindRasterizer(rasterizer); | ||
| 50 | } | ||
| 51 | |||
| 45 | Engines::Maxwell3D& GPU::Maxwell3D() { | 52 | Engines::Maxwell3D& GPU::Maxwell3D() { |
| 46 | return *maxwell_3d; | 53 | return *maxwell_3d; |
| 47 | } | 54 | } |