Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-08-26 15:19:28 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-08-26 15:48:34 +0300
commitd5b1085aa7ad15caf3dbfcc14290faf6447a770a (patch)
tree69f2a2b5f497aae6a71b324b7320698d495b5b74 /source/blender/draw/intern/draw_manager.cc
parent7efa5647fa05a22bd067893132c2bfc58b4430d0 (diff)
Add Pass::material_set()
Diffstat (limited to 'source/blender/draw/intern/draw_manager.cc')
-rw-r--r--source/blender/draw/intern/draw_manager.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_manager.cc b/source/blender/draw/intern/draw_manager.cc
index 38a37c3f01e..a1b1673ef6e 100644
--- a/source/blender/draw/intern/draw_manager.cc
+++ b/source/blender/draw/intern/draw_manager.cc
@@ -10,12 +10,30 @@
#include "draw_manager.h"
#include "draw_manager.hh"
+#include "draw_pass.hh"
#include "draw_shader.h"
namespace blender::draw {
+Manager::~Manager()
+{
+ for (GPUTexture *texture : acquired_textures) {
+ /* Decrease refcount and free if 0. */
+ GPU_texture_free(texture);
+ }
+}
+
void Manager::begin_sync()
{
+ /* TODO: This means the reference is kept until further redraw or manager teardown. Instead, they
+ * should be released after each draw loop. But for now, mimics old DRW behavior. */
+ for (GPUTexture *texture : acquired_textures) {
+ /* Decrease refcount and free if 0. */
+ GPU_texture_free(texture);
+ }
+
+ acquired_textures.clear();
+
#ifdef DEBUG
/* Detect non-init data. */
memset(matrix_buf.data(), 0xF0, resource_len_ * sizeof(*matrix_buf.data()));