[Bf-blender-cvs] [2cc348294b4] temp-T98375-share-gpu-textures: Create better key.

Jeroen Bakker noreply at git.blender.org
Fri May 27 15:09:13 CEST 2022


Commit: 2cc348294b44d7fbc3bbc11584d2eceec638f217
Author: Jeroen Bakker
Date:   Fri May 27 15:09:05 2022 +0200
Branches: temp-T98375-share-gpu-textures
https://developer.blender.org/rB2cc348294b44d7fbc3bbc11584d2eceec638f217

Create better key.

===================================================================

M	source/blender/blenkernel/intern/image_gpu.cc
M	source/blender/gpu/intern/gpu_init_exit.c

===================================================================

diff --git a/source/blender/blenkernel/intern/image_gpu.cc b/source/blender/blenkernel/intern/image_gpu.cc
index 3e0e0414afa..840b6bb85b3 100644
--- a/source/blender/blenkernel/intern/image_gpu.cc
+++ b/source/blender/blenkernel/intern/image_gpu.cc
@@ -129,10 +129,46 @@ struct ImageGPUTextureStore {
     entries.clear();
   }
 
-  std::string create_key(const Image &image) const
+  std::string create_key(Image &image) const
   {
+    bool add_ptr = false;
+    bool add_filepath = false;
+
+    switch (image.source) {
+      case IMA_SRC_FILE:
+        if (BKE_image_is_dirty(&image)) {
+          add_ptr = true;
+        }
+        else {
+          add_filepath = true;
+        }
+        break;
+      case IMA_SRC_SEQUENCE:
+        add_ptr = true;
+        break;
+      case IMA_SRC_MOVIE:
+        add_ptr = true;
+        break;
+      case IMA_SRC_GENERATED:
+        add_ptr = true;
+        break;
+      case IMA_SRC_VIEWER:
+        add_ptr = true;
+        break;
+      case IMA_SRC_TILED:
+        add_ptr = true;
+        break;
+    }
+
     std::stringstream result;
-    result << "ID:" << image.id.name;
+    if (add_ptr) {
+      result << "PTR:" << &image << ",";
+    }
+    if (add_filepath) {
+      // TODO: use absolute filepath.
+      result << "FILE:" << image.filepath << ",";
+    }
+
     return result.str();
   }
 
diff --git a/source/blender/gpu/intern/gpu_init_exit.c b/source/blender/gpu/intern/gpu_init_exit.c
index e97c9e9c829..c082ff1d959 100644
--- a/source/blender/gpu/intern/gpu_init_exit.c
+++ b/source/blender/gpu/intern/gpu_init_exit.c
@@ -6,7 +6,10 @@
  */
 
 #include "GPU_init_exit.h" /* interface */
+
 #include "BKE_global.h"
+#include "BKE_image.h"
+
 #include "BLI_sys_types.h"
 #include "GPU_batch.h"
 #include "GPU_buffers.h"
@@ -60,6 +63,9 @@ void GPU_exit(void)
   gpu_shader_dependency_exit();
   gpu_shader_create_info_exit();
 
+  /* TODO: Can be considered as a bad call. Perhaps BKE should not own the ImageGPUTextureStore. */
+  BKE_image_free_all_gputextures(NULL);
+
   initialized = false;
 }



More information about the Bf-blender-cvs mailing list