[D3D12] Display texture cache size in the profiler
This commit is contained in:
parent
d8fccb2fa0
commit
7049d52dbb
|
@ -683,6 +683,8 @@ void TextureCache::ClearCache() {
|
||||||
}
|
}
|
||||||
textures_.clear();
|
textures_.clear();
|
||||||
COUNT_profile_set("gpu/texture_cache/textures", 0);
|
COUNT_profile_set("gpu/texture_cache/textures", 0);
|
||||||
|
textures_total_size_ = 0;
|
||||||
|
COUNT_profile_set("gpu/texture_cache/total_size_kb", 0);
|
||||||
|
|
||||||
// Clear texture descriptor cache.
|
// Clear texture descriptor cache.
|
||||||
for (auto& page : srv_descriptor_cache_) {
|
for (auto& page : srv_descriptor_cache_) {
|
||||||
|
@ -1748,6 +1750,8 @@ TextureCache::Texture* TextureCache::FindOrCreateTexture(TextureKey key) {
|
||||||
Texture* texture = new Texture;
|
Texture* texture = new Texture;
|
||||||
texture->key = key;
|
texture->key = key;
|
||||||
texture->resource = resource;
|
texture->resource = resource;
|
||||||
|
texture->resource_size =
|
||||||
|
device->GetResourceAllocationInfo(0, 1, &desc).SizeInBytes;
|
||||||
texture->state = state;
|
texture->state = state;
|
||||||
texture->mip_offsets[0] = 0;
|
texture->mip_offsets[0] = 0;
|
||||||
uint32_t width_blocks, height_blocks, depth_blocks;
|
uint32_t width_blocks, height_blocks, depth_blocks;
|
||||||
|
@ -1812,6 +1816,9 @@ TextureCache::Texture* TextureCache::FindOrCreateTexture(TextureKey key) {
|
||||||
texture->cached_srv_descriptor_swizzle = 0b100100100100;
|
texture->cached_srv_descriptor_swizzle = 0b100100100100;
|
||||||
textures_.insert(std::make_pair(map_key, texture));
|
textures_.insert(std::make_pair(map_key, texture));
|
||||||
COUNT_profile_set("gpu/texture_cache/textures", textures_.size());
|
COUNT_profile_set("gpu/texture_cache/textures", textures_.size());
|
||||||
|
textures_total_size_ += texture->resource_size;
|
||||||
|
COUNT_profile_set("gpu/texture_cache/total_size_kb",
|
||||||
|
uint32_t(textures_total_size_ >> 10));
|
||||||
LogTextureAction(texture, "Created");
|
LogTextureAction(texture, "Created");
|
||||||
|
|
||||||
return texture;
|
return texture;
|
||||||
|
|
|
@ -341,6 +341,7 @@ class TextureCache {
|
||||||
struct Texture {
|
struct Texture {
|
||||||
TextureKey key;
|
TextureKey key;
|
||||||
ID3D12Resource* resource;
|
ID3D12Resource* resource;
|
||||||
|
uint64_t resource_size;
|
||||||
D3D12_RESOURCE_STATES state;
|
D3D12_RESOURCE_STATES state;
|
||||||
|
|
||||||
// Byte size of the top guest mip level.
|
// Byte size of the top guest mip level.
|
||||||
|
@ -542,6 +543,7 @@ class TextureCache {
|
||||||
resolve_tile_pipelines_[size_t(ResolveTileMode::kCount)] = {};
|
resolve_tile_pipelines_[size_t(ResolveTileMode::kCount)] = {};
|
||||||
|
|
||||||
std::unordered_multimap<uint64_t, Texture*> textures_;
|
std::unordered_multimap<uint64_t, Texture*> textures_;
|
||||||
|
uint64_t textures_total_size_ = 0;
|
||||||
|
|
||||||
std::vector<SRVDescriptorCachePage> srv_descriptor_cache_;
|
std::vector<SRVDescriptorCachePage> srv_descriptor_cache_;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue