Sync GPU state after loading (fix FE terrain bug)

This commit is contained in:
Hamish Milne 2020-04-11 10:28:52 +01:00
parent 7b3a8e9bf5
commit a210e7e2bd
5 changed files with 12 additions and 3 deletions

View file

@ -44,6 +44,7 @@
#include "core/rpc/rpc_server.h" #include "core/rpc/rpc_server.h"
#include "core/settings.h" #include "core/settings.h"
#include "network/network.h" #include "network/network.h"
#include "video_core/renderer_base.h"
#include "video_core/video_core.h" #include "video_core/video_core.h"
namespace Core { namespace Core {
@ -586,6 +587,7 @@ void System::serialize(Archive& ar, const unsigned int file_version) {
Service::GSP::SetGlobalModule(*this); Service::GSP::SetGlobalModule(*this);
memory->SetDSP(*dsp_core); memory->SetDSP(*dsp_core);
cheat_engine->Connect(); cheat_engine->Connect();
VideoCore::g_renderer->Sync();
} }
} }

View file

@ -87,5 +87,7 @@ public:
virtual void LoadDiskResources(const std::atomic_bool& stop_loading, virtual void LoadDiskResources(const std::atomic_bool& stop_loading,
const DiskResourceLoadCallback& callback) {} const DiskResourceLoadCallback& callback) {}
virtual void SyncEntireState() {}
}; };
} // namespace VideoCore } // namespace VideoCore

View file

@ -28,3 +28,7 @@ void RendererBase::RefreshRasterizerSetting() {
} }
} }
} }
void RendererBase::Sync() {
rasterizer->SyncEntireState();
}

View file

@ -68,6 +68,7 @@ public:
} }
void RefreshRasterizerSetting(); void RefreshRasterizerSetting();
void Sync();
protected: protected:
Frontend::EmuWindow& render_window; ///< Reference to the render window handle. Frontend::EmuWindow& render_window; ///< Reference to the render window handle.

View file

@ -61,6 +61,9 @@ public:
u32 pixel_stride, ScreenInfo& screen_info) override; u32 pixel_stride, ScreenInfo& screen_info) override;
bool AccelerateDrawBatch(bool is_indexed) override; bool AccelerateDrawBatch(bool is_indexed) override;
/// Syncs entire status to match PICA registers
void SyncEntireState() override;
private: private:
struct SamplerInfo { struct SamplerInfo {
using TextureConfig = Pica::TexturingRegs::TextureConfig; using TextureConfig = Pica::TexturingRegs::TextureConfig;
@ -132,9 +135,6 @@ private:
GLvec3 view; GLvec3 view;
}; };
/// Syncs entire status to match PICA registers
void SyncEntireState();
/// Syncs the clip enabled status to match the PICA register /// Syncs the clip enabled status to match the PICA register
void SyncClipEnabled(); void SyncClipEnabled();