Remove NotifyFrameBuffer as we are doing a texception pass every drawcall.

This commit is contained in:
Fernando Sahmkow 2019-02-09 19:19:16 -04:00 committed by FernandoS27
parent 3558c88442
commit e64fa4d2ea
2 changed files with 0 additions and 25 deletions

View File

@ -970,26 +970,17 @@ Surface RasterizerCacheOpenGL::GetColorBufferSurface(std::size_t index, bool pre
gpu.dirty_flags.color_buffer.reset(index); gpu.dirty_flags.color_buffer.reset(index);
ASSERT(index < Tegra::Engines::Maxwell3D::Regs::NumRenderTargets); 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) { if (index >= regs.rt_control.count) {
Notify();
return current_color_buffers[index] = {}; return current_color_buffers[index] = {};
} }
if (regs.rt[index].Address() == 0 || regs.rt[index].format == Tegra::RenderTargetFormat::NONE) { if (regs.rt[index].Address() == 0 || regs.rt[index].format == Tegra::RenderTargetFormat::NONE) {
Notify();
return current_color_buffers[index] = {}; return current_color_buffers[index] = {};
} }
const SurfaceParams color_params{SurfaceParams::CreateForFramebuffer(index)}; const SurfaceParams color_params{SurfaceParams::CreateForFramebuffer(index)};
Notify();
return current_color_buffers[index] = GetSurface(color_params, preserve_contents); return current_color_buffers[index] = GetSurface(color_params, preserve_contents);
} }
@ -1391,18 +1382,6 @@ bool RasterizerCacheOpenGL::PartialReinterpretSurface(Surface triggering_surface
return true; 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() { void RasterizerCacheOpenGL::SignalPreDrawCall() {
if (texception) { if (texception) {
glTextureBarrier(); glTextureBarrier();

View File

@ -488,9 +488,6 @@ private:
/// Tries to get a reserved surface for the specified parameters /// Tries to get a reserved surface for the specified parameters
Surface TryGetReservedSurface(const SurfaceParams& params); 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. // Partialy reinterpret a surface based on a triggering_surface that collides with it.
bool PartialReinterpretSurface(Surface triggering_surface, Surface intersect); bool PartialReinterpretSurface(Surface triggering_surface, Surface intersect);
@ -535,7 +532,6 @@ private:
auto interval = GetReinterpretInterval(r_surface); auto interval = GetReinterpretInterval(r_surface);
reinterpreted_surfaces.insert({interval, r_surface}); reinterpreted_surfaces.insert({interval, r_surface});
r_surface->MarkReinterpreted(); r_surface->MarkReinterpreted();
run_texception_pass = true;
} }
Surface CollideOnReinterpretedSurface(VAddr addr) const { Surface CollideOnReinterpretedSurface(VAddr addr) const {