shader_tracking.cc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. #include "ui/gl/shader_tracking.h"
  5. #include "base/check.h"
  6. #include "base/no_destructor.h"
  7. #include "build/build_config.h"
  8. #include "ui/gl/gl_switches.h"
  9. namespace gl {
  10. // static
  11. ShaderTracking* ShaderTracking::GetInstance() {
  12. #if BUILDFLAG(IS_WIN)
  13. // Shaders can only be reliably retrieved with ANGLE backend. Therefore,
  14. // limit to Windows platform only.
  15. static bool enabled =
  16. base::FeatureList::IsEnabled(features::kTrackCurrentShaders);
  17. if (enabled) {
  18. static base::NoDestructor<ShaderTracking> instance;
  19. return instance.get();
  20. }
  21. #endif // BUILDFLAG(IS_WIN)
  22. return nullptr;
  23. }
  24. void ShaderTracking::GetShaders(std::string* shader0, std::string* shader1) {
  25. DCHECK(shader0 && shader1);
  26. base::AutoLock auto_lock(lock_);
  27. *shader0 = shaders_[0];
  28. *shader1 = shaders_[1];
  29. }
  30. void ShaderTracking::SetShaders(const char* shader0, const char* shader1) {
  31. base::AutoLock auto_lock(lock_);
  32. shaders_[0] = shader0 ? shader0 : "";
  33. shaders_[1] = shader1 ? shader1 : "";
  34. }
  35. } // namespace gl