Merge pull request #14434 from Smjert/fix/13447/vsync

Fixes vsync setting ignored when using a separate thread for rendering
This commit is contained in:
Rémi Verschelde 2017-12-09 13:21:36 +01:00 committed by GitHub
commit a8ee9a6116
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 12 additions and 4 deletions

View File

@ -92,14 +92,16 @@ public:
bool resizable; bool resizable;
bool borderless_window; bool borderless_window;
bool maximized; bool maximized;
bool use_vsync;
float get_aspect() const { return (float)width / (float)height; } float get_aspect() const { return (float)width / (float)height; }
VideoMode(int p_width = 1024, int p_height = 600, bool p_fullscreen = false, bool p_resizable = true, bool p_borderless_window = false, bool p_maximized = false) { VideoMode(int p_width = 1024, int p_height = 600, bool p_fullscreen = false, bool p_resizable = true, bool p_borderless_window = false, bool p_maximized = false, bool p_use_vsync = false) {
width = p_width; width = p_width;
height = p_height; height = p_height;
fullscreen = p_fullscreen; fullscreen = p_fullscreen;
resizable = p_resizable; resizable = p_resizable;
borderless_window = p_borderless_window; borderless_window = p_borderless_window;
maximized = p_maximized; maximized = p_maximized;
use_vsync = p_use_vsync;
} }
}; };

View File

@ -819,7 +819,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->_allow_hidpi = GLOBAL_DEF("display/window/dpi/allow_hidpi", false); OS::get_singleton()->_allow_hidpi = GLOBAL_DEF("display/window/dpi/allow_hidpi", false);
} }
use_vsync = GLOBAL_DEF("display/window/vsync/use_vsync", true); video_mode.use_vsync = GLOBAL_DEF("display/window/vsync/use_vsync", true);
GLOBAL_DEF("rendering/quality/intended_usage/framebuffer_allocation", 2); GLOBAL_DEF("rendering/quality/intended_usage/framebuffer_allocation", 2);
GLOBAL_DEF("rendering/quality/intended_usage/framebuffer_allocation.mobile", 3); GLOBAL_DEF("rendering/quality/intended_usage/framebuffer_allocation.mobile", 3);
@ -993,8 +993,6 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
// also init our arvr_server from here // also init our arvr_server from here
arvr_server = memnew(ARVRServer); arvr_server = memnew(ARVRServer);
OS::get_singleton()->set_use_vsync(use_vsync);
register_core_singletons(); register_core_singletons();
MAIN_PRINT("Main: Setup Logo"); MAIN_PRINT("Main: Setup Logo");

View File

@ -105,6 +105,7 @@ void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_
context_gl = memnew(ContextGL_Haiku(window)); context_gl = memnew(ContextGL_Haiku(window));
context_gl->initialize(); context_gl->initialize();
context_gl->make_current(); context_gl->make_current();
context_gl->set_use_vsync(current_video_mode.use_vsync);
/* Port to GLES 3 rasterizer */ /* Port to GLES 3 rasterizer */
//rasterizer = memnew(RasterizerGLES2); //rasterizer = memnew(RasterizerGLES2);

View File

@ -1089,6 +1089,8 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
[context makeCurrentContext]; [context makeCurrentContext];
set_use_vsync(p_desired.use_vsync);
[NSApp activateIgnoringOtherApps:YES]; [NSApp activateIgnoringOtherApps:YES];
_update_window(); _update_window();

View File

@ -241,6 +241,7 @@ void OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_aud
RasterizerGLES3::register_config(); RasterizerGLES3::register_config();
RasterizerGLES3::make_current(); RasterizerGLES3::make_current();
gl_context->set_use_vsync(vm.use_vsync);
visual_server = memnew(VisualServerRaster); visual_server = memnew(VisualServerRaster);
// FIXME: Reimplement threaded rendering? Or remove? // FIXME: Reimplement threaded rendering? Or remove?

View File

@ -1074,6 +1074,8 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
RasterizerGLES3::register_config(); RasterizerGLES3::register_config();
RasterizerGLES3::make_current(); RasterizerGLES3::make_current();
gl_context->set_use_vsync(video_mode.use_vsync);
#endif #endif
visual_server = memnew(VisualServerRaster); visual_server = memnew(VisualServerRaster);

View File

@ -286,6 +286,8 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
RasterizerGLES3::make_current(); RasterizerGLES3::make_current();
context_gl->set_use_vsync(current_videomode.use_vsync);
#endif #endif
visual_server = memnew(VisualServerRaster); visual_server = memnew(VisualServerRaster);