<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title xmlns:xlink="http://www.w3.org/1999/xlink">eglQuerySurface - EGL Reference Pages</title>
    <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"/>
  </head>
  <body>
    <header/>
    <div class="refentry" id="eglQuerySurface">
      <div class="titlepage"/>
      <div class="refnamediv">
        <h2>Name</h2>
        <p>eglQuerySurface — 
            return <abbr class="acronym">EGL</abbr> surface information
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2>C Specification</h2>
        <div class="funcsynopsis">
          <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
            <tr>
              <td>
                <code class="funcdef">EGLBoolean <strong class="fsfunc">eglQuerySurface</strong>(</code>
              </td>
              <td>EGLDisplay <var class="pdparam">display</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLSurface <var class="pdparam">surface</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLint <var class="pdparam">attribute</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLint * <var class="pdparam">value</var><code>)</code>;</td>
            </tr>
          </table>
          <div class="funcprototype-spacer"> </div>
        </div>
      </div>
      <div class="refsect1" id="parameters">
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>display</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                        Specifies the EGL display connection.
                    </p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>surface</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                        Specifies the EGL surface to query.
                    </p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>attribute</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                        Specifies the EGL surface attribute to be returned.
                    </p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>value</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                        Returns the requested value.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="description">
        <h2>Description</h2>
        <p>
            <code class="function">eglQuerySurface</code> returns in
            <em class="parameter"><code>value</code></em> the value of
            <em class="parameter"><code>attribute</code></em> for <em class="parameter"><code>surface</code></em>.
            <em class="parameter"><code>attribute</code></em> can be one of the following:
        </p>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                <code class="constant">EGL_CONFIG_ID</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the ID of the EGL frame buffer configuration
                    with respect to which the surface was created.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_HEIGHT</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the height of the surface in pixels.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the horizontal dot pitch of the display on
                    which a window surface is visible. The value
                    returned is equal to the actual dot pitch, in
                    pixels/meter, multiplied by the constant value
                    <code class="constant">EGL_DISPLAY_SCALING</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_LARGEST_PBUFFER</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the same attribute value specified when the
                    surface was created with
                    <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>.
                    For a window or pixmap surface,
                    <em class="parameter"><code>value</code></em> is not modified.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_MIPMAP_LEVEL</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns which level of the mipmap to render to, if
                    texture has mipmaps.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_MIPMAP_TEXTURE</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns <code class="constant">EGL_TRUE</code> if texture has
                    mipmaps, <code class="constant">EGL_FALSE</code> otherwise.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_MULTISAMPLE_RESOLVE</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the filter used when resolving the
                    multisample buffer. The filter may be either
                    <code class="constant">EGL_MULTISAMPLE_RESOLVE_DEFAULT</code>
                    or <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX</code>,
                    as described for
                    <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the aspect ratio of an individual pixel (the
                    ratio of a pixel's width to its height). The value
                    returned is equal to the actual aspect ratio
                    multiplied by the constant value
                    <code class="constant">EGL_DISPLAY_SCALING</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_RENDER_BUFFER</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the buffer which client API rendering is
                    requested to use. For a window surface, this is the
                    same attribute value specified when the surface was
                    created. For a pbuffer surface, it is always
                    <code class="constant">EGL_BACK_BUFFER</code>. For a pixmap
                    surface, it is always
                    <code class="constant">EGL_SINGLE_BUFFER</code>. To determine
                    the actual buffer being rendered to by a context,
                    call
                    <a class="citerefentry" href="eglQueryContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglQueryContext</span></span></a>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_SWAP_BEHAVIOR</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the effect on the color buffer when posting
                    a surface with
                    <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>.
                    Swap behavior may be either
                    <code class="constant">EGL_BUFFER_PRESERVED</code> or
                    <code class="constant">EGL_BUFFER_DESTROYED</code>, as
                    described for
                    <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_TEXTURE_FORMAT</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns format of texture. Possible values are
                    <code class="constant">EGL_NO_TEXTURE</code>,
                    <code class="constant">EGL_TEXTURE_RGB</code>, and
                    <code class="constant">EGL_TEXTURE_RGBA</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_TEXTURE_TARGET</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns type of texture. Possible values are
                    <code class="constant">EGL_NO_TEXTURE</code>, or
                    <code class="constant">EGL_TEXTURE_2D</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_VERTICAL_RESOLUTION</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the vertical dot pitch of the display on
                    which a window surface is visible. The value
                    returned is equal to the actual dot pitch, in
                    pixels/meter, multiplied by the constant value
                    <code class="constant">EGL_DISPLAY_SCALING</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_WIDTH</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the width of the surface in pixels.
                </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="notes">
        <h2>Notes</h2>
        <p>
            Attribute <code class="constant">EGL_MULTISAMPLE_RESOLVE</code> is
            supported only if the EGL version is 1.4 or greater.
        </p>
        <p>
            Attributes <code class="constant">EGL_DISPLAY_SCALING</code>.
            <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
            <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>,
            <code class="constant">EGL_RENDER_BUFFER</code>,
            <code class="constant">EGL_SWAP_BEHAVIOR</code>, and
            <code class="constant">EGL_VERTICAL_RESOLUTION</code> are supported
            only if the EGL version is 1.2 or greater.
        </p>
        <p>
            Querying attributes <code class="constant">EGL_TEXTURE_FORMAT</code>,
            <code class="constant">EGL_TEXTURE_TARGET</code>,
            <code class="constant">EGL_MIPMAP_TEXTURE</code>, or
            <code class="constant">EGL_MIPMAP_LEVEL</code> for a non-pbuffer
            surface is not an error, but <em class="parameter"><code>value</code></em> is
            not modified.
        </p>
        <p>
            <code class="constant">EGL_DISPLAY_SCALING</code> is the constant
            value 10000. Floating-point values such as resolution and
            pixel aspect ratio are scaled by this value before being
            returned as integers so that sufficient precision to be
            meaningful will be retained in the returned value.
        </p>
        <p>
            For an offscreen (pbuffer or pixmap) surface, or a surface
            whose pixel dot pitch or aspect ratio are unknown, querying
            <code class="constant">EGL_HORIZONTAL_RESOLUTION</code>,
            <code class="constant">EGL_PIXEL_ASPECT_RATIO</code>, or
            <code class="constant">EGL_VERTICAL_RESOLUTION</code> will return the
            constant value <code class="constant">EGL_UNKNOWN</code> (-1).
        </p>
      </div>
      <div class="refsect1" id="errors">
        <h2>Errors</h2>
        <p>
            <code class="constant">EGL_FALSE</code> is returned on failure,
            <code class="constant">EGL_TRUE</code> otherwise.
            <em class="parameter"><code>value</code></em> is not modified when
            <code class="constant">EGL_FALSE</code> is returned.
        </p>
        <p>
            <code class="constant">EGL_BAD_DISPLAY</code> is generated if
            <em class="parameter"><code>display</code></em> is not an EGL display connection.
        </p>
        <p>
            <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
            <em class="parameter"><code>display</code></em> has not been initialized.
        </p>
        <p>
            <code class="constant">EGL_BAD_SURFACE</code> is generated if
            <em class="parameter"><code>surface</code></em> is not an EGL surface.
        </p>
        <p>
            <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
            <em class="parameter"><code>attribute</code></em> is not a valid surface attribute.
        </p>
      </div>
      <div class="refsect1" id="seealso">
        <h2>See Also</h2>
        <p>
            <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
            <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
            <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
            <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
            <a class="citerefentry" href="eglSwapBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapBuffers</span></span></a>
        </p>
      </div>
      <p>
    </p>
      <div class="refsect3" id="copyright">
        <img src="KhronosLogo.jpg"/>
        <p>
            Copyright © 2003-2014 The Khronos Group Inc.
            Permission is hereby granted, free of charge, to any person obtaining a
            copy of this software and/or associated documentation files (the
            "Materials"), to deal in the Materials without restriction, including
            without limitation the rights to use, copy, modify, merge, publish,
            distribute, sublicense, and/or sell copies of the Materials, and to
            permit persons to whom the Materials are furnished to do so, subject to
            the condition that this copyright notice and permission notice shall be included
            in all copies or substantial portions of the Materials.
        </p>
      </div>
      <p>
</p>
    </div>
    <footer/>
  </body>
</html>
