summaryrefslogtreecommitdiffstats
path: root/src/video_core/gpu.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-01-24 04:17:55 +0100
committerbunnei <bunneidev@gmail.com>2019-03-07 03:48:57 +0100
commit7b574f406b25c02a0e0efd8b7ec13d68ecb55497 (patch)
tree375d4637d49ffe506129ce9cb679b5902328106a /src/video_core/gpu.h
parentbootmanager: Ensure that we have a context for shader loading. (diff)
downloadyuzu-7b574f406b25c02a0e0efd8b7ec13d68ecb55497.tar
yuzu-7b574f406b25c02a0e0efd8b7ec13d68ecb55497.tar.gz
yuzu-7b574f406b25c02a0e0efd8b7ec13d68ecb55497.tar.bz2
yuzu-7b574f406b25c02a0e0efd8b7ec13d68ecb55497.tar.lz
yuzu-7b574f406b25c02a0e0efd8b7ec13d68ecb55497.tar.xz
yuzu-7b574f406b25c02a0e0efd8b7ec13d68ecb55497.tar.zst
yuzu-7b574f406b25c02a0e0efd8b7ec13d68ecb55497.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/gpu.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index 62649bd6e..3f3098bf1 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -19,6 +19,10 @@ namespace VideoCore {
class RendererBase;
} // namespace VideoCore
+namespace VideoCommon::GPUThread {
+class ThreadManager;
+} // namespace VideoCommon::GPUThread
+
namespace Tegra {
enum class RenderTargetFormat : u32 {
@@ -200,7 +204,7 @@ public:
std::array<u32, NUM_REGS> reg_array;
};
} regs{};
-
+
/// Push GPU command entries to be processed
void PushGPUEntries(Tegra::CommandList&& entries);
@@ -208,6 +212,15 @@ public:
void SwapBuffers(
std::optional<std::reference_wrapper<const Tegra::FramebufferConfig>> framebuffer);
+ /// Notify rasterizer that any caches of the specified region should be flushed to Switch memory
+ void FlushRegion(VAddr addr, u64 size);
+
+ /// Notify rasterizer that any caches of the specified region should be invalidated
+ void InvalidateRegion(VAddr addr, u64 size);
+
+ /// Notify rasterizer that any caches of the specified region should be flushed and invalidated
+ void FlushAndInvalidateRegion(VAddr addr, u64 size);
+
private:
void ProcessBindMethod(const MethodCall& method_call);
void ProcessSemaphoreTriggerMethod();
@@ -216,17 +229,18 @@ private:
/// Calls a GPU puller method.
void CallPullerMethod(const MethodCall& method_call);
-
+
/// Calls a GPU engine method.
void CallEngineMethod(const MethodCall& method_call);
-
+
/// Determines where the method should be executed.
bool ExecuteMethodOnEngine(const MethodCall& method_call);
private:
std::unique_ptr<Tegra::DmaPusher> dma_pusher;
std::unique_ptr<Tegra::MemoryManager> memory_manager;
-
+ std::unique_ptr<VideoCommon::GPUThread::ThreadManager> gpu_thread;
+
VideoCore::RendererBase& renderer;
/// Mapping of command subchannels to their bound engine ids.