[Bf-blender-cvs] [6537660464d] temp-workspace-changes: Use workspace -> engine in the viewport
Dalai Felinto
noreply at git.blender.org
Fri Sep 8 23:55:10 CEST 2017
Commit: 6537660464d73a87423262e90dc6b926e61a12f9
Author: Dalai Felinto
Date: Fri Sep 8 22:59:43 2017 +0200
Branches: temp-workspace-changes
https://developer.blender.org/rB6537660464d73a87423262e90dc6b926e61a12f9
Use workspace -> engine in the viewport
Not yet for OpenGL render.
===================================================================
M source/blender/draw/DRW_engine.h
M source/blender/draw/intern/draw_manager.c
===================================================================
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index b780e86b9ec..190c5c0f8f6 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -42,6 +42,7 @@ struct ViewportEngineData;
struct View3D;
struct rcti;
struct GPUOffScreen;
+struct WorkSpace;
#include "BLI_sys_types.h" /* for bool */
@@ -66,6 +67,7 @@ void DRW_engine_viewport_data_size_get(
void DRW_draw_view(const struct bContext *C);
void DRW_draw_render_loop_ex(
+ struct WorkSpace *workspace,
struct Depsgraph *graph,
struct ARegion *ar, struct View3D *v3d,
const struct bContext *evil_C);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 601ea35f8c1..f117d0c0af9 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -2866,10 +2866,10 @@ static void use_drw_engine(DrawEngineType *engine)
/* TODO revisit this when proper layering is implemented */
/* Gather all draw engines needed and store them in DST.enabled_engines
* That also define the rendering order of engines */
-static void DRW_engines_enable_from_engine(const Scene *scene)
+static void DRW_engines_enable_from_engine(const char *engine)
{
/* TODO layers */
- RenderEngineType *type = RE_engines_find(scene->r.engine);
+ RenderEngineType *type = RE_engines_find(engine);
if (type->draw_engine != NULL) {
use_drw_engine(type->draw_engine);
}
@@ -2951,11 +2951,13 @@ static void DRW_engines_enable_external(void)
use_drw_engine(DRW_engine_viewport_external_type.draw_engine);
}
-static void DRW_engines_enable(const Scene *scene, SceneLayer *sl)
+static void DRW_engines_enable(const Scene *scene, const WorkSpace *workspace, SceneLayer *sl)
{
Object *obact = OBACT_NEW(sl);
const int mode = CTX_data_mode_enum_ex(scene->obedit, obact);
- DRW_engines_enable_from_engine(scene);
+ const char *engine = BKE_render_engine_get(scene, workspace);
+
+ DRW_engines_enable_from_engine(engine);
if (DRW_state_draw_support()) {
DRW_engines_enable_from_object_mode();
@@ -3113,13 +3115,14 @@ static void DRW_debug_gpu_stats(void)
* for each relevant engine / mode engine. */
void DRW_draw_view(const bContext *C)
{
+ WorkSpace *workspace = CTX_wm_workspace(C);
struct Depsgraph *graph = CTX_data_depsgraph(C);
ARegion *ar = CTX_wm_region(C);
View3D *v3d = CTX_wm_view3d(C);
/* Reset before using it. */
memset(&DST, 0x0, sizeof(DST));
- DRW_draw_render_loop_ex(graph, ar, v3d, C);
+ DRW_draw_render_loop_ex(workspace, graph, ar, v3d, C);
}
/**
@@ -3127,6 +3130,7 @@ void DRW_draw_view(const bContext *C)
* Need to reset DST before calling this function
*/
void DRW_draw_render_loop_ex(
+ struct WorkSpace *workspace,
struct Depsgraph *graph,
ARegion *ar, View3D *v3d,
const bContext *evil_C)
@@ -3153,7 +3157,7 @@ void DRW_draw_render_loop_ex(
DRW_viewport_var_init();
/* Get list of enabled engines */
- DRW_engines_enable(scene, sl);
+ DRW_engines_enable(scene, workspace, sl);
/* Update ubos */
DRW_globals_update();
@@ -3233,7 +3237,7 @@ void DRW_draw_render_loop(
{
/* Reset before using it. */
memset(&DST, 0x0, sizeof(DST));
- DRW_draw_render_loop_ex(graph, ar, v3d, NULL);
+ DRW_draw_render_loop_ex(NULL, graph, ar, v3d, NULL);
}
void DRW_draw_render_loop_offscreen(
@@ -3252,7 +3256,7 @@ void DRW_draw_render_loop_offscreen(
/* Reset before using it. */
memset(&DST, 0x0, sizeof(DST));
DST.options.is_image_render = true;
- DRW_draw_render_loop_ex(graph, ar, v3d, NULL);
+ DRW_draw_render_loop_ex(NULL, graph, ar, v3d, NULL);
/* restore */
{
More information about the Bf-blender-cvs
mailing list