diff options
| author | Stenzek <stenzek@gmail.com> | 2016-08-13 22:08:53 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2016-10-01 01:09:12 +1000 |
| commit | 6a99cbd9fc32637b18b1b030ec06ce9c73be04eb (patch) | |
| tree | b52a33a7563cd99c00a0fdbb9d3048c7452897ce /Source/Core/VideoCommon | |
| parent | 534607879199e700dbd143317e71218140a58b56 (diff) | |
VideoCommon: Call Renderer::SurfaceChanged on render parent resize
This is needed because for some reason the WSI for NV Vulkan drivers
doesn't return VK_ERROR_OUT_OF_DATE_KHR, so there is no other way to know
that a resize has occured apart from polling, which is a poor solution for
X11 (since it is blocking).
Diffstat (limited to 'Source/Core/VideoCommon')
| -rw-r--r-- | Source/Core/VideoCommon/RenderBase.cpp | 9 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/RenderBase.h | 9 |
2 files changed, 11 insertions, 7 deletions
diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 3b50cd2313..8fb77a341f 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -60,10 +60,6 @@ Common::Event Renderer::s_screenshotCompleted; volatile bool Renderer::s_bScreenshot; -// Final surface changing -Common::Flag Renderer::s_SurfaceNeedsChanged; -Common::Event Renderer::s_ChangedSurface; - // The framebuffer size int Renderer::s_target_width; int Renderer::s_target_height; @@ -74,6 +70,11 @@ int Renderer::s_backbuffer_height; std::unique_ptr<PostProcessingShaderImplementation> Renderer::m_post_processor; +// Final surface changing +Common::Flag Renderer::s_surface_needs_change; +Common::Event Renderer::s_surface_changed; +void* Renderer::s_new_surface_handle; + TargetRectangle Renderer::target_rc; int Renderer::s_last_efb_scale; diff --git a/Source/Core/VideoCommon/RenderBase.h b/Source/Core/VideoCommon/RenderBase.h index 1ae3121637..44a0b982b7 100644 --- a/Source/Core/VideoCommon/RenderBase.h +++ b/Source/Core/VideoCommon/RenderBase.h @@ -138,9 +138,8 @@ public: static Common::Event s_screenshotCompleted; // Final surface changing - static Common::Flag s_SurfaceNeedsChanged; - static Common::Event s_ChangedSurface; - + // This is called when the surface is resized (WX) or the window changes (Android). + virtual void ChangeSurface(void* new_surface_handle) {} protected: static void CalculateTargetScale(int x, int y, int* scaledX, int* scaledY); bool CalculateTargetSize(unsigned int framebuffer_width, unsigned int framebuffer_height); @@ -178,6 +177,10 @@ protected: static const float GX_MAX_DEPTH; + static Common::Flag s_surface_needs_change; + static Common::Event s_surface_changed; + static void* s_new_surface_handle; + private: static PEControl::PixelFormat prev_efb_format; static unsigned int efb_scale_numeratorX; |
