summaryrefslogtreecommitdiff
path: root/src/video_core/dma_pusher.h
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2021-11-05 15:52:31 +0100
committerGravatar Fernando Sahmkow2022-10-06 21:00:51 +0200
commit139ea93512aeead8a4aee3910a3de86eb109a838 (patch)
tree857643fc08617b7035656a51728c399f30c8c2cb /src/video_core/dma_pusher.h
parentNVASGPU: Fix Remap. (diff)
downloadyuzu-139ea93512aeead8a4aee3910a3de86eb109a838.tar.gz
yuzu-139ea93512aeead8a4aee3910a3de86eb109a838.tar.xz
yuzu-139ea93512aeead8a4aee3910a3de86eb109a838.zip
VideoCore: implement channels on gpu caches.
Diffstat (limited to 'src/video_core/dma_pusher.h')
-rw-r--r--src/video_core/dma_pusher.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/video_core/dma_pusher.h b/src/video_core/dma_pusher.h
index 872fd146a..fd7c936c4 100644
--- a/src/video_core/dma_pusher.h
+++ b/src/video_core/dma_pusher.h
@@ -10,6 +10,7 @@
10#include "common/bit_field.h" 10#include "common/bit_field.h"
11#include "common/common_types.h" 11#include "common/common_types.h"
12#include "video_core/engines/engine_interface.h" 12#include "video_core/engines/engine_interface.h"
13#include "video_core/engines/puller.h"
13 14
14namespace Core { 15namespace Core {
15class System; 16class System;
@@ -17,7 +18,12 @@ class System;
17 18
18namespace Tegra { 19namespace Tegra {
19 20
21namespace Control {
22struct ChannelState;
23}
24
20class GPU; 25class GPU;
26class MemoryManager;
21 27
22enum class SubmissionMode : u32 { 28enum class SubmissionMode : u32 {
23 IncreasingOld = 0, 29 IncreasingOld = 0,
@@ -102,7 +108,8 @@ struct CommandList final {
102 */ 108 */
103class DmaPusher final { 109class DmaPusher final {
104public: 110public:
105 explicit DmaPusher(Core::System& system_, GPU& gpu_); 111 explicit DmaPusher(Core::System& system_, GPU& gpu_, MemoryManager& memory_manager_,
112 Control::ChannelState& channel_state_);
106 ~DmaPusher(); 113 ~DmaPusher();
107 114
108 void Push(CommandList&& entries) { 115 void Push(CommandList&& entries) {
@@ -115,6 +122,8 @@ public:
115 subchannels[subchannel_id] = engine; 122 subchannels[subchannel_id] = engine;
116 } 123 }
117 124
125 void BindRasterizer(VideoCore::RasterizerInterface* rasterizer);
126
118private: 127private:
119 static constexpr u32 non_puller_methods = 0x40; 128 static constexpr u32 non_puller_methods = 0x40;
120 static constexpr u32 max_subchannels = 8; 129 static constexpr u32 max_subchannels = 8;
@@ -148,6 +157,8 @@ private:
148 157
149 GPU& gpu; 158 GPU& gpu;
150 Core::System& system; 159 Core::System& system;
160 MemoryManager& memory_manager;
161 mutable Engines::Puller puller;
151}; 162};
152 163
153} // namespace Tegra 164} // namespace Tegra