Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/intern/draw_manager.c
| Show First 20 Lines • Show All 1,720 Lines • ▼ Show 20 Lines | |||||
| void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) | void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) | ||||
| { | { | ||||
| Scene *scene = DEG_get_evaluated_scene(depsgraph); | Scene *scene = DEG_get_evaluated_scene(depsgraph); | ||||
| ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph); | ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph); | ||||
| RenderEngineType *engine_type = engine->type; | RenderEngineType *engine_type = engine->type; | ||||
| DrawEngineType *draw_engine_type = engine_type->draw_engine; | DrawEngineType *draw_engine_type = engine_type->draw_engine; | ||||
| Render *render = engine->re; | Render *render = engine->re; | ||||
| /* IMPORTANT: We don't support immediate mode in render mode! | /* IMPORTANT: We don't support immediate mode in render mode! | ||||
jbakker: HD4000 Series | |||||
| * This shall remain in effect until immediate mode supports | * This shall remain in effect until immediate mode supports | ||||
| * multiple threads. */ | * multiple threads. */ | ||||
Done Inline Actionsthese devices are officially supported jbakker: these devices are officially supported | |||||
| /* Reset before using it. */ | /* Reset before using it. */ | ||||
| drw_state_prepare_clean_for_draw(&DST); | drw_state_prepare_clean_for_draw(&DST); | ||||
| DST.options.is_image_render = true; | DST.options.is_image_render = true; | ||||
| DST.options.is_scene_render = true; | DST.options.is_scene_render = true; | ||||
| DST.options.draw_background = scene->r.alphamode == R_ADDSKY; | DST.options.draw_background = scene->r.alphamode == R_ADDSKY; | ||||
| DST.draw_ctx = (DRWContextState){ | DST.draw_ctx = (DRWContextState){ | ||||
| .scene = scene, | .scene = scene, | ||||
| .view_layer = view_layer, | .view_layer = view_layer, | ||||
| ▲ Show 20 Lines • Show All 973 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| void DRW_render_context_enable(Render *render) | void DRW_render_context_enable(Render *render) | ||||
| { | { | ||||
| if (G.background && DST.gl_context == NULL) { | if (G.background && DST.gl_context == NULL) { | ||||
| WM_init_opengl(G_MAIN); | WM_init_opengl(G_MAIN); | ||||
| } | } | ||||
| if (GPU_use_main_context_workaround()) { | |||||
| GPU_context_main_lock(); | |||||
| DRW_opengl_context_enable(); | |||||
| return; | |||||
| } | |||||
| void *re_gl_context = RE_gl_context_get(render); | void *re_gl_context = RE_gl_context_get(render); | ||||
| /* Changing Context */ | /* Changing Context */ | ||||
| if (re_gl_context != NULL) { | if (re_gl_context != NULL) { | ||||
| DRW_opengl_render_context_enable(re_gl_context); | DRW_opengl_render_context_enable(re_gl_context); | ||||
| /* We need to query gpu context after a gl context has been bound. */ | /* We need to query gpu context after a gl context has been bound. */ | ||||
| void *re_gpu_context = NULL; | void *re_gpu_context = NULL; | ||||
| re_gpu_context = RE_gpu_context_get(render); | re_gpu_context = RE_gpu_context_get(render); | ||||
| DRW_gpu_render_context_enable(re_gpu_context); | DRW_gpu_render_context_enable(re_gpu_context); | ||||
| } | } | ||||
| else { | else { | ||||
| DRW_opengl_context_enable(); | DRW_opengl_context_enable(); | ||||
| } | } | ||||
| } | } | ||||
| void DRW_render_context_disable(Render *render) | void DRW_render_context_disable(Render *render) | ||||
| { | { | ||||
| if (GPU_use_main_context_workaround()) { | |||||
| DRW_opengl_context_disable(); | |||||
| GPU_context_main_unlock(); | |||||
| return; | |||||
| } | |||||
| void *re_gl_context = RE_gl_context_get(render); | void *re_gl_context = RE_gl_context_get(render); | ||||
| if (re_gl_context != NULL) { | if (re_gl_context != NULL) { | ||||
| void *re_gpu_context = NULL; | void *re_gpu_context = NULL; | ||||
| re_gpu_context = RE_gpu_context_get(render); | re_gpu_context = RE_gpu_context_get(render); | ||||
| DRW_gpu_render_context_disable(re_gpu_context); | DRW_gpu_render_context_disable(re_gpu_context); | ||||
| DRW_opengl_render_context_disable(re_gl_context); | DRW_opengl_render_context_disable(re_gl_context); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 172 Lines • Show Last 20 Lines | |||||
HD4000 Series