|
@@ -1389,8 +1389,22 @@ void TextureStorage::texture_debug_usage(List<RS::TextureInfo> *r_info) {
|
|
tinfo.format = t->format;
|
|
tinfo.format = t->format;
|
|
tinfo.width = t->alloc_width;
|
|
tinfo.width = t->alloc_width;
|
|
tinfo.height = t->alloc_height;
|
|
tinfo.height = t->alloc_height;
|
|
- tinfo.depth = t->depth;
|
|
|
|
tinfo.bytes = t->total_data_size;
|
|
tinfo.bytes = t->total_data_size;
|
|
|
|
+
|
|
|
|
+ switch (t->type) {
|
|
|
|
+ case Texture::TYPE_3D:
|
|
|
|
+ tinfo.depth = t->depth;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case Texture::TYPE_LAYERED:
|
|
|
|
+ tinfo.depth = t->layers;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ default:
|
|
|
|
+ tinfo.depth = 0;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
r_info->push_back(tinfo);
|
|
r_info->push_back(tinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1521,7 +1535,11 @@ void TextureStorage::_texture_set_data(RID p_texture, const Ref<Image> &p_image,
|
|
h = MAX(1, h >> 1);
|
|
h = MAX(1, h >> 1);
|
|
}
|
|
}
|
|
|
|
|
|
- texture->total_data_size = tsize;
|
|
|
|
|
|
+ if (texture->target == GL_TEXTURE_CUBE_MAP || texture->target == GL_TEXTURE_2D_ARRAY) {
|
|
|
|
+ texture->total_data_size = tsize * texture->layers;
|
|
|
|
+ } else {
|
|
|
|
+ texture->total_data_size = tsize;
|
|
|
|
+ }
|
|
|
|
|
|
texture->stored_cube_sides |= (1 << p_layer);
|
|
texture->stored_cube_sides |= (1 << p_layer);
|
|
|
|
|