<?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="glTexStorage3DMultisample">
    <refentryinfo>
        <copyright>
            <year>2013</year>
            <holder>Khronos Group</holder>
        </copyright>
    </refentryinfo>
    <refmeta>
        <refentrytitle>glTexStorage3DMultisample</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>glTexStorage3DMultisample</refname>
        <refpurpose>specify storage for a two-dimensional multisample array texture</refpurpose>
    </refnamediv>
    <refsynopsisdiv><title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>void <function>glTexStorage3DMultisample</function></funcdef>
                <paramdef>GLenum <parameter>target</parameter></paramdef>
                <paramdef>GLsizei <parameter>samples</parameter></paramdef>
                <paramdef>GLenum <parameter>internalformat</parameter></paramdef>
                <paramdef>GLsizei <parameter>width</parameter></paramdef>
                <paramdef>GLsizei <parameter>height</parameter></paramdef>
                <paramdef>GLsizei <parameter>depth</parameter></paramdef>
                <paramdef>GLboolean <parameter>fixedsamplelocations</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>
    <refsect1 id="parameters"><title>Parameters</title>
        <variablelist>
        <varlistentry>
            <term><parameter>target</parameter></term>
            <listitem>
                <para>
                    Specify the target of the operation. <parameter>target</parameter> must be
                    <constant>GL_TEXTURE_2D_MULTISAMPLE_ARRAY</constant> or <constant>GL_PROXY_TEXTURE_2D_MULTISAMPLE_MULTISAMPLE</constant>.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>samples</parameter></term>
            <listitem>
                <para>
                    Specify the number of samples in the texture.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>internalformat</parameter></term>
            <listitem>
                <para>
                    Specifies the sized internal format to be used to store texture image data.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>width</parameter></term>
            <listitem>
                <para>
                    Specifies the width of the texture, in texels.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>height</parameter></term>
            <listitem>
                <para>
                    Specifies the height of the texture, in texels.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>depth</parameter></term>
            <listitem>
                <para>
                    Specifies the depth of the texture, in layers.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>fixedsamplelocations</parameter></term>
            <listitem>
                <para>
                    Specifies whether the image will use identical sample locations and the same number of samples for all texels in the image, and the sample locations will not
                    depend on the internal format or size of the image.
                </para>
            </listitem>
        </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 id="description"><title>Description</title>
        <para>
            <function>glTexStorage3DMultisample</function> specifies the storage requirements for
            a two-dimensional multisample array texture. Once a texture is specified with this
            command, its format and dimensions become immutable unless it is a proxy
            texture. The contents of the image may still be modified, however, its storage requirements
            may not change. Such a texture is referred to as an <emphasis>immutable-format</emphasis>
            texture.
        </para>
        <para>
            <parameter>samples</parameter> specifies the number of samples to be used for the texture
            and must be greater than zero and less than or equal to the value of <constant>GL_MAX_SAMPLES</constant>.
            <parameter>internalformat</parameter> must be a color-renderable, depth-renderable, or stencil-renderable format.
            <parameter>width</parameter> and <parameter>height</parameter> specify the width and height,
            respectively, of the texture and <parameter>depth</parameter> specifies the depth (or the number of layers)
            of the texture. If <parameter>fixedsamplelocations</parameter> is <constant>GL_TRUE</constant>,
            the image will use identical sample locations and the same number of samples for all texels in the image,
            and the sample locations will not depend on the internal format or size of the image.
        </para>
        <para>
            <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="internalformattable.xml" />
        </para>
    </refsect1>
    <refsect1 id="errors"><title>Errors</title>
        <para>
            <constant>GL_INVALID_ENUM</constant> is generated if <parameter>internalformat</parameter> is not a
            valid color-renderable, depth-renderable or stencil-renderable format.
        </para>
        <para>
            <constant>GL_INVALID_ENUM</constant> is generated if <parameter>target</parameter> is not
            one of the accepted target enumerants.
        </para>
        <para>
            <constant>GL_INVALID_VALUE</constant> is generated if <parameter>width</parameter> or <parameter>height</parameter>
            are less than 1 or greater than the value of <constant>GL_MAX_TEXTURE_SIZE</constant>.
        </para>
        <para>
            <constant>GL_INVALID_VALUE</constant> is generated if <parameter>depth</parameter>
            is less than 1 or greater than the value of <constant>GL_MAX_ARRAY_TEXTURE_LAYERS</constant>.
        </para>
        <para>
            <constant>GL_INVALID_VALUE</constant> is generated if <parameter>samples</parameter> is greater than the
            value of <constant>GL_MAX_SAMPLES</constant>.
        </para>
        <para>
            <constant>GL_INVALID_OPERATION</constant> is generated if the value of <constant>GL_TEXTURE_IMMUTABLE_FORMAT</constant>
            for the texture bound to <parameter>target</parameter> is not <constant>GL_FALSE</constant>.
        </para>
    </refsect1>
    <refsect1 id="associatedgets"><title>Associated Gets</title>
        <para>
            <citerefentry><refentrytitle>glGetInteger</refentrytitle></citerefentry> with arguments <constant>GL_MAX_TEXTURE_SIZE</constant>,
            <constant>GL_MAX_ARRAY_TEXTURE_LEVELS</constant>, <constant>GL_TEXTURE_VIEW_MIN_LAYER</constant>,
            <constant>GL_TEXTURE_VIEW_NUM_LAYERS</constant>, or <constant>GL_TEXTURE_IMMUTABLE_LEVELS</constant>.
        </para>
    </refsect1>
    <refsect1 id="seealso"><title>See Also</title>
        <para>
            <citerefentry><refentrytitle>glTexImage3D</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glTexImage3DMultisample</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glTexStorage1D</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glTexStorage2DMultisample</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glTexStorage3D</refentrytitle></citerefentry>.
        </para>
    </refsect1>
    <refsect1 id="Copyright"><title>Copyright</title>
        <para>
            Copyright <trademark class="copyright"></trademark> 2013 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>
