diff options
-rw-r--r-- | source/blender/blenkernel/intern/lib_query.c | 9 | ||||
-rw-r--r-- | source/blender/editors/space_node/space_node.c | 3 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_viewport.c | 23 |
3 files changed, 14 insertions, 21 deletions
diff --git a/source/blender/blenkernel/intern/lib_query.c b/source/blender/blenkernel/intern/lib_query.c index 9c0fa33157c..4ffdcf14fa7 100644 --- a/source/blender/blenkernel/intern/lib_query.c +++ b/source/blender/blenkernel/intern/lib_query.c @@ -492,16 +492,17 @@ static void library_foreach_screen_area(LibraryForeachIDData *data, ScrArea *are FOREACH_CALLBACK_INVOKE_ID(data, snode->from, IDWALK_CB_NOP); FOREACH_CALLBACK_INVOKE( - data, snode->nodetree, is_private_nodetree ? IDWALK_CB_EMBEDDED : IDWALK_CB_USER); + data, snode->nodetree, is_private_nodetree ? IDWALK_CB_EMBEDDED : IDWALK_CB_USER_ONE); for (path = snode->treepath.first; path; path = path->next) { if (path == snode->treepath.first) { /* first nodetree in path is same as snode->nodetree */ - FOREACH_CALLBACK_INVOKE( - data, path->nodetree, is_private_nodetree ? IDWALK_CB_EMBEDDED : IDWALK_CB_NOP); + FOREACH_CALLBACK_INVOKE(data, + path->nodetree, + is_private_nodetree ? IDWALK_CB_EMBEDDED : IDWALK_CB_USER_ONE); } else { - FOREACH_CALLBACK_INVOKE(data, path->nodetree, IDWALK_CB_USER); + FOREACH_CALLBACK_INVOKE(data, path->nodetree, IDWALK_CB_USER_ONE); } if (path->nodetree == NULL) { diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index d682cab7293..b6ee393b991 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -890,8 +890,7 @@ static void node_id_remap(ScrArea *UNUSED(area), SpaceLink *slink, ID *old_id, I for (path = snode->treepath.first; path; path = path->next) { if ((ID *)path->nodetree == old_id) { path->nodetree = (bNodeTree *)new_id; - id_us_min(old_id); - id_us_plus(new_id); + id_us_ensure_real(new_id); } if (path == snode->treepath.first) { /* first nodetree in path is same as snode->nodetree */ 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); |