From 21acfbe348a433cb6ef5c422b1da232355fa51ab Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 20 Aug 2022 13:36:12 +0200 Subject: Cleanup: move Cycles display driver context handling to render module This is highly coupled to Blender logic so doesn't belong in Cycles. --- source/blender/render/RE_engine.h | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'source/blender/render/RE_engine.h') diff --git a/source/blender/render/RE_engine.h b/source/blender/render/RE_engine.h index b79ae310636..822f07c0dce 100644 --- a/source/blender/render/RE_engine.h +++ b/source/blender/render/RE_engine.h @@ -154,6 +154,11 @@ typedef struct RenderEngine { ThreadMutex update_render_passes_mutex; update_render_passes_cb_t update_render_passes_cb; void *update_render_passes_data; + + /* GPU context. */ + void *gpu_context; + ThreadMutex gpu_context_mutex; + bool use_drw_render_context; } RenderEngine; RenderEngine *RE_engine_create(RenderEngineType *type); @@ -239,11 +244,17 @@ struct RenderEngine *RE_engine_get(const struct Render *re); bool RE_engine_draw_acquire(struct Render *re); void RE_engine_draw_release(struct Render *re); -/* NOTE: Only used for Cycles's BLenderGPUDisplay integration with the draw manager. A subject - * for re-consideration. Do not use this functionality. */ -bool RE_engine_has_render_context(struct RenderEngine *engine); -void RE_engine_render_context_enable(struct RenderEngine *engine); -void RE_engine_render_context_disable(struct RenderEngine *engine); +/* GPU context for engine to create and update GPU resources in its own thread, + * without blocking the main thread. Used by Cycles' display driver to create + * display textures. */ +bool RE_engine_gpu_context_create(struct RenderEngine *engine); +void RE_engine_gpu_context_destroy(struct RenderEngine *engine); + +bool RE_engine_gpu_context_enable(struct RenderEngine *engine); +void RE_engine_gpu_context_disable(struct RenderEngine *engine); + +void RE_engine_gpu_context_lock(struct RenderEngine *engine); +void RE_engine_gpu_context_unlock(struct RenderEngine *engine); /* Engine Types */ -- cgit v1.2.3