[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