Blender Git Loki

Git Commits -> Revision 148c0aa

Revision 148c0aa by Clément Foucault (master)
April 23, 2019, 18:35 (GMT)
Fix T63178 Eevee animation render crash

If image buffer is not loaded and blender attempts to reload it (during
`BKE_image_acquire_ibuf`) over and over for each frame rendered.
When attempting this reload, image_load_image_file is calling
`BKE_image_free_buffers` and tag the Image to the (GPU) image_free_queue
(because this run on the rendering thread).

If the main thread decide to redraw the UI and go through `GPU_free_unused_buffers` they all get deleted and if that happens before the rendering thread use them ... segfault.

If I replace the environment textures with correct ones (the file does not seems to contain them), there is no crash when rendering.

I used a list of GPUTexture from blender Image to increase and decrease the
reference counter correctly.

This add very little memory and computation overhead.

Commit Details:

Full Hash: 148c0aa0faa66b44ad26f2c4703d59e9a133ff71
Parent Commit: d10205c
Lines Changed: +33, -5

5 Modified Paths:

/source/blender/draw/intern/draw_manager.c (+13, -0) (Diff)
/source/blender/draw/intern/draw_manager_data.c (+5, -1) (Diff)
/source/blender/gpu/GPU_viewport.h (+1, -0) (Diff)
/source/blender/gpu/intern/gpu_draw.c (+5, -4) (Diff)
/source/blender/gpu/intern/gpu_viewport.c (+9, -0) (Diff)
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021