Remove certain optimizations that caused texception to fail in certain scenarios.
This commit is contained in:
parent
e9d84ef22c
commit
3558c88442
|
@ -575,8 +575,6 @@ std::pair<bool, bool> RasterizerOpenGL::ConfigureFramebuffers(
|
|||
SetupCachedFramebuffer(fbkey, current_state);
|
||||
SyncViewport(current_state);
|
||||
|
||||
res_cache.SignalPostFramebufferSetup();
|
||||
|
||||
return current_depth_stencil_usage = {static_cast<bool>(depth_surface), fbkey.stencil_enable};
|
||||
}
|
||||
|
||||
|
@ -1019,7 +1017,6 @@ void RasterizerOpenGL::SetupTextures(Maxwell::ShaderStage stage, const Shader& s
|
|||
texture_samplers[current_bindpoint].SyncWithConfig(texture.tsc);
|
||||
|
||||
Surface surface = res_cache.GetTextureSurface(texture, entry);
|
||||
res_cache.SignalSurfaceParameter(surface);
|
||||
if (surface != nullptr) {
|
||||
state.texture_units[current_bindpoint].texture =
|
||||
entry.IsArray() ? surface->TextureLayer().handle : surface->Texture().handle;
|
||||
|
|
|
@ -1394,7 +1394,6 @@ bool RasterizerCacheOpenGL::PartialReinterpretSurface(Surface triggering_surface
|
|||
void RasterizerCacheOpenGL::NotifyFrameBufferChange(Surface triggering_surface) {
|
||||
if (triggering_surface == nullptr)
|
||||
return;
|
||||
run_texception_pass = false;
|
||||
if (texception) {
|
||||
return;
|
||||
}
|
||||
|
@ -1408,11 +1407,10 @@ void RasterizerCacheOpenGL::SignalPreDrawCall() {
|
|||
if (texception) {
|
||||
glTextureBarrier();
|
||||
}
|
||||
texception = false;
|
||||
}
|
||||
|
||||
void RasterizerCacheOpenGL::SignalPostDrawCall() {
|
||||
if (!run_texception_pass)
|
||||
return;
|
||||
for (u32 i = 0; i < Maxwell::NumRenderTargets; i++) {
|
||||
if (current_color_buffers[i] != nullptr) {
|
||||
Surface intersect = CollideOnReinterpretedSurface(current_color_buffers[i]->GetAddr());
|
||||
|
@ -1422,21 +1420,6 @@ void RasterizerCacheOpenGL::SignalPostDrawCall() {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!texception)
|
||||
run_texception_pass = false;
|
||||
}
|
||||
|
||||
void RasterizerCacheOpenGL::SignalPostFramebufferSetup() {
|
||||
if (!run_texception_pass)
|
||||
texception = false;
|
||||
}
|
||||
|
||||
void RasterizerCacheOpenGL::SignalSurfaceParameter(Surface& surface) {
|
||||
if (surface == nullptr)
|
||||
return;
|
||||
if (surface->IsReinterpreted()) {
|
||||
run_texception_pass = true;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace OpenGL
|
||||
|
|
|
@ -471,8 +471,6 @@ public:
|
|||
|
||||
void SignalPreDrawCall();
|
||||
void SignalPostDrawCall();
|
||||
void SignalSurfaceParameter(Surface& surface);
|
||||
void SignalPostFramebufferSetup();
|
||||
|
||||
private:
|
||||
void LoadSurface(const Surface& surface);
|
||||
|
@ -512,7 +510,6 @@ private:
|
|||
OGLFramebuffer read_framebuffer;
|
||||
OGLFramebuffer draw_framebuffer;
|
||||
|
||||
bool run_texception_pass = false;
|
||||
bool texception = false;
|
||||
|
||||
/// Use a Pixel Buffer Object to download the previous texture and then upload it to the new one
|
||||
|
|
Reference in New Issue