Merge branch 'blender-v4.0-release' into main

This commit is contained in:
Brecht Van Lommel 2023-10-03 16:13:12 +02:00
commit a2da71d3a9
3 changed files with 18 additions and 3 deletions

View File

@ -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;

View File

@ -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

View File

@ -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) {