| Index: src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp
|
| diff --git a/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp b/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp
|
| index 585f1d079eb3a4039b6a4fcc11f7c25526d9a035..61eab4bebfc20d1a300bd1f4a2b036983dedf93b 100644
|
| --- a/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp
|
| +++ b/src/gpu/gl/command_buffer/SkCommandBufferGLContext.cpp
|
| @@ -185,46 +185,73 @@ void SkCommandBufferGLContext::initializeGLContext(void* nativeWindow, const int
|
| const int* surfaceAttribs) {
|
| LoadCommandBufferOnce();
|
| if (!gfFunctionsLoadedSuccessfully) {
|
| + SkDebugf("Command Buffer: Could not load EGL functions.\n");
|
| return;
|
| }
|
|
|
| - fDisplay = gfGetDisplay(static_cast<EGLNativeDisplayType>(EGL_DEFAULT_DISPLAY));
|
| + fDisplay = gfGetDisplay(EGL_DEFAULT_DISPLAY);
|
| if (EGL_NO_DISPLAY == fDisplay) {
|
| - SkDebugf("Could not create EGL display!");
|
| + SkDebugf("Command Buffer: Could not create EGL display.\n");
|
| return;
|
| }
|
|
|
| EGLint majorVersion;
|
| EGLint minorVersion;
|
| - gfInitialize(fDisplay, &majorVersion, &minorVersion);
|
| + if (!gfInitialize(fDisplay, &majorVersion, &minorVersion)) {
|
| + SkDebugf("Command Buffer: Could not initialize EGL display.\n");
|
| + this->destroyGLContext();
|
| + return;
|
| + }
|
|
|
| - EGLConfig surfaceConfig = static_cast<EGLConfig>(fConfig);
|
| EGLint numConfigs;
|
| - gfChooseConfig(fDisplay, configAttribs, &surfaceConfig, 1, &numConfigs);
|
| + if (!gfChooseConfig(fDisplay, configAttribs, static_cast<EGLConfig*>(&fConfig), 1,
|
| + &numConfigs) || numConfigs != 1) {
|
| + SkDebugf("Command Buffer: Could not choose EGL config.\n");
|
| + this->destroyGLContext();
|
| + return;
|
| + }
|
|
|
| if (nativeWindow) {
|
| - fSurface = gfCreateWindowSurface(fDisplay, surfaceConfig,
|
| - (EGLNativeWindowType)nativeWindow, surfaceAttribs);
|
| + fSurface = gfCreateWindowSurface(fDisplay,
|
| + static_cast<EGLConfig>(fConfig),
|
| + (EGLNativeWindowType)nativeWindow,
|
| + surfaceAttribs);
|
| } else {
|
| - fSurface = gfCreatePbufferSurface(fDisplay, surfaceConfig, surfaceAttribs);
|
| + fSurface = gfCreatePbufferSurface(fDisplay,
|
| + static_cast<EGLConfig>(fConfig),
|
| + surfaceAttribs);
|
| + }
|
| + if (EGL_NO_SURFACE == fSurface) {
|
| + SkDebugf("Command Buffer: Could not create EGL surface.\n");
|
| + this->destroyGLContext();
|
| + return;
|
| }
|
|
|
| static const EGLint contextAttribs[] = {
|
| EGL_CONTEXT_CLIENT_VERSION, 2,
|
| EGL_NONE
|
| };
|
| - fContext = gfCreateContext(fDisplay, surfaceConfig, nullptr, contextAttribs);
|
| + fContext = gfCreateContext(fDisplay, static_cast<EGLConfig>(fConfig), nullptr, contextAttribs);
|
| + if (EGL_NO_CONTEXT == fContext) {
|
| + SkDebugf("Command Buffer: Could not create EGL context.\n");
|
| + this->destroyGLContext();
|
| + return;
|
| + }
|
|
|
| - gfMakeCurrent(fDisplay, fSurface, fSurface, fContext);
|
| + if (!gfMakeCurrent(fDisplay, fSurface, fSurface, fContext)) {
|
| + SkDebugf("Command Buffer: Could not make EGL context current.\n");
|
| + this->destroyGLContext();
|
| + return;
|
| + }
|
|
|
| SkAutoTUnref<const GrGLInterface> gl(GrGLCreateCommandBufferInterface());
|
| if (nullptr == gl.get()) {
|
| - SkDebugf("Could not create CommandBuffer GL interface!\n");
|
| + SkDebugf("Command Buffer: Could not create CommandBuffer GL interface.\n");
|
| this->destroyGLContext();
|
| return;
|
| }
|
| if (!gl->validate()) {
|
| - SkDebugf("Could not validate CommandBuffer GL interface!\n");
|
| + SkDebugf("Command Buffer: Could not validate CommandBuffer GL interface.\n");
|
| this->destroyGLContext();
|
| return;
|
| }
|
| @@ -264,7 +291,7 @@ void SkCommandBufferGLContext::onPlatformMakeCurrent() const {
|
| return;
|
| }
|
| if (!gfMakeCurrent(fDisplay, fSurface, fSurface, fContext)) {
|
| - SkDebugf("Could not set the context.\n");
|
| + SkDebugf("Command Buffer: Could not make EGL context current.\n");
|
| }
|
| }
|
|
|
| @@ -273,7 +300,7 @@ void SkCommandBufferGLContext::onPlatformSwapBuffers() const {
|
| return;
|
| }
|
| if (!gfSwapBuffers(fDisplay, fSurface)) {
|
| - SkDebugf("Could not complete gfSwapBuffers.\n");
|
| + SkDebugf("Command Buffer: Could not complete gfSwapBuffers.\n");
|
| }
|
| }
|
|
|
| @@ -298,14 +325,12 @@ bool SkCommandBufferGLContext::makeCurrent() {
|
|
|
| int SkCommandBufferGLContext::getStencilBits() {
|
| EGLint result = 0;
|
| - EGLConfig surfaceConfig = static_cast<EGLConfig>(fConfig);
|
| - gfGetConfigAttrib(fDisplay, surfaceConfig, EGL_STENCIL_SIZE, &result);
|
| + gfGetConfigAttrib(fDisplay, static_cast<EGLConfig>(fConfig), EGL_STENCIL_SIZE, &result);
|
| return result;
|
| }
|
|
|
| int SkCommandBufferGLContext::getSampleCount() {
|
| EGLint result = 0;
|
| - EGLConfig surfaceConfig = static_cast<EGLConfig>(fConfig);
|
| - gfGetConfigAttrib(fDisplay, surfaceConfig, EGL_SAMPLES, &result);
|
| + gfGetConfigAttrib(fDisplay, static_cast<EGLConfig>(fConfig), EGL_SAMPLES, &result);
|
| return result;
|
| }
|
|
|