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

Side by Side Diff: tools/gpu/gl/iOS/CreatePlatformGLContext_iOS.mm

Issue 1849463002: rename sk_gpu_test::GLContext to sk_gpu_test::GLTestContext (Closed) Base URL: https://chromium.googlesource.com/skia.git@move
Patch Set: readd gpu.gypi Created 4 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1
2 /*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9 #include "GLContext.h"
10 #import <OpenGLES/EAGL.h>
11 #include <dlfcn.h>
12
13 #define EAGLCTX ((EAGLContext*)(fEAGLContext))
14
15 namespace {
16
17 class IOSGLContext : public sk_gpu_test::GLContext {
18 public:
19 IOSGLContext();
20 ~IOSGLContext() override;
21
22 private:
23 void destroyGLContext();
24
25 void onPlatformMakeCurrent() const override;
26 void onPlatformSwapBuffers() const override;
27 GrGLFuncPtr onPlatformGetProcAddress(const char*) const override;
28
29 void* fEAGLContext;
30 void* fGLLibrary;
31 };
32
33 IOSGLContext::IOSGLContext()
34 : fEAGLContext(NULL)
35 , fGLLibrary(RTLD_DEFAULT) {
36
37 fEAGLContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
38 [EAGLContext setCurrentContext:EAGLCTX];
39
40 SkAutoTUnref<const GrGLInterface> gl(GrGLCreateNativeInterface());
41 if (NULL == gl.get()) {
42 SkDebugf("Failed to create gl interface");
43 this->destroyGLContext();
44 return;
45 }
46 if (!gl->validate()) {
47 SkDebugf("Failed to validate gl interface");
48 this->destroyGLContext();
49 return;
50 }
51
52 fGLLibrary = dlopen(
53 "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL. dylib",
54 RTLD_LAZY);
55
56 this->init(gl.release());
57 }
58
59 IOSGLContext::~IOSGLContext() {
60 this->teardown();
61 this->destroyGLContext();
62 }
63
64 void IOSGLContext::destroyGLContext() {
65 if (fEAGLContext) {
66 if ([EAGLContext currentContext] == EAGLCTX) {
67 [EAGLContext setCurrentContext:nil];
68 }
69 [EAGLCTX release];
70 fEAGLContext = NULL;
71 }
72 if (RTLD_DEFAULT != fGLLibrary) {
73 dlclose(fGLLibrary);
74 }
75 }
76
77
78 void IOSGLContext::onPlatformMakeCurrent() const {
79 if (![EAGLContext setCurrentContext:EAGLCTX]) {
80 SkDebugf("Could not set the context.\n");
81 }
82 }
83
84 void IOSGLContext::onPlatformSwapBuffers() const { }
85
86 GrGLFuncPtr IOSGLContext::onPlatformGetProcAddress(const char* procName) const {
87 return reinterpret_cast<GrGLFuncPtr>(dlsym(fGLLibrary, procName));
88 }
89
90 } // anonymous namespace
91
92 namespace sk_gpu_test {
93 GLContext *CreatePlatformGLContext(GrGLStandard forcedGpuAPI, GLContext *shareCo ntext) {
94 SkASSERT(!shareContext);
95 if (shareContext) {
96 return NULL;
97 }
98 if (kGL_GrGLStandard == forcedGpuAPI) {
99 return NULL;
100 }
101 IOSGLContext *ctx = new IOSGLContext;
102 if (!ctx->isValid()) {
103 delete ctx;
104 return NULL;
105 }
106 return ctx;
107 }
108 }
OLDNEW
« no previous file with comments | « tools/gpu/gl/glx/CreatePlatformGLTestContext_glx.cpp ('k') | tools/gpu/gl/iOS/CreatePlatformGLTestContext_iOS.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698