|
|
@@ -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();
|