Remove NotifyFrameBuffer as we are doing a texception pass every drawcall.
This commit is contained in:
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 {
|
||||
|
Loading…
Reference in New Issue
Block a user