// // Copyright 2017 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. //
// ProgramPipeline.h: Defines the gl::ProgramPipeline class. // Implements GL program pipeline objects and related functionality. // [OpenGL ES 3.1] section 7.4 page 105.
// The active shader program
Program *mActiveShaderProgram; // The shader programs for each stage.
ShaderMap<Program *> mPrograms;
GLboolean mValid;
ProgramExecutable *mExecutable;
bool mIsLinked;
};
class ProgramPipeline final : public RefCountObject<ProgramPipelineID>, public LabeledObject, public angle::ObserverInterface, public angle::Subject
{ public:
ProgramPipeline(rx::GLImplFactory *factory, ProgramPipelineID handle);
~ProgramPipeline() override;
// Ensure program pipeline is linked. Inlined to make sure its overhead is as low as possible. void resolveLink(const Context *context)
{ if (mState.mIsLinked)
{ // Already linked, nothing to do. return;
}
angle::Result linkResult = link(context); if (linkResult != angle::Result::Continue)
{ // If the link failed then log a warning, swallow the error and move on.
WARN() << "ProgramPipeline link failed" << std::endl;
} return;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.