[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