Remove NotifyFrameBuffer as we are doing a texception pass every drawcall.
This commit is contained in:
		
				
					committed by
					
						
						FernandoS27
					
				
			
			
				
	
			
			
			
						parent
						
							3558c88442
						
					
				
				
					commit
					e64fa4d2ea
				
			@@ -970,26 +970,17 @@ Surface RasterizerCacheOpenGL::GetColorBufferSurface(std::size_t index, bool pre
 | 
			
		||||
    gpu.dirty_flags.color_buffer.reset(index);
 | 
			
		||||
 | 
			
		||||
    ASSERT(index < Tegra::Engines::Maxwell3D::Regs::NumRenderTargets);
 | 
			
		||||
    auto Notify = [&]() {
 | 
			
		||||
        if (last_color_buffers[index] != current_color_buffers[index]) {
 | 
			
		||||
            NotifyFrameBufferChange(current_color_buffers[index]);
 | 
			
		||||
        }
 | 
			
		||||
        last_color_buffers[index] = current_color_buffers[index];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    if (index >= regs.rt_control.count) {
 | 
			
		||||
        Notify();
 | 
			
		||||
        return current_color_buffers[index] = {};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (regs.rt[index].Address() == 0 || regs.rt[index].format == Tegra::RenderTargetFormat::NONE) {
 | 
			
		||||
        Notify();
 | 
			
		||||
        return current_color_buffers[index] = {};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const SurfaceParams color_params{SurfaceParams::CreateForFramebuffer(index)};
 | 
			
		||||
 | 
			
		||||
    Notify();
 | 
			
		||||
    return current_color_buffers[index] = GetSurface(color_params, preserve_contents);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1391,18 +1382,6 @@ bool RasterizerCacheOpenGL::PartialReinterpretSurface(Surface triggering_surface
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RasterizerCacheOpenGL::NotifyFrameBufferChange(Surface triggering_surface) {
 | 
			
		||||
    if (triggering_surface == nullptr)
 | 
			
		||||
        return;
 | 
			
		||||
    if (texception) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    Surface intersect = CollideOnReinterpretedSurface(triggering_surface->GetAddr());
 | 
			
		||||
    if (intersect != nullptr) {
 | 
			
		||||
        PartialReinterpretSurface(triggering_surface, intersect);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RasterizerCacheOpenGL::SignalPreDrawCall() {
 | 
			
		||||
    if (texception) {
 | 
			
		||||
        glTextureBarrier();
 | 
			
		||||
 
 | 
			
		||||
@@ -488,9 +488,6 @@ private:
 | 
			
		||||
    /// Tries to get a reserved surface for the specified parameters
 | 
			
		||||
    Surface TryGetReservedSurface(const SurfaceParams& params);
 | 
			
		||||
 | 
			
		||||
    /// When a render target is changed, this method is called with the previous render target
 | 
			
		||||
    void NotifyFrameBufferChange(Surface triggering_surface);
 | 
			
		||||
 | 
			
		||||
    // Partialy reinterpret a surface based on a triggering_surface that collides with it.
 | 
			
		||||
    bool PartialReinterpretSurface(Surface triggering_surface, Surface intersect);
 | 
			
		||||
 | 
			
		||||
@@ -535,7 +532,6 @@ private:
 | 
			
		||||
        auto interval = GetReinterpretInterval(r_surface);
 | 
			
		||||
        reinterpreted_surfaces.insert({interval, r_surface});
 | 
			
		||||
        r_surface->MarkReinterpreted();
 | 
			
		||||
        run_texception_pass = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Surface CollideOnReinterpretedSurface(VAddr addr) const {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user