(ref SharedUpdateData sharedData)
| 127 | |
| 128 | /// <inheritdoc /> |
| 129 | public override void Update(ref SharedUpdateData sharedData) |
| 130 | { |
| 131 | _memoryUsageChart.AddSample(sharedData.Stats.MemoryGPU.Used); |
| 132 | |
| 133 | if (_resourceCache == null) |
| 134 | _resourceCache = new Dictionary<Guid, Resource>(); |
| 135 | if (_assetPathToId == null) |
| 136 | _assetPathToId = new Dictionary<string, Guid>(); |
| 137 | if (_stringBuilder == null) |
| 138 | _stringBuilder = new StringBuilder(); |
| 139 | |
| 140 | // Capture current GPU resources usage info |
| 141 | var contentDatabase = Editor.Instance.ContentDatabase; |
| 142 | GPUDevice.Instance.GetResources(ref _gpuResourcesCached, out var count); |
| 143 | var resources = new Resource[count]; |
| 144 | var sb = _stringBuilder; |
| 145 | for (int i = 0; i < count; i++) |
| 146 | { |
| 147 | var gpuResource = _gpuResourcesCached[i]; |
| 148 | ref var resource = ref resources[i]; |
| 149 | if (!gpuResource) |
| 150 | continue; |
| 151 | |
| 152 | // Try to reuse cached resource info |
| 153 | var gpuResourceId = gpuResource.ID; |
| 154 | if (!_resourceCache.TryGetValue(gpuResourceId, out resource)) |
| 155 | { |
| 156 | resource = new Resource |
| 157 | { |
| 158 | #if !BUILD_RELEASE |
| 159 | Name = gpuResource.Name, |
| 160 | #endif |
| 161 | Type = gpuResource.ResourceType, |
| 162 | }; |
| 163 | if (resource.Name == null) |
| 164 | resource.Name = string.Empty; |
| 165 | |
| 166 | // Create tooltip |
| 167 | sb.Clear(); |
| 168 | if (gpuResource is GPUTexture gpuTexture) |
| 169 | { |
| 170 | var desc = gpuTexture.Description; |
| 171 | sb.Append("Format: ").Append(desc.Format).AppendLine(); |
| 172 | sb.Append("Size: ").Append(desc.Width).Append('x').Append(desc.Height); |
| 173 | if (desc.Depth != 1) |
| 174 | sb.Append('x').Append(desc.Depth); |
| 175 | if (desc.ArraySize != 1) |
| 176 | sb.Append('[').Append(desc.ArraySize).Append(']'); |
| 177 | sb.AppendLine(); |
| 178 | sb.Append("Mip Levels: ").Append(desc.MipLevels).AppendLine(); |
| 179 | if (desc.IsMultiSample) |
| 180 | sb.Append("MSAA: ").Append('x').Append((int)desc.MultiSampleLevel).AppendLine(); |
| 181 | sb.Append("Flags: ").Append(desc.Flags).AppendLine(); |
| 182 | sb.Append("Usage: ").Append(desc.Usage); |
| 183 | } |
| 184 | else if (gpuResource is GPUBuffer gpuBuffer) |
| 185 | { |
| 186 | var desc = gpuBuffer.Description; |
nothing calls this directly
no test coverage detected