[Bf-blender-cvs] [0ccf3f89d2e] master: GPU: Move ghost default framebuffer getter to context creation

Clément Foucault noreply at git.blender.org
Sat Aug 8 02:12:29 CEST 2020


Commit: 0ccf3f89d2e2389d433d1ab682ad04310a9b19ae
Author: Clément Foucault
Date:   Thu Aug 6 04:30:38 2020 +0200
Branches: master
https://developer.blender.org/rB0ccf3f89d2e2389d433d1ab682ad04310a9b19ae

GPU: Move ghost default framebuffer getter to context creation

===================================================================

M	intern/ghost/test/multitest/MultiTest.c
M	source/blender/gpu/CMakeLists.txt
M	source/blender/gpu/GPU_context.h
M	source/blender/gpu/intern/gpu_context.cc
M	source/blender/windowmanager/intern/wm_playanim.c
M	source/blender/windowmanager/intern/wm_window.c

===================================================================

diff --git a/intern/ghost/test/multitest/MultiTest.c b/intern/ghost/test/multitest/MultiTest.c
index 5ddcb2470a8..cf7a06bf3e5 100644
--- a/intern/ghost/test/multitest/MultiTest.c
+++ b/intern/ghost/test/multitest/MultiTest.c
@@ -330,8 +330,7 @@ MainWindow *mainwindow_new(MultiTestApp *app)
   if (win) {
     MainWindow *mw = MEM_callocN(sizeof(*mw), "mainwindow_new");
 
-    GLuint default_fb = GHOST_GetDefaultOpenGLFramebuffer(win);
-    mw->gpu_context = GPU_context_create(default_fb);
+    mw->gpu_context = GPU_context_create(win);
     GPU_init();
 
     mw->app = app;
@@ -587,8 +586,7 @@ LoggerWindow *loggerwindow_new(MultiTestApp *app)
   if (win) {
     LoggerWindow *lw = MEM_callocN(sizeof(*lw), "loggerwindow_new");
 
-    GLuint default_fb = GHOST_GetDefaultOpenGLFramebuffer(win);
-    lw->gpu_context = GPU_context_create(default_fb);
+    lw->gpu_context = GPU_context_create(win);
     GPU_init();
 
     int bbox[2][2];
@@ -788,8 +786,7 @@ ExtraWindow *extrawindow_new(MultiTestApp *app)
   if (win) {
     ExtraWindow *ew = MEM_callocN(sizeof(*ew), "mainwindow_new");
 
-    GLuint default_fb = GHOST_GetDefaultOpenGLFramebuffer(win);
-    ew->gpu_context = GPU_context_create(default_fb);
+    ew->gpu_context = GPU_context_create(win);
     GPU_init();
 
     ew->app = app;
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 3ea18f72166..4e9b4a5b313 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -42,6 +42,7 @@ set(INC
   ../nodes
   ../nodes/intern
 
+  ../../../intern/ghost
   ../../../intern/glew-mx
   ../../../intern/guardedalloc
   ../../../intern/mantaflow/extern
diff --git a/source/blender/gpu/GPU_context.h b/source/blender/gpu/GPU_context.h
index 4f0edaf3ac8..0d9e1014803 100644
--- a/source/blender/gpu/GPU_context.h
+++ b/source/blender/gpu/GPU_context.h
@@ -35,7 +35,7 @@ extern "C" {
 
 typedef struct GPUContext GPUContext;
 
-GPUContext *GPU_context_create(GLuint default_framebuffer);
+GPUContext *GPU_context_create(void *ghost_window);
 void GPU_context_discard(GPUContext *);
 
 void GPU_context_active_set(GPUContext *);
diff --git a/source/blender/gpu/intern/gpu_context.cc b/source/blender/gpu/intern/gpu_context.cc
index e6356580ea3..c3c0863f6cd 100644
--- a/source/blender/gpu/intern/gpu_context.cc
+++ b/source/blender/gpu/intern/gpu_context.cc
@@ -34,6 +34,8 @@
 #include "GPU_context.h"
 #include "GPU_framebuffer.h"
 
+#include "GHOST_C-api.h"
+
 #include "gpu_batch_private.h"
 #include "gpu_context_private.h"
 #include "gpu_matrix_private.h"
@@ -138,12 +140,18 @@ static void orphans_clear(GPUContext *ctx)
   orphans_mutex.unlock();
 }
 
-GPUContext *GPU_context_create(GLuint default_framebuffer)
+GPUContext *GPU_context_create(void *ghost_window)
 {
   /* BLI_assert(thread_is_main()); */
   GPUContext *ctx = new GPUContext;
   glGenVertexArrays(1, &ctx->default_vao);
-  ctx->default_framebuffer = default_framebuffer;
+  if (ghost_window != NULL) {
+    ctx->default_framebuffer = GHOST_GetDefaultOpenGLFramebuffer((GHOST_WindowHandle)ghost_window);
+  }
+  else {
+    ctx->default_framebuffer = 0;
+  }
+
   ctx->matrix_state = GPU_matrix_state_create();
   GPU_context_active_set(ctx);
   return ctx;
diff --git a/source/blender/windowmanager/intern/wm_playanim.c b/source/blender/windowmanager/intern/wm_playanim.c
index d0a70596957..a0a21fadbbb 100644
--- a/source/blender/windowmanager/intern/wm_playanim.c
+++ b/source/blender/windowmanager/intern/wm_playanim.c
@@ -1293,8 +1293,7 @@ static char *wm_main_playanim_intern(int argc, const char **argv)
   // GHOST_ActivateWindowDrawingContext(g_WS.ghost_window);
 
   /* initialize OpenGL immediate mode */
-  GLuint default_fb = GHOST_GetDefaultOpenGLFramebuffer(g_WS.ghost_window);
-  g_WS.gpu_context = GPU_context_create(default_fb);
+  g_WS.gpu_context = GPU_context_create(g_WS.ghost_window);
   GPU_init();
   immActivate();
 
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index e0dcd746aea..47afa343394 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -615,8 +615,7 @@ static void wm_window_ghostwindow_add(wmWindowManager *wm,
   if (ghostwin) {
     GHOST_RectangleHandle bounds;
 
-    GLuint default_fb = GHOST_GetDefaultOpenGLFramebuffer(ghostwin);
-    win->gpuctx = GPU_context_create(default_fb);
+    win->gpuctx = GPU_context_create(ghostwin);
 
     /* needed so we can detect the graphics card below */
     GPU_init();



More information about the Bf-blender-cvs mailing list