gl_display_egl_util.cc 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2020 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/gl_display_egl_util.h"
  5. #include "base/no_destructor.h"
  6. #include "base/scoped_environment_variable_override.h"
  7. #include "third_party/abseil-cpp/absl/types/optional.h"
  8. namespace gl {
  9. namespace {
  10. static GLDisplayEglUtil* g_instance = nullptr;
  11. class GLDisplayEglUtilStub : public GLDisplayEglUtil {
  12. public:
  13. static GLDisplayEglUtilStub* GetInstance() {
  14. static base::NoDestructor<GLDisplayEglUtilStub> instance;
  15. return instance.get();
  16. }
  17. void GetPlatformExtraDisplayAttribs(
  18. EGLenum platform_type,
  19. std::vector<EGLAttrib>* attributes) override {}
  20. void ChoosePlatformCustomAlphaAndBufferSize(EGLint* alpha_size,
  21. EGLint* buffer_size) override {}
  22. absl::optional<base::ScopedEnvironmentVariableOverride>
  23. MaybeGetScopedDisplayUnsetForVulkan() override {
  24. return absl::nullopt;
  25. }
  26. private:
  27. friend base::NoDestructor<GLDisplayEglUtilStub>;
  28. GLDisplayEglUtilStub() = default;
  29. ~GLDisplayEglUtilStub() override = default;
  30. GLDisplayEglUtilStub(const GLDisplayEglUtilStub& util) = delete;
  31. GLDisplayEglUtilStub& operator=(const GLDisplayEglUtilStub& util) = delete;
  32. };
  33. } // namespace
  34. // static
  35. GLDisplayEglUtil* GLDisplayEglUtil::GetInstance() {
  36. // If a platform specific impl is not set, create a stub instance.
  37. if (!g_instance)
  38. SetInstance(GLDisplayEglUtilStub::GetInstance());
  39. return g_instance;
  40. }
  41. // static
  42. void GLDisplayEglUtil::SetInstance(GLDisplayEglUtil* gl_display_util) {
  43. g_instance = gl_display_util;
  44. }
  45. } // namespace gl