diff options
| -rw-r--r-- | src/video_core/rasterizer_interface.h | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 1 |
3 files changed, 12 insertions, 6 deletions
diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h index 71df233b5..8ef7e74c7 100644 --- a/src/video_core/rasterizer_interface.h +++ b/src/video_core/rasterizer_interface.h | |||
| @@ -42,11 +42,16 @@ public: | |||
| 42 | /// and invalidated | 42 | /// and invalidated |
| 43 | virtual void FlushAndInvalidateRegion(PAddr addr, u32 size) = 0; | 43 | virtual void FlushAndInvalidateRegion(PAddr addr, u32 size) = 0; |
| 44 | 44 | ||
| 45 | /// Attempt to use a faster method to perform a display transfer | 45 | /// Attempt to use a faster method to perform a display transfer with is_texture_copy = 0 |
| 46 | virtual bool AccelerateDisplayTransfer(const GPU::Regs::DisplayTransferConfig& config) { | 46 | virtual bool AccelerateDisplayTransfer(const GPU::Regs::DisplayTransferConfig& config) { |
| 47 | return false; | 47 | return false; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | /// Attempt to use a faster method to perform a display transfer with is_texture_copy = 1 | ||
| 51 | virtual bool AccelerateTextureCopy(const GPU::Regs::DisplayTransferConfig& config) { | ||
| 52 | return false; | ||
| 53 | } | ||
| 54 | |||
| 50 | /// Attempt to use a faster method to fill a region | 55 | /// Attempt to use a faster method to fill a region |
| 51 | virtual bool AccelerateFill(const GPU::Regs::MemoryFillConfig& config) { | 56 | virtual bool AccelerateFill(const GPU::Regs::MemoryFillConfig& config) { |
| 52 | return false; | 57 | return false; |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 60c9d9180..e7ad85bf3 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -692,11 +692,6 @@ bool RasterizerOpenGL::AccelerateDisplayTransfer(const GPU::Regs::DisplayTransfe | |||
| 692 | using PixelFormat = CachedSurface::PixelFormat; | 692 | using PixelFormat = CachedSurface::PixelFormat; |
| 693 | using SurfaceType = CachedSurface::SurfaceType; | 693 | using SurfaceType = CachedSurface::SurfaceType; |
| 694 | 694 | ||
| 695 | if (config.is_texture_copy) { | ||
| 696 | // TODO(tfarley): Try to hardware accelerate this | ||
| 697 | return false; | ||
| 698 | } | ||
| 699 | |||
| 700 | CachedSurface src_params; | 695 | CachedSurface src_params; |
| 701 | src_params.addr = config.GetPhysicalInputAddress(); | 696 | src_params.addr = config.GetPhysicalInputAddress(); |
| 702 | src_params.width = config.output_width; | 697 | src_params.width = config.output_width; |
| @@ -751,6 +746,11 @@ bool RasterizerOpenGL::AccelerateDisplayTransfer(const GPU::Regs::DisplayTransfe | |||
| 751 | return true; | 746 | return true; |
| 752 | } | 747 | } |
| 753 | 748 | ||
| 749 | bool RasterizerOpenGL::AccelerateTextureCopy(const GPU::Regs::DisplayTransferConfig& config) { | ||
| 750 | // TODO(tfarley): Try to hardware accelerate this | ||
| 751 | return false; | ||
| 752 | } | ||
| 753 | |||
| 754 | bool RasterizerOpenGL::AccelerateFill(const GPU::Regs::MemoryFillConfig& config) { | 754 | bool RasterizerOpenGL::AccelerateFill(const GPU::Regs::MemoryFillConfig& config) { |
| 755 | using PixelFormat = CachedSurface::PixelFormat; | 755 | using PixelFormat = CachedSurface::PixelFormat; |
| 756 | using SurfaceType = CachedSurface::SurfaceType; | 756 | using SurfaceType = CachedSurface::SurfaceType; |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 24fefed1b..d9b027305 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -238,6 +238,7 @@ public: | |||
| 238 | void FlushRegion(PAddr addr, u32 size) override; | 238 | void FlushRegion(PAddr addr, u32 size) override; |
| 239 | void FlushAndInvalidateRegion(PAddr addr, u32 size) override; | 239 | void FlushAndInvalidateRegion(PAddr addr, u32 size) override; |
| 240 | bool AccelerateDisplayTransfer(const GPU::Regs::DisplayTransferConfig& config) override; | 240 | bool AccelerateDisplayTransfer(const GPU::Regs::DisplayTransferConfig& config) override; |
| 241 | bool AccelerateTextureCopy(const GPU::Regs::DisplayTransferConfig& config) override; | ||
| 241 | bool AccelerateFill(const GPU::Regs::MemoryFillConfig& config) override; | 242 | bool AccelerateFill(const GPU::Regs::MemoryFillConfig& config) override; |
| 242 | bool AccelerateDisplay(const GPU::Regs::FramebufferConfig& config, PAddr framebuffer_addr, | 243 | bool AccelerateDisplay(const GPU::Regs::FramebufferConfig& config, PAddr framebuffer_addr, |
| 243 | u32 pixel_stride, ScreenInfo& screen_info) override; | 244 | u32 pixel_stride, ScreenInfo& screen_info) override; |