Index: chrome/browser/chrome_gpu_util.cc |
diff --git a/chrome/browser/chrome_gpu_util.cc b/chrome/browser/chrome_gpu_util.cc |
index c3cd7f5430487d599bf622e06fda70fb6f788882..b4221eca6e88addc629eef7120cd5ce02686f87c 100644 |
--- a/chrome/browser/chrome_gpu_util.cc |
+++ b/chrome/browser/chrome_gpu_util.cc |
@@ -21,6 +21,43 @@ using content::GpuDataManager; |
namespace gpu_util { |
+bool ShouldRunStage3DFieldTrial() { |
+#if !defined(OS_WIN) |
+ return false; |
+#else |
+ if (base::win::GetVersion() >= base::win::VERSION_VISTA) |
+ return false; |
+ return true; |
+#endif |
+} |
+ |
+void InitializeStage3DFieldTrial() { |
+ if (!ShouldRunStage3DFieldTrial()) { |
+ base::FieldTrial* trial = |
+ base::FieldTrialList::Find(content::kStage3DFieldTrialName); |
+ if (trial) |
+ trial->Disable(); |
+ return; |
+ } |
+ |
+ const base::FieldTrial::Probability kDivisor = 1000; |
+ scoped_refptr<base::FieldTrial> trial( |
+ base::FieldTrialList::FactoryGetFieldTrial( |
+ content::kStage3DFieldTrialName, kDivisor, |
+ content::kStage3DFieldTrialEnabledName, 2013, 3, 1, NULL)); |
+ |
+ // Produce the same result on every run of this client. |
+ trial->UseOneTimeRandomization(); |
+ |
+ // Kill-switch, so disabled unless we get info from server. |
+ int blacklisted_group = trial->AppendGroup( |
+ content::kStage3DFieldTrialBlacklistedName, kDivisor); |
+ |
+ bool enabled = (trial->group() != blacklisted_group); |
+ |
+ UMA_HISTOGRAM_BOOLEAN("GPU.Stage3DFieldTrial", enabled); |
+} |
+ |
void DisableCompositingFieldTrial() { |
base::FieldTrial* trial = |
base::FieldTrialList::Find(content::kGpuCompositingFieldTrialName); |