diff options
author | Derek Sollenberger <djsollen@google.com> | 2018-03-29 13:40:02 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-03-29 18:08:15 +0000 |
commit | cf6da8c0f29877249a55949efd8b952b5b9bc01d (patch) | |
tree | 9f4bcd3033dd85d378da916e7f45ab583524c595 /src/gpu/GrGpuResource.cpp | |
parent | 9c6f6a52764281f6c61c2daf21f4737df5df53c7 (diff) |
Dump additional details about the gpu resources.
GpuResources now dump optional string values that describe the type and
category of the resource. The type provides a description of the kind
of resource it is (e.g. texture, buffer object, stencil, etc.) and the
category describes what the resource is currently tasked to do (e.g.
path masks, images, scratch, etc.)
This CL also refactors the dump logic in an attempt to consolidate
duplicated code into GrGpuResources.cpp.
Bug: b/74435803
Change-Id: I83cae825f41e6450a21398ab3ecea349c7c61c15
Reviewed-on: https://skia-review.googlesource.com/115989
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/GrGpuResource.cpp')
-rw-r--r-- | src/gpu/GrGpuResource.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/gpu/GrGpuResource.cpp b/src/gpu/GrGpuResource.cpp index d90498d6f4..ec7113562b 100644 --- a/src/gpu/GrGpuResource.cpp +++ b/src/gpu/GrGpuResource.cpp @@ -73,20 +73,33 @@ void GrGpuResource::dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) con return; } - // Dump resource as "skia/gpu_resources/resource_#". - SkString dumpName("skia/gpu_resources/resource_"); - dumpName.appendU32(this->uniqueID().asUInt()); + this->dumpMemoryStatisticsPriv(traceMemoryDump, this->getResourceName(), + this->getResourceType(), this->gpuMemorySize()); +} - traceMemoryDump->dumpNumericValue(dumpName.c_str(), "size", "bytes", this->gpuMemorySize()); +void GrGpuResource::dumpMemoryStatisticsPriv(SkTraceMemoryDump* traceMemoryDump, + const SkString& resourceName, + const char* type, size_t size) const { + const char* tag = "Scratch"; + if (fUniqueKey.isValid()) { + tag = (fUniqueKey.tag() != nullptr) ? fUniqueKey.tag() : "Other"; + } + traceMemoryDump->dumpNumericValue(resourceName.c_str(), "size", "bytes", size); + traceMemoryDump->dumpStringValue(resourceName.c_str(), "type", type); + traceMemoryDump->dumpStringValue(resourceName.c_str(), "category", tag); if (this->isPurgeable()) { - traceMemoryDump->dumpNumericValue(dumpName.c_str(), "purgeable_size", "bytes", - this->gpuMemorySize()); + traceMemoryDump->dumpNumericValue(resourceName.c_str(), "purgeable_size", "bytes", size); } - // Call setMemoryBacking to allow sub-classes with implementation specific backings (such as GL - // objects) to provide additional information. - this->setMemoryBacking(traceMemoryDump, dumpName); + this->setMemoryBacking(traceMemoryDump, resourceName); +} + +SkString GrGpuResource::getResourceName() const { + // Dump resource as "skia/gpu_resources/resource_#". + SkString resourceName("skia/gpu_resources/resource_"); + resourceName.appendU32(this->uniqueID().asUInt()); + return resourceName; } const GrContext* GrGpuResource::getContext() const { |