1 // Copyright (c) 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ui/gl/shader_tracking.h" 6 7 #include "base/check.h" 8 #include "ui/gl/gl_switches.h" 9 10 namespace gl { 11 12 // static GetInstance()13ShaderTracking* ShaderTracking::GetInstance() { 14 #if defined(OS_WIN) 15 // Shaders can only be reliably retrieved with ANGLE backend. Therefore, 16 // limit to Windows platform only. 17 static bool enabled = 18 base::FeatureList::IsEnabled(features::kTrackCurrentShaders); 19 if (enabled) { 20 static base::NoDestructor<ShaderTracking> instance; 21 return instance.get(); 22 } 23 #endif // OS_WIN 24 return nullptr; 25 } 26 GetShaders(std::string * shader0,std::string * shader1)27void ShaderTracking::GetShaders(std::string* shader0, std::string* shader1) { 28 DCHECK(shader0 && shader1); 29 base::AutoLock auto_lock(lock_); 30 *shader0 = shaders_[0]; 31 *shader1 = shaders_[1]; 32 } 33 SetShaders(const char * shader0,const char * shader1)34void ShaderTracking::SetShaders(const char* shader0, const char* shader1) { 35 base::AutoLock auto_lock(lock_); 36 shaders_[0] = shader0 ? shader0 : ""; 37 shaders_[1] = shader1 ? shader1 : ""; 38 } 39 40 } // namespace gl 41