summaryrefslogtreecommitdiffstats
path: root/src/video_core/rasterizer_interface.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-03-21 02:37:43 +0100
committerGitHub <noreply@github.com>2018-03-21 02:37:43 +0100
commit0b3ab30762ed09be88e945d27a83bdfe9e77b49c (patch)
tree2ce527d9139a25fc1c728a7f4dd2f3baf2df13d1 /src/video_core/rasterizer_interface.h
parentMerge pull request #256 from mailwl/fatal (diff)
parentrenderer_gl: Port boilerplate rasterizer code over from Citra. (diff)
downloadyuzu-0b3ab30762ed09be88e945d27a83bdfe9e77b49c.tar
yuzu-0b3ab30762ed09be88e945d27a83bdfe9e77b49c.tar.gz
yuzu-0b3ab30762ed09be88e945d27a83bdfe9e77b49c.tar.bz2
yuzu-0b3ab30762ed09be88e945d27a83bdfe9e77b49c.tar.lz
yuzu-0b3ab30762ed09be88e945d27a83bdfe9e77b49c.tar.xz
yuzu-0b3ab30762ed09be88e945d27a83bdfe9e77b49c.tar.zst
yuzu-0b3ab30762ed09be88e945d27a83bdfe9e77b49c.zip
Diffstat (limited to 'src/video_core/rasterizer_interface.h')
-rw-r--r--src/video_core/rasterizer_interface.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h
new file mode 100644
index 000000000..6c7bd0826
--- /dev/null
+++ b/src/video_core/rasterizer_interface.h
@@ -0,0 +1,61 @@
+// Copyright 2018 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "common/common_types.h"
+
+struct ScreenInfo;
+
+namespace VideoCore {
+
+class RasterizerInterface {
+public:
+ virtual ~RasterizerInterface() {}
+
+ /// Draw the current batch of triangles
+ virtual void DrawTriangles() = 0;
+
+ /// Notify rasterizer that the specified Maxwell register has been changed
+ virtual void NotifyMaxwellRegisterChanged(u32 id) = 0;
+
+ /// Notify rasterizer that all caches should be flushed to 3DS memory
+ virtual void FlushAll() = 0;
+
+ /// Notify rasterizer that any caches of the specified region should be flushed to 3DS memory
+ virtual void FlushRegion(PAddr addr, u32 size) = 0;
+
+ /// Notify rasterizer that any caches of the specified region should be invalidated
+ virtual void InvalidateRegion(PAddr addr, u32 size) = 0;
+
+ /// Notify rasterizer that any caches of the specified region should be flushed to 3DS memory
+ /// and invalidated
+ virtual void FlushAndInvalidateRegion(PAddr addr, u32 size) = 0;
+
+ /// Attempt to use a faster method to perform a display transfer with is_texture_copy = 0
+ virtual bool AccelerateDisplayTransfer(const void* config) {
+ return false;
+ }
+
+ /// Attempt to use a faster method to perform a display transfer with is_texture_copy = 1
+ virtual bool AccelerateTextureCopy(const void* config) {
+ return false;
+ }
+
+ /// Attempt to use a faster method to fill a region
+ virtual bool AccelerateFill(const void* config) {
+ return false;
+ }
+
+ /// Attempt to use a faster method to display the framebuffer to screen
+ virtual bool AccelerateDisplay(const void* config, PAddr framebuffer_addr, u32 pixel_stride,
+ ScreenInfo& screen_info) {
+ return false;
+ }
+
+ virtual bool AccelerateDrawBatch(bool is_indexed) {
+ return false;
+ }
+};
+} // namespace VideoCore