summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2016-08-13 22:08:53 +1000
committerStenzek <stenzek@gmail.com>2016-10-01 01:09:12 +1000
commit6a99cbd9fc32637b18b1b030ec06ce9c73be04eb (patch)
treeb52a33a7563cd99c00a0fdbb9d3048c7452897ce /Source/Core/VideoCommon
parent534607879199e700dbd143317e71218140a58b56 (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.cpp9
-rw-r--r--Source/Core/VideoCommon/RenderBase.h9
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;