diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-01-29 16:56:16 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-01-30 00:00:15 +0300 |
commit | b6dbd8723c1ba56eb6bfaedf8a06e4f31bdb57c1 (patch) | |
tree | ad88cae002a20f72694773dbb2f1e909c0e88475 /source/blender/render | |
parent | 01a62515cb2be0c7c0b13c2fcd8332509ad6a3df (diff) |
DRW / Render: Add support for render pipeline in drawmanager.
For simplicity we choose to execute the rendering of Opengl engines in the main thread and block the interface.
This might be addressed in the future at least for video rendering.
A drawmanager wrapper (DRW_render_to_image) is called by the render pipeline to set up the Opengl state and then call the specific draw_engine->render_to_image function.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/extern/include/RE_engine.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/external_engine.c | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 60ffd8f42e4..f789ab702fe 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -183,6 +183,8 @@ void RE_engines_init(void); void RE_engines_exit(void); void RE_engines_register(struct Main *bmain, RenderEngineType *render_type); +bool RE_engine_is_opengl(RenderEngineType *render_type); + RenderEngineType *RE_engines_find(const char *idname); rcti* RE_engine_get_current_tiles(struct Render *re, int *r_total_tiles, bool *r_needs_free); diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 68077d4d93b..2714e8b7685 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -155,6 +155,13 @@ bool RE_engine_is_external(Render *re) return (re->engine && re->engine->type && re->engine->type->render_to_image); } +bool RE_engine_is_opengl(RenderEngineType *render_type) +{ + /* TODO refine? Can we have ogl render engine without ogl render pipeline? */ + return (render_type->draw_engine != NULL) && + DRW_engine_render_support(render_type->draw_engine); +} + /* Create, Free */ RenderEngine *RE_engine_create(RenderEngineType *type) |