Index: cc/ProgramBinding.cpp |
diff --git a/cc/ProgramBinding.cpp b/cc/ProgramBinding.cpp |
deleted file mode 100644 |
index 27d522609dd50b0d81cf1ac2d38fb9236a0a41bd..0000000000000000000000000000000000000000 |
--- a/cc/ProgramBinding.cpp |
+++ /dev/null |
@@ -1,147 +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 "config.h" |
- |
-#if USE(ACCELERATED_COMPOSITING) |
- |
-#include "ProgramBinding.h" |
- |
-#include "CCRendererGL.h" // For the GLC() macro. |
-#include "GeometryBinding.h" |
-#include "GraphicsContext3D.h" |
-#include "TraceEvent.h" |
-#include <public/WebGraphicsContext3D.h> |
- |
-using WebKit::WebGraphicsContext3D; |
- |
-namespace cc { |
- |
-ProgramBindingBase::ProgramBindingBase() |
- : m_program(0) |
- , m_vertexShaderId(0) |
- , m_fragmentShaderId(0) |
- , m_initialized(false) |
-{ |
-} |
- |
-ProgramBindingBase::~ProgramBindingBase() |
-{ |
- // If you hit these asserts, you initialized but forgot to call cleanup(). |
- ASSERT(!m_program); |
- ASSERT(!m_vertexShaderId); |
- ASSERT(!m_fragmentShaderId); |
- ASSERT(!m_initialized); |
-} |
- |
-static bool contextLost(WebGraphicsContext3D* context) |
-{ |
- return (context->getGraphicsResetStatusARB() != GraphicsContext3D::NO_ERROR); |
-} |
- |
- |
-void ProgramBindingBase::init(WebGraphicsContext3D* context, const std::string& vertexShader, const std::string& fragmentShader) |
-{ |
- TRACE_EVENT0("cc", "ProgramBindingBase::init"); |
- m_vertexShaderId = loadShader(context, GraphicsContext3D::VERTEX_SHADER, vertexShader); |
- if (!m_vertexShaderId) { |
- if (!contextLost(context)) |
- LOG_ERROR("Failed to create vertex shader"); |
- return; |
- } |
- |
- m_fragmentShaderId = loadShader(context, GraphicsContext3D::FRAGMENT_SHADER, fragmentShader); |
- if (!m_fragmentShaderId) { |
- GLC(context, context->deleteShader(m_vertexShaderId)); |
- m_vertexShaderId = 0; |
- if (!contextLost(context)) |
- LOG_ERROR("Failed to create fragment shader"); |
- return; |
- } |
- |
- m_program = createShaderProgram(context, m_vertexShaderId, m_fragmentShaderId); |
- ASSERT(m_program || contextLost(context)); |
-} |
- |
-void ProgramBindingBase::link(WebGraphicsContext3D* context) |
-{ |
- GLC(context, context->linkProgram(m_program)); |
- cleanupShaders(context); |
-#ifndef NDEBUG |
- int linked = 0; |
- GLC(context, context->getProgramiv(m_program, GraphicsContext3D::LINK_STATUS, &linked)); |
- if (!linked) { |
- if (!contextLost(context)) |
- LOG_ERROR("Failed to link shader program"); |
- GLC(context, context->deleteProgram(m_program)); |
- return; |
- } |
-#endif |
-} |
- |
-void ProgramBindingBase::cleanup(WebGraphicsContext3D* context) |
-{ |
- m_initialized = false; |
- if (!m_program) |
- return; |
- |
- ASSERT(context); |
- GLC(context, context->deleteProgram(m_program)); |
- m_program = 0; |
- |
- cleanupShaders(context); |
-} |
- |
-unsigned ProgramBindingBase::loadShader(WebGraphicsContext3D* context, unsigned type, const std::string& shaderSource) |
-{ |
- unsigned shader = context->createShader(type); |
- if (!shader) |
- return 0; |
- GLC(context, context->shaderSource(shader, shaderSource.data())); |
- GLC(context, context->compileShader(shader)); |
-#ifndef NDEBUG |
- int compiled = 0; |
- GLC(context, context->getShaderiv(shader, GraphicsContext3D::COMPILE_STATUS, &compiled)); |
- if (!compiled) { |
- GLC(context, context->deleteShader(shader)); |
- return 0; |
- } |
-#endif |
- return shader; |
-} |
- |
-unsigned ProgramBindingBase::createShaderProgram(WebGraphicsContext3D* context, unsigned vertexShader, unsigned fragmentShader) |
-{ |
- unsigned programObject = context->createProgram(); |
- if (!programObject) { |
- if (!contextLost(context)) |
- LOG_ERROR("Failed to create shader program"); |
- return 0; |
- } |
- |
- GLC(context, context->attachShader(programObject, vertexShader)); |
- GLC(context, context->attachShader(programObject, fragmentShader)); |
- |
- // Bind the common attrib locations. |
- GLC(context, context->bindAttribLocation(programObject, GeometryBinding::positionAttribLocation(), "a_position")); |
- GLC(context, context->bindAttribLocation(programObject, GeometryBinding::texCoordAttribLocation(), "a_texCoord")); |
- |
- return programObject; |
-} |
- |
-void ProgramBindingBase::cleanupShaders(WebGraphicsContext3D* context) |
-{ |
- if (m_vertexShaderId) { |
- GLC(context, context->deleteShader(m_vertexShaderId)); |
- m_vertexShaderId = 0; |
- } |
- if (m_fragmentShaderId) { |
- GLC(context, context->deleteShader(m_fragmentShaderId)); |
- m_fragmentShaderId = 0; |
- } |
-} |
- |
-} // namespace cc |
- |
-#endif // USE(ACCELERATED_COMPOSITING) |