<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry id="glValidateProgramPipeline">
    <refmeta>
        <refmetainfo>
            <copyright>
                <year>2010</year>
                <holder>Khronos Group</holder>
            </copyright>
        </refmetainfo>
        <refentrytitle>glValidateProgramPipeline</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>glValidateProgramPipeline</refname>
        <refpurpose>validate a program pipeline object against current GL state</refpurpose>
    </refnamediv>
    <refsynopsisdiv><title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>void <function>glValidateProgramPipeline</function></funcdef>
                <paramdef>GLuint <parameter>pipeline</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>
    <refsect1 id="parameters"><title>Parameters</title>
        <variablelist>
        <varlistentry>
            <term><parameter>pipeline</parameter></term>
            <listitem>
            <para>
                Specifies the name of a program pipeline object to validate.
            </para>
            </listitem>
        </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 id="description"><title>Description</title>
        <para>
            <function>glValidateProgramPipeline</function> instructs the implementation to validate the
            shader executables contained in <parameter>pipeline</parameter> against the current GL state.
            The implementation may use this as an opportunity to perform any internal shader modifications
            that may be required to ensure correct operation of the installed shaders given the
            current GL state.
        </para>
        <para>
            After a program pipeline has been validated, its validation status is set to <constant>GL_TRUE</constant>.
            The validation status of a program pipeline object may be queried by calling
            <citerefentry><refentrytitle>glGetProgramPipeline</refentrytitle></citerefentry> with
            parameter <constant>GL_VALIDATE_STATUS</constant>.
        </para>
        <para>
            If <parameter>pipeline</parameter> is a name previously returned from a call to
            <citerefentry><refentrytitle>glGenProgramPipelines</refentrytitle></citerefentry> but
            that has not yet been bound by a call to <citerefentry><refentrytitle>glBindProgramPipeline</refentrytitle></citerefentry>,
            a new program pipeline object is created with name <parameter>pipeline</parameter> and
            the default state vector.
        </para>
    </refsect1>
    <refsect1 id="errors"><title>Errors</title>
        <para>
            <constant>GL_INVALID_OPERATION</constant> is generated if <parameter>pipeline</parameter> is not
            a name previously returned from a call to <citerefentry><refentrytitle>glGenProgramPipelines</refentrytitle></citerefentry>
            or if such a name has been deleted by a call to
            <citerefentry><refentrytitle>glDeleteProgramPipelines</refentrytitle></citerefentry>.
        </para>
    </refsect1>
    <refsect1 id="associatedgets"><title>Associated Gets</title>
        <para>
            <citerefentry><refentrytitle>glGetProgramPipeline</refentrytitle></citerefentry>
            with parameter <constant>GL_VALIDATE_STATUS</constant>.
        </para>
    </refsect1>

    <refsect1 id="seealso"><title>See Also</title>
        <para>
            <citerefentry><refentrytitle>glGenProgramPipelines</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glBindProgramPipeline</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glDeleteProgramPipelines</refentrytitle></citerefentry>
        </para>
    </refsect1>
    <refsect1 id="Copyright"><title>Copyright</title>
        <para>
            Copyright <trademark class="copyright"></trademark> 2010 Khronos Group. 
            This material may be distributed subject to the terms and conditions set forth in 
            the Open Publication License, v 1.0, 8 June 1999.
            <ulink url="http://opencontent.org/openpub/">http://opencontent.org/openpub/</ulink>.
        </para>
    </refsect1>
</refentry>
