1 // Copyright 2017 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 5 #include "chrome/browser/vr/test/gl_test_environment.h" 6 7 #include "ui/gl/gl_context.h" 8 #include "ui/gl/gl_surface.h" 9 #include "ui/gl/gl_version_info.h" 10 #include "ui/gl/init/gl_factory.h" 11 #include "ui/gl/test/gl_test_helper.h" 12 13 namespace vr { 14 GlTestEnvironment(const gfx::Size frame_buffer_size)15GlTestEnvironment::GlTestEnvironment(const gfx::Size frame_buffer_size) { 16 // Setup offscreen GL context. 17 surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size()); 18 context_ = gl::init::CreateGLContext(nullptr, surface_.get(), 19 gl::GLContextAttribs()); 20 context_->MakeCurrent(surface_.get()); 21 22 if (gl::GLContext::GetCurrent()->GetVersionInfo()->IsAtLeastGL(3, 3)) { 23 // To avoid glGetVertexAttribiv(0, ...) failing. 24 glGenVertexArraysOES(1, &vao_); 25 glBindVertexArrayOES(vao_); 26 } 27 28 frame_buffer_ = gl::GLTestHelper::SetupFramebuffer( 29 frame_buffer_size.width(), frame_buffer_size.height()); 30 glBindFramebufferEXT(GL_FRAMEBUFFER, frame_buffer_); 31 } 32 ~GlTestEnvironment()33GlTestEnvironment::~GlTestEnvironment() { 34 glDeleteFramebuffersEXT(1, &frame_buffer_); 35 if (vao_) { 36 glDeleteVertexArraysOES(1, &vao_); 37 } 38 context_->ReleaseCurrent(surface_.get()); 39 context_ = nullptr; 40 surface_ = nullptr; 41 } 42 GetFrameBufferForTesting()43GLuint GlTestEnvironment::GetFrameBufferForTesting() { 44 return frame_buffer_; 45 } 46 CreateTexture(GLenum target)47GLuint GlTestEnvironment::CreateTexture(GLenum target) { 48 return gl::GLTestHelper::CreateTexture(target); 49 } 50 51 } // namespace vr 52