| <refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePbufferSurface"> | |
| <info> | |
| <copyright> | |
| <year>2003-2014</year> | |
| <holder>The Khronos Group Inc.</holder> | |
| </copyright> | |
| </info> | |
| <refmeta> | |
| <refentrytitle>eglCreatePbufferSurface</refentrytitle> | |
| <manvolnum>3G</manvolnum> | |
| </refmeta> | |
| <refnamediv> | |
| <refname>eglCreatePbufferSurface</refname> | |
| <refpurpose> | |
| create a new <acronym>EGL</acronym> pixel buffer surface | |
| </refpurpose> | |
| </refnamediv> | |
| <refsynopsisdiv> | |
| <title>C Specification</title> | |
| <funcsynopsis> | |
| <funcprototype> | |
| <funcdef>EGLSurface <function>eglCreatePbufferSurface</function></funcdef> | |
| <paramdef>EGLDisplay <parameter>display</parameter></paramdef> | |
| <paramdef>EGLConfig <parameter>config</parameter></paramdef> | |
| <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef> | |
| </funcprototype> | |
| </funcsynopsis> | |
| </refsynopsisdiv> | |
| <refsect1 xml:id="parameters"><title>Parameters</title> | |
| <variablelist> | |
| <varlistentry> | |
| <term><parameter>display</parameter></term> | |
| <listitem><para>Specifies the EGL display connection.</para></listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><parameter>config</parameter></term> | |
| <listitem><para> | |
| Specifies the EGL frame buffer configuration that defines the | |
| frame buffer resource available to the surface. | |
| </para></listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><parameter>attrib_list</parameter></term> | |
| <listitem><para> | |
| Specifies pixel buffer surface attributes. | |
| May be <constant>NULL</constant> or empty | |
| (first attribute is <constant>EGL_NONE</constant>). | |
| </para></listitem> | |
| </varlistentry> | |
| </variablelist> | |
| </refsect1> | |
| <refsect1 xml:id="description"><title>Description</title> | |
| <para> | |
| <function>eglCreatePbufferSurface</function> creates an | |
| off-screen pixel buffer surface and returns its handle. If | |
| <function>eglCreatePbufferSurface</function> fails to create | |
| a pixel buffer surface, <constant>EGL_NO_SURFACE</constant> | |
| is returned. | |
| </para> | |
| <para> | |
| Surface attributes are specified as a list of | |
| attribute-value pairs, terminated with | |
| <constant>EGL_NONE</constant>. Accepted attributes | |
| are: | |
| </para> | |
| <variablelist> | |
| <varlistentry> | |
| <term><constant>EGL_GL_COLORSPACE</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies the color space used by OpenGL and OpenGL ES | |
| when rendering to the surface. If its value is | |
| <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a | |
| non-linear, perceptually uniform color space is assumed, | |
| with a corresponding | |
| <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant> | |
| value of <constant>GL_SRGB</constant>. If its value is | |
| <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a | |
| linear color space is assumed, with a corresponding | |
| <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant> | |
| value of <constant>GL_LINEAR</constant>. The default | |
| value of <constant>EGL_GL_COLORSPACE</constant> is | |
| <constant>EGL_GL_COLORSPACE_LINEAR</constant>. | |
| </para> | |
| <para> | |
| Note that the <constant>EGL_GL_COLORSPACE</constant> | |
| attribute is used only by OpenGL and OpenGL ES contexts | |
| supporting sRGB framebuffers. EGL itself does not | |
| distinguish multiple colorspace models. Refer to the | |
| ``sRGB Conversion'' sections of the OpenGL 4.6 and | |
| OpenGL ES 3.2 Specifications for more information. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_HEIGHT</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies the required height of the pixel buffer | |
| surface. The default value is | |
| <constant>0</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_LARGEST_PBUFFER</constant></term> | |
| <listitem> | |
| <para> | |
| Requests the largest available pixel buffer surface | |
| when the allocation would otherwise fail. Use | |
| <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry> | |
| to retrieve the dimensions of the allocated pixel | |
| buffer. The default value is | |
| <constant>EGL_FALSE</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_MIPMAP_TEXTURE</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies whether storage for mipmaps should be | |
| allocated. Space for mipmaps will be set aside if | |
| the attribute value is <constant>EGL_TRUE</constant> | |
| and <constant>EGL_TEXTURE_FORMAT</constant> is not | |
| <constant>EGL_NO_TEXTURE</constant>. The default | |
| value is <constant>EGL_FALSE</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_TEXTURE_FORMAT</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies the format of the texture that will be | |
| created when a pbuffer is bound to a texture map. | |
| Possible values are | |
| <constant>EGL_NO_TEXTURE</constant>, | |
| <constant>EGL_TEXTURE_RGB</constant>, and | |
| <constant>EGL_TEXTURE_RGBA</constant>. The default | |
| value is <constant>EGL_NO_TEXTURE</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_TEXTURE_TARGET</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies the target for the texture that will be | |
| created when the pbuffer is created with a texture | |
| format of <constant>EGL_TEXTURE_RGB</constant> or | |
| <constant>EGL_TEXTURE_RGBA</constant>. Possible | |
| values are <constant>EGL_NO_TEXTURE</constant>, or | |
| <constant>EGL_TEXTURE_2D</constant>. The default | |
| value is <constant>EGL_NO_TEXTURE</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_VG_ALPHA_FORMAT</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies how alpha values are interpreted by OpenVG | |
| when rendering to the surface. If its value is | |
| <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>, | |
| then alpha values are not premultipled. If its value | |
| is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>, | |
| then alpha values are premultiplied. The default | |
| value of <constant>EGL_VG_ALPHA_FORMAT</constant> is | |
| <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_VG_COLORSPACE</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies the color space used by OpenVG when | |
| rendering to the surface. If its value is | |
| <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a | |
| non-linear, perceptually uniform color space is | |
| assumed, with a corresponding | |
| <type>VGImageFormat</type> of form | |
| <constant>VG_s*</constant>. If its value is | |
| <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then | |
| a linear color space is assumed, with a | |
| corresponding <type>VGImageFormat</type> of form | |
| <constant>VG_l*</constant>. The default value of | |
| <constant>EGL_VG_COLORSPACE</constant> is | |
| <constant>EGL_VG_COLORSPACE_sRGB</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><constant>EGL_WIDTH</constant></term> | |
| <listitem> | |
| <para> | |
| Specifies the required width of the pixel buffer | |
| surface. The default value is | |
| <constant>0</constant>. | |
| </para> | |
| </listitem> | |
| </varlistentry> | |
| </variablelist> | |
| <para> | |
| Any EGL rendering context that was created with respect to | |
| <parameter>config</parameter> can be used to render into the | |
| surface. Use | |
| <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry> | |
| to attach an EGL rendering context to the surface. | |
| </para> | |
| <para> | |
| Use | |
| <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry> | |
| to retrieve the dimensions of the allocated pixel buffer | |
| surface or the ID of <parameter>config</parameter>. | |
| </para> | |
| <para> | |
| Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry> | |
| to destroy the surface. | |
| </para> | |
| </refsect1> | |
| <refsect1 xml:id="notes"><title>Notes</title> | |
| <para> | |
| Attribute <constant>EGL_GL_COLORSPACE</constant>, and the | |
| <constant>EGL_OPENGL_ES3_BIT</constant> bit value for attribute | |
| <constant>EGL_RENDERABLE_TYPE</constant>, are supported only if | |
| the EGL version is 1.5 or greater. | |
| </para> | |
| <para> | |
| Attributes | |
| <constant>EGL_RENDERABLE_TYPE</constant>, | |
| <constant>EGL_VG_ALPHA_FORMAT</constant>, and | |
| <constant>EGL_VG_COLORSPACE</constant>, and the | |
| corresponding attribute values, are supported only if the | |
| EGL version is 1.2 or greater. | |
| </para> | |
| <para> | |
| If the value of <parameter>config</parameter> attribute | |
| <constant>EGL_TEXTURE_FORMAT</constant> is not | |
| <constant>EGL_NO_TEXTURE</constant>, then the pbuffer width | |
| and height specify the size of the level zero texture image | |
| </para> | |
| <para> | |
| If <constant>EGL_LARGEST_PBUFFER</constant> is specified and | |
| if the pbuffer will be used as a texture (i.e. the value of | |
| <constant>EGL_TEXTURE_TARGET</constant> is | |
| <constant>EGL_TEXTURE_2D</constant>, and the value of | |
| <constant>EGL_TEXTURE FORMAT</constant> is | |
| <constant>EGL_TEXTURE_RGB</constant> or | |
| <constant>EGL_TEXTURE_RGBA</constant>), then the aspect | |
| ratio will be preserved and the new width and height will be | |
| valid sizes for the texture target (e.g. if the underlying | |
| OpenGL ES implementation does not support non-power-of-two | |
| textures, both the width and height will be a power of 2). | |
| </para> | |
| <para> | |
| The contents of the depth and stencil buffers may not be | |
| preserved when rendering a texture to the pbuffer and | |
| switching which image of the texture is rendered to (e.g., | |
| switching from rendering one mipmap level to rendering | |
| another). | |
| </para> | |
| </refsect1> | |
| <refsect1 xml:id="errors"><title>Errors</title> | |
| <para> | |
| <constant>EGL_NO_SURFACE</constant> is returned if creation of | |
| the context fails. | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_DISPLAY</constant> is generated if | |
| <parameter>display</parameter> is not an EGL display connection. | |
| </para> | |
| <para> | |
| <constant>EGL_NOT_INITIALIZED</constant> is generated if | |
| <parameter>display</parameter> has not been initialized. | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_CONFIG</constant> is generated if | |
| <parameter>config</parameter> is not an EGL frame buffer configuration. | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_ATTRIBUTE</constant> is generated if | |
| <parameter>attrib_list</parameter> contains an invalid pixel | |
| buffer attribute or if an attribute value is not recognized | |
| or out of range. | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_ATTRIBUTE</constant> is generated if | |
| <parameter>attrib_list</parameter> contains any of the | |
| attributes <constant>EGL_MIPMAP_TEXTURE</constant>, | |
| <constant>EGL_TEXTURE_FORMAT</constant>, or | |
| <constant>EGL_TEXTURE_TARGET</constant>, and | |
| <parameter>config</parameter> does not support OpenGL ES | |
| rendering (e.g. the EGL version is 1.2 or later, and the | |
| <constant>EGL_RENDERABLE_TYPE</constant> attribute of | |
| <parameter>config</parameter> does not include at least one | |
| of <constant>EGL_OPENGL_ES_BIT</constant>, | |
| <constant>EGL_OPENGL_ES2_BIT</constant>, or | |
| <constant>EGL_OPENGL_ES3_BIT</constant>), | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_ALLOC</constant> is generated if there are not | |
| enough resources to allocate the new surface. | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_MATCH</constant> is generated if | |
| <parameter>config</parameter> does not support rendering to pixel buffers | |
| (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain | |
| <constant>EGL_PBUFFER_BIT</constant>). | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_MATCH</constant> is generated if the | |
| <constant>EGL_TEXTURE_FORMAT</constant> attribute is not | |
| <constant>EGL_NO_TEXTURE</constant>, and | |
| <constant>EGL_WIDTH</constant> and/or | |
| <constant>EGL_HEIGHT</constant> specify an invalid size | |
| (e.g., the texture size is not a power of 2, and the | |
| underlying OpenGL ES implementation does not support | |
| non-power-of-two textures). | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_MATCH</constant> is generated if | |
| the <constant>EGL_TEXTURE_FORMAT</constant> attribute is | |
| <constant>EGL_NO_TEXTURE</constant>, and | |
| <constant>EGL_TEXTURE_TARGET</constant> is something other | |
| than <constant>EGL_NO_TEXTURE</constant>; or, | |
| <constant>EGL_TEXTURE_FORMAT</constant> is something other | |
| than <constant>EGL_NO_TEXTURE</constant>, and | |
| <constant>EGL_TEXTURE_TARGET</constant> is | |
| <constant>EGL_NO_TEXTURE</constant>. | |
| </para> | |
| <para> | |
| <constant>EGL_BAD_MATCH</constant> is generated if | |
| <parameter>config</parameter> does not support the specified | |
| OpenVG alpha format attribute (the value of | |
| <constant>EGL_VG_ALPHA_FORMAT</constant> is | |
| <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the | |
| <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set | |
| in the <constant>EGL_SURFACE_TYPE</constant> attribute of | |
| <parameter>config</parameter>) or colorspace attribute (the | |
| value of <constant>EGL_VG_COLORSPACE</constant> is | |
| <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the | |
| <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set | |
| in the <constant>EGL_SURFACE_TYPE</constant> attribute of | |
| <parameter>config</parameter>). | |
| </para> | |
| </refsect1> | |
| <refsect1 xml:id="seealso"><title>See Also</title> | |
| <para> | |
| <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>, | |
| <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>, | |
| <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>, | |
| <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>, | |
| <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry> | |
| </para> | |
| </refsect1> | |
| <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/> | |
| </refentry> |