When not running in the main thread, the local shaders workaround would
remove the compiled shader and load it when it was used from the main
thread. During this time the gpu interface could not be used. In the
recent eevee cleanup the gpu interface was needed to bind the resources.
This patch will keep the shader around until the shader is replaced
during drawing. This patch assumes that the binding can still be reused
as the shaders are the same. During test I didn't notice any issues.
In order to test this, apply next diff
diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index 4e4e9c526d0..03dd1956fa9 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -224,7 +224,7 @@ bool GPU_unused_fb_slot_workaround(void) bool GPU_context_local_shaders_workaround(void) { - return GG.context_local_shaders_workaround; + return true; // GG.context_local_shaders_workaround; } bool GPU_texture_copy_workaround(void)