| Index: cc/program_binding.cc
|
| diff --git a/cc/program_binding.cc b/cc/program_binding.cc
|
| deleted file mode 100644
|
| index 08960f0aa8f9c2ce673e2e84d1923742aed590b1..0000000000000000000000000000000000000000
|
| --- a/cc/program_binding.cc
|
| +++ /dev/null
|
| @@ -1,145 +0,0 @@
|
| -// Copyright 2011 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 "cc/program_binding.h"
|
| -
|
| -#include "base/debug/trace_event.h"
|
| -#include "cc/geometry_binding.h"
|
| -#include "cc/gl_renderer.h" // For the GLC() macro.
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebGraphicsContext3D.h"
|
| -#include "third_party/khronos/GLES2/gl2.h"
|
| -
|
| -using WebKit::WebGraphicsContext3D;
|
| -
|
| -namespace cc {
|
| -
|
| -ProgramBindingBase::ProgramBindingBase()
|
| - : program_(0),
|
| - vertex_shader_id_(0),
|
| - fragment_shader_id_(0),
|
| - initialized_(false) {}
|
| -
|
| -ProgramBindingBase::~ProgramBindingBase() {
|
| - // If you hit these asserts, you initialized but forgot to call Cleanup().
|
| - DCHECK(!program_);
|
| - DCHECK(!vertex_shader_id_);
|
| - DCHECK(!fragment_shader_id_);
|
| - DCHECK(!initialized_);
|
| -}
|
| -
|
| -void ProgramBindingBase::Init(WebGraphicsContext3D* context,
|
| - const std::string& vertex_shader,
|
| - const std::string& fragment_shader) {
|
| - TRACE_EVENT0("cc", "ProgramBindingBase::init");
|
| - vertex_shader_id_ = LoadShader(context, GL_VERTEX_SHADER, vertex_shader);
|
| - if (!vertex_shader_id_) {
|
| - if (!IsContextLost(context))
|
| - LOG(ERROR) << "Failed to create vertex shader";
|
| - return;
|
| - }
|
| -
|
| - fragment_shader_id_ =
|
| - LoadShader(context, GL_FRAGMENT_SHADER, fragment_shader);
|
| - if (!fragment_shader_id_) {
|
| - GLC(context, context->deleteShader(vertex_shader_id_));
|
| - vertex_shader_id_ = 0;
|
| - if (!IsContextLost(context))
|
| - LOG(ERROR) << "Failed to create fragment shader";
|
| - return;
|
| - }
|
| -
|
| - program_ =
|
| - CreateShaderProgram(context, vertex_shader_id_, fragment_shader_id_);
|
| - DCHECK(program_ || IsContextLost(context));
|
| -}
|
| -
|
| -void ProgramBindingBase::Link(WebGraphicsContext3D* context) {
|
| - GLC(context, context->linkProgram(program_));
|
| - CleanupShaders(context);
|
| - if (!program_)
|
| - return;
|
| -#ifndef NDEBUG
|
| - int linked = 0;
|
| - GLC(context, context->getProgramiv(program_, GL_LINK_STATUS, &linked));
|
| - if (!linked) {
|
| - if (!IsContextLost(context))
|
| - LOG(ERROR) << "Failed to link shader program";
|
| - GLC(context, context->deleteProgram(program_));
|
| - }
|
| -#endif
|
| -}
|
| -
|
| -void ProgramBindingBase::Cleanup(WebGraphicsContext3D* context) {
|
| - initialized_ = false;
|
| - if (!program_)
|
| - return;
|
| -
|
| - DCHECK(context);
|
| - GLC(context, context->deleteProgram(program_));
|
| - program_ = 0;
|
| -
|
| - CleanupShaders(context);
|
| -}
|
| -
|
| -unsigned ProgramBindingBase::LoadShader(WebGraphicsContext3D* context,
|
| - unsigned type,
|
| - const std::string& shader_source) {
|
| - unsigned shader = context->createShader(type);
|
| - if (!shader)
|
| - return 0;
|
| - GLC(context, context->shaderSource(shader, shader_source.data()));
|
| - GLC(context, context->compileShader(shader));
|
| -#ifndef NDEBUG
|
| - int compiled = 0;
|
| - GLC(context, context->getShaderiv(shader, GL_COMPILE_STATUS, &compiled));
|
| - if (!compiled) {
|
| - GLC(context, context->deleteShader(shader));
|
| - return 0;
|
| - }
|
| -#endif
|
| - return shader;
|
| -}
|
| -
|
| -unsigned ProgramBindingBase::CreateShaderProgram(WebGraphicsContext3D* context,
|
| - unsigned vertex_shader,
|
| - unsigned fragment_shader) {
|
| - unsigned program_object = context->createProgram();
|
| - if (!program_object) {
|
| - if (!IsContextLost(context))
|
| - LOG(ERROR) << "Failed to create shader program";
|
| - return 0;
|
| - }
|
| -
|
| - GLC(context, context->attachShader(program_object, vertex_shader));
|
| - GLC(context, context->attachShader(program_object, fragment_shader));
|
| -
|
| - // Bind the common attrib locations.
|
| - GLC(context,
|
| - context->bindAttribLocation(program_object,
|
| - GeometryBinding::PositionAttribLocation(),
|
| - "a_position"));
|
| - GLC(context,
|
| - context->bindAttribLocation(program_object,
|
| - GeometryBinding::TexCoordAttribLocation(),
|
| - "a_texCoord"));
|
| -
|
| - return program_object;
|
| -}
|
| -
|
| -void ProgramBindingBase::CleanupShaders(WebGraphicsContext3D* context) {
|
| - if (vertex_shader_id_) {
|
| - GLC(context, context->deleteShader(vertex_shader_id_));
|
| - vertex_shader_id_ = 0;
|
| - }
|
| - if (fragment_shader_id_) {
|
| - GLC(context, context->deleteShader(fragment_shader_id_));
|
| - fragment_shader_id_ = 0;
|
| - }
|
| -}
|
| -
|
| -bool ProgramBindingBase::IsContextLost(WebGraphicsContext3D* context) {
|
| - return (context->getGraphicsResetStatusARB() != GL_NO_ERROR);
|
| -}
|
| -
|
| -} // namespace cc
|
|
|