Merge branch 'blender-v4.0-release' into main
This commit is contained in:
commit
a2da71d3a9
|
@ -31,6 +31,7 @@ struct GPUViewport;
|
|||
struct ID;
|
||||
struct Main;
|
||||
struct Object;
|
||||
struct RegionView3D;
|
||||
struct Render;
|
||||
struct RenderEngine;
|
||||
struct RenderEngineType;
|
||||
|
@ -47,6 +48,8 @@ void DRW_engines_free(void);
|
|||
bool DRW_engine_render_support(struct DrawEngineType *draw_engine_type);
|
||||
void DRW_engine_register(struct DrawEngineType *draw_engine_type);
|
||||
|
||||
void DRW_engine_external_free(struct RegionView3D *rv3d);
|
||||
|
||||
typedef struct DRWUpdateContext {
|
||||
struct Main *bmain;
|
||||
struct Depsgraph *depsgraph;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
* We use it for depth and non-mesh objects.
|
||||
*/
|
||||
|
||||
#include "DRW_engine.h"
|
||||
#include "DRW_render.h"
|
||||
|
||||
#include "DNA_modifier_types.h"
|
||||
|
@ -518,4 +519,16 @@ bool DRW_engine_external_acquire_for_image_editor()
|
|||
return RE_engine_draw_acquire(re);
|
||||
}
|
||||
|
||||
void DRW_engine_external_free(RegionView3D *rv3d)
|
||||
{
|
||||
if (rv3d->view_render) {
|
||||
/* Free engine with DRW context enabled, as this may clean up per-context
|
||||
* resources like VAOs. */
|
||||
DRW_gpu_context_enable_ex(true);
|
||||
RE_FreeViewRender(rv3d->view_render);
|
||||
rv3d->view_render = nullptr;
|
||||
DRW_gpu_context_disable_ex(true);
|
||||
}
|
||||
}
|
||||
|
||||
#undef EXTERNAL_ENGINE
|
||||
|
|
|
@ -230,8 +230,7 @@ void ED_view3d_stop_render_preview(wmWindowManager *wm, ARegion *region)
|
|||
BPy_END_ALLOW_THREADS;
|
||||
#endif
|
||||
|
||||
RE_FreeViewRender(rv3d->view_render);
|
||||
rv3d->view_render = nullptr;
|
||||
DRW_engine_external_free(rv3d);
|
||||
}
|
||||
|
||||
/* A bit overkill but this make sure the viewport is reset completely. (fclem) */
|
||||
|
@ -1105,7 +1104,7 @@ static void view3d_main_region_free(ARegion *region)
|
|||
}
|
||||
|
||||
if (rv3d->view_render) {
|
||||
RE_FreeViewRender(rv3d->view_render);
|
||||
DRW_engine_external_free(rv3d);
|
||||
}
|
||||
|
||||
if (rv3d->sms) {
|
||||
|
|
Loading…
Reference in New Issue