summaryrefslogtreecommitdiff
path: root/src/video_core/rasterizer_interface.h
diff options
context:
space:
mode:
authorGravatar Fernando S2022-10-06 21:29:53 +0200
committerGravatar GitHub2022-10-06 21:29:53 +0200
commit1effa578f12f79d7816e3543291f302f126cc1d2 (patch)
tree14803b31b6817294d40d57446f6fa94c5ff3fe9a /src/video_core/rasterizer_interface.h
parentMerge pull request #9025 from FernandoS27/slava-ukrayini (diff)
parentvulkan_blitter: Fix pool allocation double free. (diff)
downloadyuzu-1effa578f12f79d7816e3543291f302f126cc1d2.tar.gz
yuzu-1effa578f12f79d7816e3543291f302f126cc1d2.tar.xz
yuzu-1effa578f12f79d7816e3543291f302f126cc1d2.zip
Merge pull request #8467 from FernandoS27/yfc-rel-1
Project yuzu Fried Chicken (Y.F.C.) Part 1
Diffstat (limited to 'src/video_core/rasterizer_interface.h')
-rw-r--r--src/video_core/rasterizer_interface.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h
index a04a76481..d2d40884c 100644
--- a/src/video_core/rasterizer_interface.h
+++ b/src/video_core/rasterizer_interface.h
@@ -16,6 +16,9 @@ class MemoryManager;
16namespace Engines { 16namespace Engines {
17class AccelerateDMAInterface; 17class AccelerateDMAInterface;
18} 18}
19namespace Control {
20struct ChannelState;
21}
19} // namespace Tegra 22} // namespace Tegra
20 23
21namespace VideoCore { 24namespace VideoCore {
@@ -59,7 +62,10 @@ public:
59 virtual void DisableGraphicsUniformBuffer(size_t stage, u32 index) = 0; 62 virtual void DisableGraphicsUniformBuffer(size_t stage, u32 index) = 0;
60 63
61 /// Signal a GPU based semaphore as a fence 64 /// Signal a GPU based semaphore as a fence
62 virtual void SignalSemaphore(GPUVAddr addr, u32 value) = 0; 65 virtual void SignalFence(std::function<void()>&& func) = 0;
66
67 /// Send an operation to be done after a certain amount of flushes.
68 virtual void SyncOperation(std::function<void()>&& func) = 0;
63 69
64 /// Signal a GPU based syncpoint as a fence 70 /// Signal a GPU based syncpoint as a fence
65 virtual void SignalSyncPoint(u32 value) = 0; 71 virtual void SignalSyncPoint(u32 value) = 0;
@@ -86,13 +92,13 @@ public:
86 virtual void OnCPUWrite(VAddr addr, u64 size) = 0; 92 virtual void OnCPUWrite(VAddr addr, u64 size) = 0;
87 93
88 /// Sync memory between guest and host. 94 /// Sync memory between guest and host.
89 virtual void SyncGuestHost() = 0; 95 virtual void InvalidateGPUCache() = 0;
90 96
91 /// Unmap memory range 97 /// Unmap memory range
92 virtual void UnmapMemory(VAddr addr, u64 size) = 0; 98 virtual void UnmapMemory(VAddr addr, u64 size) = 0;
93 99
94 /// Remap GPU memory range. This means underneath backing memory changed 100 /// Remap GPU memory range. This means underneath backing memory changed
95 virtual void ModifyGPUMemory(GPUVAddr addr, u64 size) = 0; 101 virtual void ModifyGPUMemory(size_t as_id, GPUVAddr addr, u64 size) = 0;
96 102
97 /// Notify rasterizer that any caches of the specified region should be flushed to Switch memory 103 /// Notify rasterizer that any caches of the specified region should be flushed to Switch memory
98 /// and invalidated 104 /// and invalidated
@@ -123,7 +129,7 @@ public:
123 [[nodiscard]] virtual Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() = 0; 129 [[nodiscard]] virtual Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() = 0;
124 130
125 virtual void AccelerateInlineToMemory(GPUVAddr address, size_t copy_size, 131 virtual void AccelerateInlineToMemory(GPUVAddr address, size_t copy_size,
126 std::span<u8> memory) = 0; 132 std::span<const u8> memory) = 0;
127 133
128 /// Attempt to use a faster method to display the framebuffer to screen 134 /// Attempt to use a faster method to display the framebuffer to screen
129 [[nodiscard]] virtual bool AccelerateDisplay(const Tegra::FramebufferConfig& config, 135 [[nodiscard]] virtual bool AccelerateDisplay(const Tegra::FramebufferConfig& config,
@@ -137,5 +143,11 @@ public:
137 /// Initialize disk cached resources for the game being emulated 143 /// Initialize disk cached resources for the game being emulated
138 virtual void LoadDiskResources(u64 title_id, std::stop_token stop_loading, 144 virtual void LoadDiskResources(u64 title_id, std::stop_token stop_loading,
139 const DiskResourceLoadCallback& callback) {} 145 const DiskResourceLoadCallback& callback) {}
146
147 virtual void InitializeChannel(Tegra::Control::ChannelState& channel) {}
148
149 virtual void BindChannel(Tegra::Control::ChannelState& channel) {}
150
151 virtual void ReleaseChannel(s32 channel_id) {}
140}; 152};
141} // namespace VideoCore 153} // namespace VideoCore