Commit 6f72a6c9 authored by dmurph@chromium.org's avatar dmurph@chromium.org

histograms for gpu program cache


Review URL: https://chromiumcodereview.appspot.com/10837009

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149270 0039d316-1c4b-4281-b951-d872f2087c98
parent c2aad546
...@@ -100,6 +100,7 @@ void MemoryProgramCache::SaveLinkedProgram( ...@@ -100,6 +100,7 @@ void MemoryProgramCache::SaveLinkedProgram(
NULL, NULL,
&format, &format,
binary.get()); binary.get());
UMA_HISTOGRAM_COUNTS("GPU.ProgramCache.ProgramBinarySizeBytes", length);
char a_sha[kHashLength]; char a_sha[kHashLength];
char b_sha[kHashLength]; char b_sha[kHashLength];
...@@ -113,6 +114,9 @@ void MemoryProgramCache::SaveLinkedProgram( ...@@ -113,6 +114,9 @@ void MemoryProgramCache::SaveLinkedProgram(
sha); sha);
const std::string sha_string(sha, sizeof(sha)); const std::string sha_string(sha, sizeof(sha));
UMA_HISTOGRAM_COUNTS("GPU.ProgramCache.MemorySizeBeforeKb",
curr_size_bytes_ / 1024);
if (store_.find(sha_string) != store_.end()) { if (store_.find(sha_string) != store_.end()) {
const StoreMap::iterator found = store_.find(sha_string); const StoreMap::iterator found = store_.find(sha_string);
const ProgramCacheValue* evicting = found->second; const ProgramCacheValue* evicting = found->second;
...@@ -142,6 +146,10 @@ void MemoryProgramCache::SaveLinkedProgram( ...@@ -142,6 +146,10 @@ void MemoryProgramCache::SaveLinkedProgram(
shader_b->uniform_map()); shader_b->uniform_map());
curr_size_bytes_ += length; curr_size_bytes_ += length;
eviction_helper_.KeyUsed(sha_string); eviction_helper_.KeyUsed(sha_string);
UMA_HISTOGRAM_COUNTS("GPU.ProgramCache.MemorySizeAfterKb",
curr_size_bytes_ / 1024);
LinkedProgramCacheSuccess(sha_string, LinkedProgramCacheSuccess(sha_string,
std::string(a_sha, kHashLength), std::string(a_sha, kHashLength),
std::string(b_sha, kHashLength)); std::string(b_sha, kHashLength));
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
#include "base/command_line.h" #include "base/command_line.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "base/metrics/histogram.h"
#include "base/string_number_conversions.h" #include "base/string_number_conversions.h"
#include "base/time.h"
#include "gpu/command_buffer/common/gles2_cmd_format.h" #include "gpu/command_buffer/common/gles2_cmd_format.h"
#include "gpu/command_buffer/common/gles2_cmd_utils.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h"
#include "gpu/command_buffer/service/feature_info.h" #include "gpu/command_buffer/service/feature_info.h"
...@@ -21,6 +23,8 @@ ...@@ -21,6 +23,8 @@
#include "gpu/command_buffer/service/gpu_switches.h" #include "gpu/command_buffer/service/gpu_switches.h"
#include "gpu/command_buffer/service/program_cache.h" #include "gpu/command_buffer/service/program_cache.h"
using base::TimeDelta;
namespace gpu { namespace gpu {
namespace gles2 { namespace gles2 {
...@@ -381,15 +385,26 @@ void ProgramManager::ProgramInfo::ExecuteBindAttribLocationCalls() { ...@@ -381,15 +385,26 @@ void ProgramManager::ProgramInfo::ExecuteBindAttribLocationCalls() {
void ProgramManager::DoCompileShader(ShaderManager::ShaderInfo* info, void ProgramManager::DoCompileShader(ShaderManager::ShaderInfo* info,
ShaderTranslator* translator, ShaderTranslator* translator,
FeatureInfo* feature_info) { FeatureInfo* feature_info) {
base::Time before = base::Time::Now();
if (program_cache_ && if (program_cache_ &&
program_cache_->GetShaderCompilationStatus(info->source() ? program_cache_->GetShaderCompilationStatus(info->source() ?
*info->source() : "") == *info->source() : "") ==
ProgramCache::COMPILATION_SUCCEEDED) { ProgramCache::COMPILATION_SUCCEEDED) {
info->SetStatus(true, "", translator); info->SetStatus(true, "", translator);
info->FlagSourceAsCompiled(false); info->FlagSourceAsCompiled(false);
HISTOGRAM_CUSTOM_COUNTS("GPU.ProgramCache.CompilationCacheHitTime",
(base::Time::Now() - before).InMicroseconds(),
100,
TimeDelta::FromSeconds(1).InMicroseconds(),
50);
return; return;
} }
ForceCompileShader(info->source(), info, translator, feature_info); ForceCompileShader(info->source(), info, translator, feature_info);
HISTOGRAM_CUSTOM_COUNTS("GPU.ProgramCache.CompilationCacheMissTime",
(base::Time::Now() - before).InMicroseconds(),
100,
TimeDelta::FromSeconds(1).InMicroseconds(),
50);
} }
void ProgramManager::ForceCompileShader(const std::string* source, void ProgramManager::ForceCompileShader(const std::string* source,
...@@ -467,6 +482,7 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager, ...@@ -467,6 +482,7 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager,
} }
ExecuteBindAttribLocationCalls(); ExecuteBindAttribLocationCalls();
base::Time before_time = base::Time::Now();
bool link = true; bool link = true;
ProgramCache* cache = manager_->program_cache_; ProgramCache* cache = manager_->program_cache_;
if (cache) { if (cache) {
...@@ -482,6 +498,7 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager, ...@@ -482,6 +498,7 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager,
attached_shaders_[1], attached_shaders_[1],
&bind_attrib_location_map_); &bind_attrib_location_map_);
link = success != ProgramCache::PROGRAM_LOAD_SUCCESS; link = success != ProgramCache::PROGRAM_LOAD_SUCCESS;
UMA_HISTOGRAM_BOOLEAN("GPU.ProgramCache.LoadBinarySuccess", !link);
} }
if (link) { if (link) {
...@@ -506,6 +523,7 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager, ...@@ -506,6 +523,7 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager,
} }
if (link) { if (link) {
before_time = base::Time::Now();
if (cache && gfx::g_GL_ARB_get_program_binary) { if (cache && gfx::g_GL_ARB_get_program_binary) {
glProgramParameteri(service_id(), glProgramParameteri(service_id(),
PROGRAM_BINARY_RETRIEVABLE_HINT, PROGRAM_BINARY_RETRIEVABLE_HINT,
...@@ -523,6 +541,19 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager, ...@@ -523,6 +541,19 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager,
attached_shaders_[0], attached_shaders_[0],
attached_shaders_[1], attached_shaders_[1],
&bind_attrib_location_map_); &bind_attrib_location_map_);
HISTOGRAM_CUSTOM_COUNTS(
"GPU.ProgramCache.BinaryCacheMissTime",
(base::Time::Now() - before_time).InMicroseconds(),
100,
TimeDelta::FromSeconds(1).InMicroseconds(),
50);
} else if (cache) {
HISTOGRAM_CUSTOM_COUNTS(
"GPU.ProgramCache.BinaryCacheHitTime",
(base::Time::Now() - before_time).InMicroseconds(),
100,
TimeDelta::FromSeconds(1).InMicroseconds(),
50);
} }
} else { } else {
UpdateLogInfo(); UpdateLogInfo();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment