diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-10-09 17:56:51 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-10-09 17:56:52 +0200 |
commit | 881ceeff428c377d02ae3881beccdbb028385075 (patch) | |
tree | 65bd4335d7f67b81b04e33f2cbb17a41cf966dd8 /src/3rdparty/angle/src/libGLESv2/Program.cpp | |
parent | b3d2c867ed14cd6337d5e32b8750f198b5b7d331 (diff) | |
parent | 106487387d493dab934e19b33bfed55b8df62d67 (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I05fcd8dc66d9ad0dc76bb7f5bae05c9876bfba14
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/Program.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libGLESv2/Program.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/Program.cpp b/src/3rdparty/angle/src/libGLESv2/Program.cpp index 8a9fb04800..9bfda09a64 100644 --- a/src/3rdparty/angle/src/libGLESv2/Program.cpp +++ b/src/3rdparty/angle/src/libGLESv2/Program.cpp @@ -1,4 +1,3 @@ -#include "precompiled.h" // // Copyright (c) 2002-2014 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be @@ -11,6 +10,7 @@ #include "libGLESv2/Program.h" #include "libGLESv2/ProgramBinary.h" #include "libGLESv2/ResourceManager.h" +#include "libGLESv2/renderer/Renderer.h" namespace gl { @@ -173,7 +173,7 @@ bool Program::attachShader(Shader *shader) return false; } - mVertexShader = (VertexShader*)shader; + mVertexShader = shader; mVertexShader->addRef(); } else if (shader->getType() == GL_FRAGMENT_SHADER) @@ -183,7 +183,7 @@ bool Program::attachShader(Shader *shader) return false; } - mFragmentShader = (FragmentShader*)shader; + mFragmentShader = shader; mFragmentShader->addRef(); } else UNREACHABLE(); @@ -244,16 +244,16 @@ void Program::bindAttributeLocation(GLuint index, const char *name) // Links the HLSL code of the vertex and pixel shader by matching up their varyings, // compiling them into binaries, determining the attribute mappings, and collecting // a list of uniforms -bool Program::link() +bool Program::link(const Caps &caps) { unlink(false); mInfoLog.reset(); resetUniformBlockBindings(); - mProgramBinary.set(new ProgramBinary(mRenderer)); + mProgramBinary.set(new ProgramBinary(mRenderer->createProgram())); mLinked = mProgramBinary->link(mInfoLog, mAttributeBindings, mFragmentShader, mVertexShader, - mTransformFeedbackVaryings, mTransformFeedbackBufferMode); + mTransformFeedbackVaryings, mTransformFeedbackBufferMode, caps); return mLinked; } @@ -303,14 +303,15 @@ ProgramBinary* Program::getProgramBinary() const return mProgramBinary.get(); } -bool Program::setProgramBinary(const void *binary, GLsizei length) +bool Program::setProgramBinary(GLenum binaryFormat, const void *binary, GLsizei length) { unlink(false); mInfoLog.reset(); - mProgramBinary.set(new ProgramBinary(mRenderer)); - mLinked = mProgramBinary->load(mInfoLog, binary, length); + mProgramBinary.set(new ProgramBinary(mRenderer->createProgram())); + mLinked = mProgramBinary->load(mInfoLog, binaryFormat, binary, length); + if (!mLinked) { mProgramBinary.set(NULL); @@ -502,14 +503,14 @@ bool Program::isFlaggedForDeletion() const return mDeleteStatus; } -void Program::validate() +void Program::validate(const Caps &caps) { mInfoLog.reset(); ProgramBinary *programBinary = getProgramBinary(); if (isLinked() && programBinary) { - programBinary->validate(mInfoLog); + programBinary->validate(mInfoLog, caps); } else { |