[Bf-blender-cvs] [6b44e0e71ad] modifier-panels-ui: Fix T74964 Stereo 3D anaglyph and interlace not working

Clément Foucault noreply at git.blender.org
Thu Apr 16 21:30:31 CEST 2020


Commit: 6b44e0e71adb5d137814ac335dcb820f4e19cd48
Author: Clément Foucault
Date:   Thu Apr 16 15:47:18 2020 +0200
Branches: modifier-panels-ui
https://developer.blender.org/rB6b44e0e71adb5d137814ac335dcb820f4e19cd48

Fix T74964 Stereo 3D anaglyph and interlace not working

Caused by framebuffer initialized in the wrong context.

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

M	source/blender/gpu/intern/gpu_viewport.c

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

diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index ad74ce02731..ed825db26ac 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -217,18 +217,6 @@ static void gpu_viewport_framebuffer_view_set(GPUViewport *viewport, int view)
                                     GPU_ATTACHMENT_TEXTURE(dtxl->color_overlay),
                                 });
 
-  if (((viewport->flag & GPU_VIEWPORT_STEREO) != 0)) {
-    GPU_framebuffer_ensure_config(&dfbl->stereo_comp_fb,
-                                  {
-                                      GPU_ATTACHMENT_NONE,
-                                      GPU_ATTACHMENT_TEXTURE(dtxl->color),
-                                      GPU_ATTACHMENT_TEXTURE(dtxl->color_overlay),
-                                  });
-  }
-  else {
-    dfbl->stereo_comp_fb = NULL;
-  }
-
   viewport->active_view = view;
 }
 
@@ -492,9 +480,6 @@ static void gpu_viewport_default_fb_create(GPUViewport *viewport)
   ok = ok && GPU_framebuffer_check_valid(dfbl->color_only_fb, NULL);
   ok = ok && GPU_framebuffer_check_valid(dfbl->depth_only_fb, NULL);
   ok = ok && GPU_framebuffer_check_valid(dfbl->overlay_only_fb, NULL);
-  if (((viewport->flag & GPU_VIEWPORT_STEREO) != 0)) {
-    ok = ok && GPU_framebuffer_check_valid(dfbl->stereo_comp_fb, NULL);
-  }
 cleanup:
   if (!ok) {
     GPU_viewport_free(viewport);
@@ -625,6 +610,14 @@ void GPU_viewport_stereo_composite(GPUViewport *viewport, Stereo3dFormat *stereo
   DefaultTextureList *dtxl = viewport->txl;
   DefaultFramebufferList *dfbl = viewport->fbl;
 
+  /* The composite framebuffer object needs to be created in the window context. */
+  GPU_framebuffer_ensure_config(&dfbl->stereo_comp_fb,
+                                {
+                                    GPU_ATTACHMENT_NONE,
+                                    GPU_ATTACHMENT_TEXTURE(dtxl->color),
+                                    GPU_ATTACHMENT_TEXTURE(dtxl->color_overlay),
+                                });
+
   GPUVertFormat *vert_format = immVertexFormat();
   uint pos = GPU_vertformat_attr_add(vert_format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
   GPU_framebuffer_bind(dfbl->stereo_comp_fb);



More information about the Bf-blender-cvs mailing list