<?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">eglCreateContext - 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="eglCreateContext">
      <div class="titlepage"/>
      <div class="refnamediv">
        <h2>Name</h2>
        <p>eglCreateContext — 
            create a new <abbr class="acronym">EGL</abbr> rendering context
        </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">EGLContext <strong class="fsfunc">eglCreateContext</strong>(</code>
              </td>
              <td>EGLDisplay <var class="pdparam">display</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLConfig <var class="pdparam">config</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLContext <var class="pdparam">share_context</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLint const * <var class="pdparam">attrib_list</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
                    <abbr class="acronym">EGL</abbr>
                    display connection.
                </p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>config</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Specifies the EGL frame buffer configuration that
                    defines the frame buffer resource available to the rendering context.
                </p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>share_context</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                    Specifies another
                    <abbr class="acronym">EGL</abbr>
                    rendering context with which to share data, as
                    defined by the client API corresponding to the
                    contexts. Data is also shared with all other
                    contexts with which
                    <em class="parameter"><code>share_context</code></em> shares data.
                    <code class="constant">EGL_NO_CONTEXT</code> indicates that
                    no sharing is to take place.
                </p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>attrib_list</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                    Specifies attributes and attribute values for the
                    context being created. Only the attribute
                    <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> may
                    be specified.
                </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="description">
        <h2>Description</h2>
        <p>
            <code class="function">eglCreateContext</code> creates an EGL
            rendering context for the current rendering API (as set with
            <code class="function">eglBindAPI</code>) and returns a handle to the
            context. The context can then be used to render into an EGL
            drawing surface. If <code class="function">eglCreateContext</code>
            fails to create a rendering context,
            <code class="constant">EGL_NO_CONTEXT</code> is returned.
        </p>
        <p>
            If <em class="parameter"><code>share_context</code></em> is not
            <code class="constant">EGL_NO_CONTEXT</code>, then all shareable data
            in the context (as defined by the client API specification
            for the current rendering API) are shared by context
            <em class="parameter"><code>share_context</code></em>, all other contexts
            <em class="parameter"><code>share_context</code></em> already shares with,
            and the newly created context. An arbitrary number of
            rendering contexts can share data. However, all rendering
            contexts that share data must themselves exist in the same
            address space. Two rendering contexts share an address space
            if both are owned by a single process.
        </p>
        <p>
            <em class="parameter"><code>attrib_list</code></em> specifies a list of
            attributes for the context. The list has the same structure
            as described for <code class="function">eglChooseConfig</code>. The
            attributes and attribute values which may be specified are
            as follows:
        </p>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by an integer that determines which
                    version of an OpenGL ES context to create. A value
                    of 1 specifies creation of an OpenGL ES 1.x context.
                    An attribute value of 2 specifies creation of an
                    OpenGL ES 2.x context. The default value is 1. This
                    attribute can only be specified when creating a
                    OpenGL ES context (e.g. when the current rendering
                    API is <code class="constant">EGL_OPENGL_ES_API</code>).
                </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="notes">
        <h2>Notes</h2>
        <p>
            The current rendering API is only respected if the EGL
            version is 1.2 or greater. Otherwise, an OpenGL ES context
            will always be created.
        </p>
        <p>
            The <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code>
            attribute is only supported if the EGL version is 1.3 or
            greater.
        </p>
        <p>
            A <em class="firstterm">process</em> is a single execution environment,
            implemented in a single address space, consisting of one or more threads.
        </p>
        <p>
            A <em class="firstterm">thread</em> is one of a set of subprocesses that
            share a single address space, but maintain separate program counters,
            stack spaces, and other related global data.
            A thread is the only member of its subprocess group is equivalent to a
            process.
        </p>
      </div>
      <div class="refsect1" id="errors">
        <h2>Errors</h2>
        <p>
            <code class="constant">EGL_NO_CONTEXT</code> is returned if creation of
            the context fails.
        </p>
        <p>
            <code class="constant">EGL_BAD_MATCH</code> is generated if the
            current rendering API is <code class="constant">EGL_NONE</code> (this
            can only arise in an EGL implementation which does not
            support OpenGL ES, prior to the first call to
            <code class="function">eglBindAPI</code>).
        </p>
        <p>
            <code class="constant">EGL_BAD_MATCH</code> is generated if the
            server context state for
            <em class="parameter"><code>share_context</code></em> exists in an address
            space which cannot be shared with the newly created context,
            if <em class="parameter"><code>share_context</code></em> was created on a
            different display than the one referenced by
            <em class="parameter"><code>config</code></em>, or if the contexts are
            otherwise incompatible.
        </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_CONFIG</code> is generated if
            <em class="parameter"><code>config</code></em> is not an EGL frame buffer
            configuration, or does not support the current rendering
            API. This includes requesting creation of an OpenGL ES 1.x
            context when the <code class="constant">EGL_RENDERABLE_TYPE</code>
            attribute of <em class="parameter"><code>config</code></em> does not contain
            <code class="constant">EGL_OPENGL_ES_BIT</code>, or creation of an
            OpenGL ES 2.x context when the attribute does not contain
            <code class="constant">EGL_OPENGL_ES2_BIT</code>.
        </p>
        <p>
            <code class="constant">EGL_BAD_CONTEXT</code> is generated if
            <em class="parameter"><code>share_context</code></em> is not an EGL rendering
            context of the same client API type as the newly created
            context and is not <code class="constant">EGL_NO_CONTEXT</code>.
        </p>
        <p>
            <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
            <em class="parameter"><code>attrib_list</code></em> contains an invalid
            context attribute or if an attribute is not recognized or
            out of range. Note that attribute
            <code class="constant">EGL_CONTEXT_CLIENT_VERSION</code> is
            only valid when the current rendering API is
            <code class="constant">EGL_OPENGL_ES_API</code>.
        </p>
        <p>
            <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
            enough resources to allocate the new context.
        </p>
      </div>
      <div class="refsect1" id="seealso">
        <h2>See Also</h2>
        <p>
            <a class="citerefentry" href="eglDestroyContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglDestroyContext</span></span></a>,
            <a class="citerefentry" href="eglChooseConfig.xhtml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
            <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
            <a class="citerefentry" href="eglMakeCurrent.xhtml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</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>
