Refactor: Introduce ViewRender for viewport renders #110244

Merged
Sergey Sharybin merged 8 commits from Sergey/blender:view_render into main 2023-07-19 12:12:18 +02:00
4 changed files with 52 additions and 29 deletions
Showing only changes of commit 3c281d8654 - Show all commits

View File

@ -34,6 +34,7 @@ set(SRC
intern/multires_bake.cc
intern/pipeline.cc
intern/render_result.cc
intern/render_types.cc
intern/texture_image.c
intern/texture_margin.cc
intern/texture_pointdensity.c

View File

@ -555,33 +555,6 @@ void RE_InitRenderCB(Render *re)
void RE_FreeRender(Render *re)
{
if (re->engine) {
RE_engine_free(re->engine);
}
RE_compositor_free(*re);
RE_blender_gpu_context_free(re);
RE_system_gpu_context_free(re);
BLI_rw_mutex_end(&re->resultmutex);
BLI_mutex_end(&re->engine_draw_mutex);
BLI_mutex_end(&re->highlighted_tiles_mutex);
BLI_mutex_end(&re->gpu_compositor_mutex);
BKE_curvemapping_free_data(&re->r.mblur_shutter_curve);
if (re->highlighted_tiles != nullptr) {
BLI_gset_free(re->highlighted_tiles, MEM_freeN);
}
/* main dbase can already be invalid now, some database-free code checks it */
re->main = nullptr;
re->scene = nullptr;
render_result_free(re->result);
render_result_free(re->pushedresult);
RenderGlobal.render_list.remove(re);
MEM_delete(re);

View File

@ -0,0 +1,49 @@
/* SPDX-FileCopyrightText: 2023 Blender Foundation
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup render
*/
#include "render_types.h"
#include "BLI_ghash.h"
#include "BKE_colortools.h"
#include "RE_compositor.hh"
#include "RE_engine.h"
#include "render_result.h"
BaseRender::~BaseRender()
{
if (engine) {
RE_engine_free(engine);
}
render_result_free(result);
BLI_rw_mutex_end(&resultmutex);
BLI_mutex_end(&engine_draw_mutex);
}
Render::~Render()
{
RE_compositor_free(*this);
RE_blender_gpu_context_free(this);
RE_system_gpu_context_free(this);
BLI_mutex_end(&highlighted_tiles_mutex);
BLI_mutex_end(&gpu_compositor_mutex);
BKE_curvemapping_free_data(&r.mblur_shutter_curve);
if (highlighted_tiles != nullptr) {
BLI_gset_free(highlighted_tiles, MEM_freeN);
}
render_result_free(pushedresult);
}

View File

@ -36,7 +36,7 @@ struct HighlightedTile {
struct BaseRender {
BaseRender() = default;
virtual ~BaseRender() = default;
virtual ~BaseRender();
/* Result of rendering */
RenderResult *result = nullptr;
@ -58,7 +58,7 @@ struct Render : public BaseRender {
/* NOTE: Currently unused, provision for the future.
* Add these now to allow the guarded memory allocator to catch C-specific function calls. */
Render() = default;
virtual ~Render() = default;
virtual ~Render();
char name[RE_MAXNAME] = "";
int slot = 0;