Sync GPU state after loading (fix FE terrain bug)
This commit is contained in:
		| @@ -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(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -28,3 +28,7 @@ void RendererBase::RefreshRasterizerSetting() { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void RendererBase::Sync() { | ||||||
|  |     rasterizer->SyncEntireState(); | ||||||
|  | } | ||||||
|   | |||||||
| @@ -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. | ||||||
|   | |||||||
| @@ -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(); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user