[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