1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2017 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 9*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrDirectContext.h" 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLFunctions.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLInterface.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "tools/gpu/gl/GLTestContext.h" 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker #include <EGL/egl.h> 15*c8dee2aaSAndroid Build Coastguard Worker #include <GLES2/gl2.h> 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker #include <sstream> 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker // create_direct_context implementation for EGL. create_direct_context(std::ostringstream & driverinfo,std::unique_ptr<sk_gpu_test::GLTestContext> * glContext)20*c8dee2aaSAndroid Build Coastguard Workersk_sp<GrDirectContext> create_direct_context( 21*c8dee2aaSAndroid Build Coastguard Worker std::ostringstream& driverinfo, 22*c8dee2aaSAndroid Build Coastguard Worker std::unique_ptr<sk_gpu_test::GLTestContext>* glContext) { 23*c8dee2aaSAndroid Build Coastguard Worker glContext->reset(sk_gpu_test::CreatePlatformGLTestContext(kGLES_GrGLStandard)); 24*c8dee2aaSAndroid Build Coastguard Worker if (!glContext) { 25*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 26*c8dee2aaSAndroid Build Coastguard Worker } 27*c8dee2aaSAndroid Build Coastguard Worker (*glContext)->makeCurrent(); 28*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrDirectContext> result = (*glContext)->makeContext(GrContextOptions()); 29*c8dee2aaSAndroid Build Coastguard Worker if (!result) { 30*c8dee2aaSAndroid Build Coastguard Worker glContext->reset(); 31*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 32*c8dee2aaSAndroid Build Coastguard Worker } 33*c8dee2aaSAndroid Build Coastguard Worker 34*c8dee2aaSAndroid Build Coastguard Worker driverinfo << "GL Version: " << glGetString(GL_VERSION) << "\n"; 35*c8dee2aaSAndroid Build Coastguard Worker driverinfo << "GL Vendor: " << glGetString(GL_VENDOR) << "\n"; 36*c8dee2aaSAndroid Build Coastguard Worker driverinfo << "GL Renderer: " << glGetString(GL_RENDERER) << "\n"; 37*c8dee2aaSAndroid Build Coastguard Worker driverinfo << "GL Extensions: " << glGetString(GL_EXTENSIONS) << "\n"; 38*c8dee2aaSAndroid Build Coastguard Worker 39*c8dee2aaSAndroid Build Coastguard Worker return result; 40*c8dee2aaSAndroid Build Coastguard Worker } 41