[Bf-blender-cvs] [f3fd1c8839b] temp-T98375-share-gpu-textures: Don't share GPUTextures for packed images.

Jeroen Bakker noreply at git.blender.org
Mon May 30 11:00:23 CEST 2022


Commit: f3fd1c8839b20c27322da568424dc4043eb659c6
Author: Jeroen Bakker
Date:   Mon May 30 11:00:17 2022 +0200
Branches: temp-T98375-share-gpu-textures
https://developer.blender.org/rBf3fd1c8839b20c27322da568424dc4043eb659c6

Don't share GPUTextures for packed images.

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

M	source/blender/blenkernel/intern/image_gpu.cc

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

diff --git a/source/blender/blenkernel/intern/image_gpu.cc b/source/blender/blenkernel/intern/image_gpu.cc
index 76e2f50dd77..4daa080d688 100644
--- a/source/blender/blenkernel/intern/image_gpu.cc
+++ b/source/blender/blenkernel/intern/image_gpu.cc
@@ -119,7 +119,6 @@ struct ImageGPUTextureStore {
       entries.remove(it.key);
       entries_removed++;
     }
-    // printf("%s: %d entries removed\n", __func__, entries_removed);
   }
 
   void set_mipmap(const bool mipmap)
@@ -131,10 +130,14 @@ struct ImageGPUTextureStore {
 
   void clear()
   {
-    // printf("%s: %lld entries removed\n", __func__, entries.size());
     entries.clear();
   }
 
+  /**
+   * Create a lookup key for the given image.
+   *
+   * Equal keys will map to the same set of GPUTextures.
+   */
   std::string create_key(Image &image) const
   {
     bool add_ptr = false;
@@ -142,7 +145,7 @@ struct ImageGPUTextureStore {
 
     switch (image.source) {
       case IMA_SRC_FILE:
-        if (BKE_image_is_dirty(&image)) {
+        if (BKE_image_is_dirty(&image) || BKE_image_has_packedfile(&image)) {
           add_ptr = true;
         }
         else {
@@ -171,7 +174,6 @@ struct ImageGPUTextureStore {
       result << "PTR:" << &image << ",";
     }
     if (add_filepath) {
-      // TODO: use absolute filepath.
       char filepath[FILE_MAX];
       BLI_strncpy(filepath, image.filepath, sizeof(filepath));
       BLI_path_abs(filepath, ID_BLEND_PATH_FROM_GLOBAL(&image.id));
@@ -185,7 +187,6 @@ struct ImageGPUTextureStore {
   {
     std::string key = create_key(image);
     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