diff options
| author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-04-23 12:01:23 +0200 |
|---|---|---|
| committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-05-08 17:41:40 +0200 |
| commit | 1589433e8fb5091961e38f027eae57de9782e8ef (patch) | |
| tree | 077232efc7e346aac367121574c15d68d41a3cf2 /drivers | |
| parent | 6f0760beb34ab8c27df11c7ce85f1e3994d0df89 (diff) | |
| download | redot-engine-1589433e8fb5091961e38f027eae57de9782e8ef.tar.gz | |
Apply additional fixes to servers' threading
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gles3/rasterizer_gles3.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 767a394ce5..6e7d4a6733 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -395,10 +395,13 @@ void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, Display glBindFramebuffer(GL_DRAW_FRAMEBUFFER, GLES3::TextureStorage::system_fbo); if (p_first) { - Size2i win_size = DisplayServer::get_singleton()->window_get_size(); if (p_screen_rect.position != Vector2() || p_screen_rect.size != rt->size) { // Viewport doesn't cover entire window so clear window to black before blitting. - glViewport(0, 0, win_size.width, win_size.height); + // Querying the actual window size from the DisplayServer would deadlock in separate render thread mode, + // so let's set the biggest viewport the implementation supports, to be sure the window is fully covered. + GLsizei max_vp[2] = {}; + glGetIntegerv(GL_MAX_VIEWPORT_DIMS, max_vp); + glViewport(0, 0, max_vp[0], max_vp[1]); glClearColor(0.0, 0.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); } |
