Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Unified Diff: chromecast/ui/gl/gl_implementation_cast.cc

Issue 223143003: Initial checkin of chromecast content embedder (cast_shell) and related build scripts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add an additional function in gl_surface_cast.cc Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromecast/ui/gl/gl_implementation_cast.cc
diff --git a/chromecast/ui/gl/gl_implementation_cast.cc b/chromecast/ui/gl/gl_implementation_cast.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7b35e47a861a10b41d70486f4620eb12fdb99269
--- /dev/null
+++ b/chromecast/ui/gl/gl_implementation_cast.cc
@@ -0,0 +1,79 @@
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <vector>
+
+#include "base/memory/ref_counted.h"
+#include "ui/gl/gl_bindings.h"
+#include "ui/gl/gl_context_stub_with_extensions.h"
+#include "ui/gl/gl_gl_api_implementation.h"
+#include "ui/gl/gl_implementation.h"
+
+namespace gfx {
+// We are pushing an implementation even though we do not support any GL on
+// Chromecast, because the caller GetAllowedGLImplementations assumes that this
+// function always adds at least one implementation and would perform an OOB
+// read anyway.
+// At this point, placing None as an implementation is incorrect but, this
+// will force the GPU process to fail its initialization and basically disable
+// all HW rendering which is the end result we are looking for.
+void GetAllowedGLImplementations(std::vector<GLImplementation>* impls) {
+ impls->push_back(kGLImplementationNone);
+}
+
+bool InitializeStaticGLBindings(GLImplementation implementation) {
+ // Prevent reinitialization with a different implementation. Once the gpu
+ // unit tests have initialized with kGLImplementationMock, we don't want to
+ // later switch to another GL implementation.
+ if (GetGLImplementation() != kGLImplementationNone)
+ return true;
+
+ switch (implementation) {
+ case kGLImplementationMockGL: {
+ SetGLImplementation(kGLImplementationMockGL);
+ InitializeStaticGLBindingsGL();
+ break;
+ }
+ default:
+ return false;
+ }
+
+ return true;
+}
+
+bool InitializeDynamicGLBindings(GLImplementation implementation,
+ GLContext* context) {
+ switch (implementation) {
+ case kGLImplementationMockGL:
+ if (!context) {
+ scoped_refptr<GLContextStubWithExtensions> mock_context(
+ new GLContextStubWithExtensions());
+ mock_context->SetGLVersionString("3.0");
+ InitializeDynamicGLBindingsGL(mock_context.get());
+ } else
+ InitializeDynamicGLBindingsGL(context);
+ break;
+ default:
+ return false;
+ }
+
+ return true;
+}
+
+void InitializeDebugGLBindings() {
+ InitializeDebugGLBindingsGL();
+}
+
+void ClearGLBindings() {
+ ClearGLBindingsGL();
+ SetGLImplementation(kGLImplementationNone);
+
+ UnloadGLNativeLibraries();
+}
+
+bool GetGLWindowSystemBindingInfo(GLWindowSystemBindingInfo* info) {
+ return false;
+}
+
+} // namespace gfx

Powered by Google App Engine
This is Rietveld 408576698