From 66b0d799ee0e22e07ca9a409d42bafe790695f3c Mon Sep 17 00:00:00 2001 From: tfarley Date: Fri, 29 May 2015 21:54:53 -0400 Subject: Render-to-texture flush, interval math fix --- src/common/math_util.h | 2 +- src/video_core/renderer_opengl/gl_rasterizer.cpp | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/common/math_util.h b/src/common/math_util.h index 4b091074..d44b06e7 100644 --- a/src/common/math_util.h +++ b/src/common/math_util.h @@ -12,7 +12,7 @@ namespace MathUtil { inline bool IntervalsIntersect(unsigned start0, unsigned length0, unsigned start1, unsigned length1) { - return (std::max(start0, start1) <= std::min(start0 + length0, start1 + length1)); + return (std::max(start0, start1) < std::min(start0 + length0, start1 + length1)); } template diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 3396d72c..faab77ff 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -217,7 +217,19 @@ void RasterizerOpenGL::DrawTriangles() { vertex_batch.clear(); - // TODO: Flush the resource cache at the current depth and color framebuffer addresses for render-to-texture + // Flush the resource cache at the current depth and color framebuffer addresses for render-to-texture + const auto& regs = Pica::g_state.regs; + + PAddr cur_fb_color_addr = regs.framebuffer.GetColorBufferPhysicalAddress(); + u32 cur_fb_color_size = Pica::Regs::BytesPerColorPixel(regs.framebuffer.color_format) + * regs.framebuffer.GetWidth() * regs.framebuffer.GetHeight(); + + PAddr cur_fb_depth_addr = regs.framebuffer.GetDepthBufferPhysicalAddress(); + u32 cur_fb_depth_size = Pica::Regs::BytesPerDepthPixel(regs.framebuffer.depth_format) + * regs.framebuffer.GetWidth() * regs.framebuffer.GetHeight(); + + res_cache.NotifyFlush(cur_fb_color_addr, cur_fb_color_size); + res_cache.NotifyFlush(cur_fb_depth_addr, cur_fb_depth_size); } void RasterizerOpenGL::CommitFramebuffer() { -- cgit v1.2.3