[Bf-blender-cvs] [a8db4c25911] temp-T98375-share-gpu-textures: Use absolute and resolved path.
Jeroen Bakker
noreply at git.blender.org
Fri May 27 15:59:40 CEST 2022
Commit: a8db4c25911369425cdd47f19f3efa20135b0d7b
Author: Jeroen Bakker
Date: Fri May 27 15:59:26 2022 +0200
Branches: temp-T98375-share-gpu-textures
https://developer.blender.org/rBa8db4c25911369425cdd47f19f3efa20135b0d7b
Use absolute and resolved path.
===================================================================
M source/blender/blenkernel/intern/image.cc
M source/blender/blenkernel/intern/image_gpu.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/image.cc b/source/blender/blenkernel/intern/image.cc
index bf00eb7ab7a..d01c9300671 100644
--- a/source/blender/blenkernel/intern/image.cc
+++ b/source/blender/blenkernel/intern/image.cc
@@ -228,27 +228,6 @@ static void image_foreach_cache(ID *id,
key.offset_in_ID = offsetof(Image, cache);
function_callback(id, &key, (void **)&image->cache, 0, user_data);
-#if 0
- auto gputexture_offset = [image](int target, int eye) {
- constexpr size_t base_offset = offsetof(Image, gputexture);
- struct GPUTexture **first = &image->gputexture[0][0];
- const size_t array_offset = sizeof(*first) * (&image->gputexture[target][eye] - first);
- return base_offset + array_offset;
- };
-
-// TODO(jbakker): need to check how this is actually used not the GPU textures are shared we might need to reinvalidate this.
- for (int eye = 0; eye < 2; eye++) {
- for (int a = 0; a < TEXTARGET_COUNT; a++) {
- GPUTexture *texture = image->gputexture[a][eye];
- if (texture == nullptr) {
- continue;
- }
- key.offset_in_ID = gputexture_offset(a, eye);
- function_callback(id, &key, (void **)&image->gputexture[a][eye], 0, user_data);
- }
- }
-#endif
-
key.offset_in_ID = offsetof(Image, rr);
function_callback(id, &key, (void **)&image->rr, 0, user_data);
diff --git a/source/blender/blenkernel/intern/image_gpu.cc b/source/blender/blenkernel/intern/image_gpu.cc
index 840b6bb85b3..76e2f50dd77 100644
--- a/source/blender/blenkernel/intern/image_gpu.cc
+++ b/source/blender/blenkernel/intern/image_gpu.cc
@@ -12,10 +12,12 @@
#include "BLI_linklist.h"
#include "BLI_listbase.h"
#include "BLI_map.hh"
+#include "BLI_path_util.h"
#include "BLI_threads.h"
#include "BLI_utility_mixins.hh"
#include "DNA_image_types.h"
+#include "DNA_space_types.h"
#include "DNA_userdef_types.h"
#include "IMB_colormanagement.h"
@@ -109,12 +111,15 @@ struct ImageGPUTextureStore {
void remove_unused()
{
+ int entries_removed = 0;
for (auto it : entries.items()) {
if (it.value.flags.in_use) {
continue;
}
entries.remove(it.key);
+ entries_removed++;
}
+ // printf("%s: %d entries removed\n", __func__, entries_removed);
}
void set_mipmap(const bool mipmap)
@@ -126,6 +131,7 @@ struct ImageGPUTextureStore {
void clear()
{
+ // printf("%s: %lld entries removed\n", __func__, entries.size());
entries.clear();
}
@@ -166,7 +172,10 @@ struct ImageGPUTextureStore {
}
if (add_filepath) {
// TODO: use absolute filepath.
- result << "FILE:" << image.filepath << ",";
+ char filepath[FILE_MAX];
+ BLI_strncpy(filepath, image.filepath, sizeof(filepath));
+ BLI_path_abs(filepath, ID_BLEND_PATH_FROM_GLOBAL(&image.id));
+ result << "FILE:" << filepath << ",";
}
return result.str();
@@ -175,7 +184,10 @@ struct ImageGPUTextureStore {
Entry &operator[](Image &image)
{
std::string key = create_key(image);
- return entries.lookup_or_add_default(key);
+ Entry &entry = entries.lookup_or_add_default(key);
+ // printf("%s: %s => key %s = entry<%p>\n", __func__, image.id.name, key.c_str(), &entry);
+ entry.tag_used();
+ return entry;
}
};
More information about the Bf-blender-cvs
mailing list