diff options
Diffstat (limited to 'src/video_core/gpu.h')
| -rw-r--r-- | src/video_core/gpu.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 5cc1e19ca..af5ccd1e9 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #include <vector> | 9 | #include <vector> |
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "core/hle/service/nvflinger/buffer_queue.h" | 11 | #include "core/hle/service/nvflinger/buffer_queue.h" |
| 12 | #include "video_core/dma_pusher.h" | ||
| 12 | #include "video_core/memory_manager.h" | 13 | #include "video_core/memory_manager.h" |
| 13 | 14 | ||
| 14 | namespace VideoCore { | 15 | namespace VideoCore { |
| @@ -119,8 +120,23 @@ public: | |||
| 119 | explicit GPU(VideoCore::RasterizerInterface& rasterizer); | 120 | explicit GPU(VideoCore::RasterizerInterface& rasterizer); |
| 120 | ~GPU(); | 121 | ~GPU(); |
| 121 | 122 | ||
| 122 | /// Processes a command list stored at the specified address in GPU memory. | 123 | struct MethodCall { |
| 123 | void ProcessCommandLists(const std::vector<CommandListHeader>& commands); | 124 | u32 method{}; |
| 125 | u32 argument{}; | ||
| 126 | u32 subchannel{}; | ||
| 127 | u32 method_count{}; | ||
| 128 | |||
| 129 | bool IsLastCall() const { | ||
| 130 | return method_count <= 1; | ||
| 131 | } | ||
| 132 | |||
| 133 | MethodCall(u32 method, u32 argument, u32 subchannel = 0, u32 method_count = 0) | ||
| 134 | : method(method), argument(argument), subchannel(subchannel), | ||
| 135 | method_count(method_count) {} | ||
| 136 | }; | ||
| 137 | |||
| 138 | /// Calls a GPU method. | ||
| 139 | void CallMethod(const MethodCall& method_call); | ||
| 124 | 140 | ||
| 125 | /// Returns a reference to the Maxwell3D GPU engine. | 141 | /// Returns a reference to the Maxwell3D GPU engine. |
| 126 | Engines::Maxwell3D& Maxwell3D(); | 142 | Engines::Maxwell3D& Maxwell3D(); |
| @@ -134,7 +150,14 @@ public: | |||
| 134 | /// Returns a const reference to the GPU memory manager. | 150 | /// Returns a const reference to the GPU memory manager. |
| 135 | const Tegra::MemoryManager& MemoryManager() const; | 151 | const Tegra::MemoryManager& MemoryManager() const; |
| 136 | 152 | ||
| 153 | /// Returns a reference to the GPU DMA pusher. | ||
| 154 | Tegra::DmaPusher& DmaPusher(); | ||
| 155 | |||
| 156 | /// Returns a const reference to the GPU DMA pusher. | ||
| 157 | const Tegra::DmaPusher& DmaPusher() const; | ||
| 158 | |||
| 137 | private: | 159 | private: |
| 160 | std::unique_ptr<Tegra::DmaPusher> dma_pusher; | ||
| 138 | std::unique_ptr<Tegra::MemoryManager> memory_manager; | 161 | std::unique_ptr<Tegra::MemoryManager> memory_manager; |
| 139 | 162 | ||
| 140 | /// Mapping of command subchannels to their bound engine ids. | 163 | /// Mapping of command subchannels to their bound engine ids. |