From 0c4e76fb78240ad2ba7855f88cd4ff5477719b7a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 29 Jan 2025 10:23:27 +0100 Subject: [PATCH] Fix #125642: Cycles OptiX background render crash with GPU compositor Apple same workaround for driver issue as was done for grease pencil, the OpenGL context needs to be initialized before OptiX. Pull Request: https://projects.blender.org/blender/blender/pulls/133759 --- source/blender/render/intern/engine.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source/blender/render/intern/engine.cc b/source/blender/render/intern/engine.cc index 89b1bf63262..499ed466198 100644 --- a/source/blender/render/intern/engine.cc +++ b/source/blender/render/intern/engine.cc @@ -849,6 +849,16 @@ bool RE_bake_engine(Render *re, /* Render */ +static bool possibly_using_gpu_compositor(const Render *re) +{ + if (re->r.compositor_device != SCE_COMPOSITOR_DEVICE_GPU) { + return false; + } + + const Scene *scene = re->pipeline_scene_eval; + return (scene->nodetree && scene->use_nodes && (scene->r.scemode & R_DOCOMP)); +} + static void engine_render_view_layer(Render *re, RenderEngine *engine, ViewLayer *view_layer_iter, @@ -873,7 +883,9 @@ static void engine_render_view_layer(Render *re, if (use_gpu_context) { DRW_render_context_enable(engine->re); } - else if (engine->has_grease_pencil && use_grease_pencil && G.background) { + else if (G.background && ((engine->has_grease_pencil && use_grease_pencil) || + possibly_using_gpu_compositor(re))) + { /* Workaround for specific NVidia drivers which crash on Linux when OptiX context is * initialized prior to OpenGL context. This affects driver versions 545.29.06, 550.54.14, * and 550.67 running on kernel 6.8.