| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd"> |
| <!-- saved from url=(0013)about:internet --> |
| <?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| <style xmlns="" type="text/css"> |
| /* This style sets a margin around the entire page */ |
| html, body { |
| margin: 10px; |
| } |
| |
| p { |
| font: normal 16px verdana, sans-serif; |
| margin: 0; |
| padding-bottom:12px; |
| } |
| |
| h1 { |
| font: bold 25px verdana, sans-serif; |
| margin-top: 0; |
| margin-bottom: 3px; |
| padding-top: 0; |
| padding-bottom: 0; |
| } |
| |
| h2 { |
| font: bold 19px verdana, sans-serif; |
| margin-top: 28px; |
| margin-bottom: 3px; |
| padding-top: 0; |
| padding-bottom: 0; |
| } |
| |
| h3 { |
| font: bold 19px verdana, sans-serif !important; |
| margin-top: 28px; |
| margin-bottom: 3px; |
| padding-top: 0; |
| padding-bottom: 0; |
| } |
| |
| li { |
| font: normal 16px verdana, sans-serif; |
| margin-top: 0; |
| margin-bottom: 18px; |
| padding-top: 0; |
| padding-bottom: 0; |
| } |
| |
| .pdparam { |
| font: italic 16px verdana, sans-serif; |
| } |
| |
| .term { |
| font: italic 16px verdana, sans-serif; |
| font-weight: normal; |
| } |
| |
| .type { |
| font: normal 16px verdana, sans-serif !important; |
| } |
| |
| .parameter { |
| font-style: italic; |
| } |
| |
| a:link, a:visited { |
| color: blue; |
| text-decoration: none; |
| font: normal 16px; |
| } |
| |
| a:hover { |
| background-color: #FFFF99; |
| font: normal 16px; |
| } |
| |
| div.funcsynopsis { |
| text-align: left; |
| background-color: #e6e6e6; |
| font: normal 16px verdana, sans-serif; |
| padding-top: 10px; |
| padding-bottom: 10px; |
| } |
| |
| div.funcsynopsis table { |
| border-collapse: separate; |
| font: normal 16px verdana, sans-serif; |
| } |
| |
| div.funcsynopsis td { |
| background-color: #e6e6e6; |
| border: 0 solid #000; |
| padding: 1px; |
| font: normal 16px verdana, sans-serif; |
| } |
| |
| div.refsect1 { |
| font-family: verdana, sans-serif; |
| font-size: 16px; |
| } |
| |
| code.constant { |
| font: normal 16px courier new, monospace !important; |
| } |
| |
| span.errorname { |
| font: normal 16px verdana, sans-serif !important; |
| } |
| |
| code.function { |
| font: bold 16px verdana, sans-serif !important; |
| } |
| |
| b.fsfunc { |
| font: bold 16px verdana, sans-serif !important; |
| } |
| |
| code.varname { |
| font: italic 16px verdana, sans-serif; |
| } |
| |
| code.replaceable { |
| font: italic 16px courier new, monospace; |
| } |
| |
| code.funcdef { |
| font: normal 16px verdana, sans-serif !important; |
| } |
| |
| .citerefentry { |
| font: normal 16px verdana, sans-serif !important; |
| } |
| |
| .parameter { |
| font-style: italic; |
| } |
| |
| code.fsfunc { |
| font: normal 16px verdana, sans-serif !important; |
| } |
| |
| /* PARAMETER: This style controls spacing between the terms in Parameter section */ |
| dt { |
| margin-top: 15px; |
| } |
| |
| /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */ |
| div.refsect1 table { |
| width: 100%; |
| margin-top: 10px; |
| background-color: #FFF; |
| border-collapse: collapse; |
| border-color: #000; |
| border-width: 1px; |
| font: normal 16px verdana, sans-serif; |
| } |
| |
| div.refsect1 th { |
| border-collapse: collapse; |
| border-color: #000; |
| border-width: 1px; |
| font: bold 16px verdana, sans-serif; |
| } |
| |
| div.refsect1 td { |
| background-color: #FFF; |
| padding: 5px; |
| vertical-align: text-top; |
| border-collapse: collapse; |
| border-color: #000; |
| border-width: 1px; |
| font: normal 16px verdana, sans-serif; |
| } |
| |
| div.refsect1 p{ |
| font: normal 16px verdana, sans-serif; |
| margin-top: 8px; |
| margin-bottom: 8px; |
| padding-top: 0; |
| padding-bottom: 0; |
| } |
| |
| |
| /* EXAMPLE: These styles apply only to the Example section */ |
| div.refsect2 { |
| font: normal 16px courier new, monospace !important; |
| } |
| |
| div.refsect2 table { |
| margin-top: 0; |
| background-color: #e6e6e6; |
| width: 100%; |
| border: 0 solid #000; |
| padding: 2px; |
| font: normal 16px courier new, monospace !important; |
| } |
| |
| div.refsect2 td { |
| background-color: #e6e6e6; |
| font: normal 16px courier new, monospace !important; |
| white-space:pre; |
| } |
| |
| /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */ |
| div.refsect3 { |
| font: normal 11px verdana, sans-serif; |
| margin-top: 50px; |
| margin-bottom: 20px; |
| padding-top: 0; |
| padding-bottom: 0; |
| } |
| |
| </style> |
| <title>clCreateContext</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /> |
| <meta name="keywords" content="clCreateContext" /> |
| </head> |
| <body> |
| <div class="refentry"> |
| <a id="id-1"></a> |
| <div class="titlepage"></div> |
| <div xmlns="" class="refnamediv"> |
| <a xmlns="http://www.w3.org/1999/xhtml" id="clCreateContext"></a> |
| <h1>clCreateContext</h1> |
| <p>Creates an OpenCL context.</p> |
| </div> |
| <div class="refsynopsisdiv"> |
| <h2></h2> |
| <div class="funcsynopsis"> |
| <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"> |
| <tr valign="bottom"> |
| <td> |
| <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef"><a class="link" href="abstractDataTypes.html" target="pagedisplay">cl_context</a> <strong class="fsfunc">clCreateContext</strong>(</code> |
| <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_context_properties" target="pagedisplay">cl_context_properties</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*properties</var>, </td> |
| </td> |
| </tr> |
| <tr valign="top"> |
| <td> </td> |
| <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_devices</var>, </td> |
| </tr> |
| <tr valign="top"> |
| <td> </td> |
| <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_device_id</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*devices</var>, </td> |
| </tr> |
| <tr valign="top"> |
| <td> </td> |
| <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void (</a> CL_CALLBACK <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*pfn_notify)</var> |
| <code xmlns="http://www.w3.org/1999/xhtml">(</code><div xmlns="http://www.w3.org/1999/xhtml" class="literallayout"><p>const <a class="link" href="scalarDataTypes.html" target="pagedisplay">char</a> *errinfo,<br /> |
| const <a class="link" href="scalarDataTypes.html" target="pagedisplay">void</a> *private_info, <a class="link" href="otherDataTypes.html" target="_top">size_t</a> cb,<br /> |
| <a class="link" href="scalarDataTypes.html" target="pagedisplay">void</a> *user_data</p></div><code xmlns="http://www.w3.org/1999/xhtml">)</code>, </td> |
| </tr> |
| <tr valign="top"> |
| <td> </td> |
| <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*user_data</var>, </td> |
| </tr> |
| <tr valign="top"> |
| <td> </td> |
| <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_int</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*errcode_ret</var><code>)</code></td> |
| </tr> |
| </table> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a id="description"></a> |
| <h2>Description</h2> |
| <p> |
| An OpenCL context is created with one or more devices. Contexts are used by the |
| OpenCL runtime for managing objects such as command-queues, memory, program and kernel |
| objects and for executing kernels on one or more devices specified in the context. |
| </p> |
| </div> |
| <div class="refsect1"> |
| <a id="parameters"></a> |
| <h2>Parameters</h2> |
| <div class="variablelist"> |
| <dl class="variablelist"> |
| <dt> |
| <span class="term">properties</span> |
| </dt> |
| <dd> |
| <p> |
| Specifies a list of context property names and |
| their corresponding values. Each property name is immediately followed |
| by the corresponding desired value. The list is terminated with 0. |
| <code class="varname">properties</code> can be NULL in which case the platform |
| that is selected is implementation-defined. The list of supported |
| <code class="varname">properties</code> is described in the table below. |
| </p> |
| <p> |
| If the extension |
| <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a> |
| is enabled, then <code class="varname">properties</code> specifies a list of context |
| property names and their corresponding values. Each property is followed |
| immediately by the corresponding desired value. The list is terminated with |
| zero. If a property is not specified in <code class="varname">properties</code>, then its |
| default value (listed in the table below) is used (it is said to be specified |
| implicitly). If <code class="varname">properties</code> is NULL or empty (points to |
| a list whose first value is zero), all attributes take on their default values. |
| </p> |
| <p> |
| If the extension |
| <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a> |
| is enabled, then <code class="varname">properties</code> specifies a list of context |
| property names and their corresponding values. Each property is followed |
| immediately by the corresponding desired value. The list is terminated |
| with zero. If a property is not specified in <code class="varname">properties</code>, |
| then its default value is used (it is said to be specified implicitly). If |
| <code class="varname">properties</code> is NULL or empty (points to a list whose first |
| value is zero), all attributes take on their default value. |
| </p> |
| <p> |
| If the extension |
| <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a> |
| is enabled, then <code class="varname">properties</code> specifies a list of context |
| property names and their corresponding values. Each property is followed |
| immediately by the corresponding desired value. The list is terminated |
| with zero. If a property is not specified in <code class="varname">properties</code>, |
| then its default value is used (it is said to be specified implicitly). If |
| <code class="varname">properties</code> is NULL or empty (points to a list whose first |
| value is zero), all attributes take on their default value. |
| </p> |
| <p> |
| If the extension |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| is enabled, then <code class="varname">properties</code> points to an attribute list, |
| which is a array of ordered <attribute name, value> pairs terminated with |
| zero. If an attribute is not specified in <code class="varname">properties</code>, |
| then its default value is used (it is said to be specified implicitly). If |
| <code class="varname">properties</code> is NULL or empty (points to a list whose first |
| value is zero), all attributes take on their default values. |
| </p> |
| <p>List of supported <code class="varname">properties</code> (Table 4.5)</p> |
| <div class="informaltable"> |
| <table class="informaltable" border="1"> |
| <colgroup> |
| <col align="left" class="col1" /> |
| <col align="left" class="col2" /> |
| <col align="left" class="col3" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th align="left">cl_context_properties enum</th> |
| <th align="left">Property value</th> |
| <th align="left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_PLATFORM</code> |
| </td> |
| <td align="left">cl_platform_id</td> |
| <td align="left">Specifies the platform to use.</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> |
| </td> |
| <td align="left">cl_bool</td> |
| <td align="left">Specifies whether the user is responsible for synchronization |
| between OpenCL and other APIs. Please refer to the specific sections |
| in the OpenCL 2.0 extension specification that describe sharing with |
| other APIs for restrictions on using this flag. If |
| <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> is not specified, a |
| default of <code class="constant">CL_FALSE</code> is assumed. |
| OpenCL / OpenGL sharing does not support the |
| <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> |
| property defined in table 4.5. Specifying this |
| property when creating a context with OpenCL / |
| OpenGL sharing will return an appropriate error.</td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_D3D10_DEVICE_KHR</code> |
| </td> |
| <td align="left"><span class="type">ID3D10Device</span> *</td> |
| <td align="left"> |
| Specifies the <span class="type">ID3D10Device</span> * to use for Direct3D 10 |
| interoperability. The default value is NULL (applies if the extension |
| <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a> |
| is supported) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_ADAPTER_D3D9_KHR</code> |
| </td> |
| <td align="left"><span class="type">IDirect3DDevice9</span> *</td> |
| <td align="left"> |
| Specifies an <span class="type">IDirect3DDevice9</span> |
| to use for D3D9 interop (applies if the |
| <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a> |
| extension is supported) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_ADAPTER_D3D9EX_KHR</code> |
| </td> |
| <td align="left"><span class="type">IDirect3DDeviceEx</span> *</td> |
| <td align="left"> |
| Specifies an <span class="type">IDirect3DDevice9Ex</span> |
| to use for D3D9 interop (applies if the |
| <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a> |
| extension is supported) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_ADAPTER_DXVA_KHR</code> |
| </td> |
| <td align="left"><span class="type">IDXVAHD_Device</span> *</td> |
| <td align="left"> |
| Specifies an <span class="type">IDXVAHD_Device</span> |
| to use for DXVA interop (applies if the |
| <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a> |
| extension is supported) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_GL_CONTEXT_KHR</code> |
| </td> |
| <td align="left">0, OpenGL context handle</td> |
| <td align="left"> |
| OpenGL context to associated |
| the OpenCL context with (available if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CGL_SHAREGROUP_KHR</code> |
| </td> |
| <td align="left">0, CGL share group handle</td> |
| <td align="left"> |
| CGL share group to associate |
| the OpenCL context with (available if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_EGL_DISPLAY_KHR</code> |
| </td> |
| <td align="left"> <code class="constant">EGL_NO_DISPLAY</code>, <span class="type">EGLDisplay</span> handle </td> |
| <td align="left"> |
| EGLDisplay an OpenGL context was created with respect to (available if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_GLX_DISPLAY_KHR</code> |
| </td> |
| <td align="left">None, X handle</td> |
| <td align="left"> |
| X Display an OpenGL context was |
| created with respect to (available if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_WGL_HDC_KHR</code> |
| </td> |
| <td align="left">0, HDC handle</td> |
| <td align="left"> |
| HDC an OpenGL context was created with respect to (available if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_D3D11_DEVICE_KHR</code> |
| </td> |
| <td align="left"><span class="type">ID3D11Device</span> *</td> |
| <td align="left"> |
| Specifies the <span class="type">ID3D11Device</span> * to use for Direct3D |
| 11 interoperability. The default value is NULL. (Applies if the |
| <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a> |
| extension is supported.) |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_MEMORY_INITIALIZE_KHR</code> |
| </td> |
| <td align="left"> |
| <span class="type">cl_context_memory- |
| _initialize_khr</span> |
| </td> |
| <td align="left"> |
| <p> |
| Describes which memory types for the |
| context must be initialized. This is a |
| bit-field, where the following values are |
| currently supported: |
| </p> |
| |
| <p> |
| <code class="constant">CL_CONTEXT_MEMORY_INITIALIZE_LOCAL_KHR</code> - Initialize local memory |
| to zeros. |
| </p> |
| |
| <p> |
| <code class="constant">CL_CONTEXT_MEMORY_INITIALIZE_PRIVATE_KHR</code> - Initialize private |
| memory to zeros. |
| </p> |
| |
| <p> |
| (applies if the |
| <a class="citerefentry" href="cl_khr_initialize_memory.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_initialize_memory</span></span></a> |
| extension is supported) |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td align="left"> |
| <code class="constant">CL_CONTEXT_TERMINATE_KHR</code> |
| </td> |
| <td align="left"> |
| <span class="type">cl_bool</span> |
| </td> |
| <td align="left"> |
| Specifies whether the context can be |
| terminated. The default value is |
| <code class="constant">CL_FALSE</code>. |
| (applies if the |
| <a class="citerefentry" href="cl_khr_terminate_context.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_terminate_context</span></span></a> |
| extension is supported) |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </dd> |
| <dt> |
| <span class="term"> |
| <code class="varname">num_devices</code> |
| </span> |
| </dt> |
| <dd> |
| <p> |
| The number of devices specified in the <code class="varname">devices</code> argument. |
| </p> |
| </dd> |
| <dt> |
| <span class="term"> |
| <code class="varname">devices</code> |
| </span> |
| </dt> |
| <dd> |
| <p> |
| A pointer to a list of unique devices returned by |
| <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a> |
| or sub-devices created by |
| <a class="citerefentry" href="clCreateSubDevices.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubDevices</span></span></a> |
| for a platform. Duplicate devices specified in <code class="varname">devices</code> are ignored. |
| </p> |
| </dd> |
| <dt> |
| <span class="term"> |
| <code class="varname">pfn_notify</code> |
| </span> |
| </dt> |
| <dd> |
| <p> |
| A callback function that can be registered by the application. This callback |
| function will be used by the OpenCL implementation to report information |
| on errors during context creation as well as errors that occur at runtime |
| in this context. This callback function may be called asynchronously by |
| the OpenCL implementation. It is the application's responsibility to ensure |
| that the callback function is thread-safe. If <code class="varname">pfn_notify</code> |
| is NULL, no callback function is registered. The parameters to this callback |
| function are: |
| </p> |
| <p><code class="varname">errinfo</code> is a pointer to an error string.</p> |
| <p> |
| <code class="varname">private_info</code> and <code class="varname">cb</code> represent a pointer |
| to binary data that is returned by the OpenCL implementation that can be used |
| to log additional information helpful in debugging the error. |
| </p> |
| <p><code class="varname">user_data</code> is a pointer to user supplied data.</p> |
| <p> |
| NOTE: There are a number of cases where error notifications need to be |
| delivered due to an error that occurs outside a context. Such notifications |
| may not be delivered through the <code class="varname">pfn_notify</code> callback. Where |
| these notifications go is implementation-defined. |
| </p> |
| </dd> |
| <dt> |
| <span class="term"> |
| <code class="varname">user_data</code> |
| </span> |
| </dt> |
| <dd> |
| <p> |
| Passed as the <code class="varname">user_data</code> argument when |
| <code class="varname">pfn_notify</code> is called. <code class="varname">user_data</code> can |
| be NULL. |
| </p> |
| </dd> |
| <dt> |
| <span class="term"> |
| <code class="varname">errcode_ret</code> |
| </span> |
| </dt> |
| <dd> |
| <p> |
| Returns an appropriate error code. If <code class="varname">errcode_ret</code> is NULL, |
| no error code is returned. |
| </p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a id="notes"></a> |
| <h2>Notes</h2> |
| <p> |
| <code class="function">clCreateContext</code> and |
| <a class="citerefentry" href="clCreateContextFromType.html"><span class="citerefentry"><span class="refentrytitle">clCreateContextFromType</span></span></a> |
| perform an implicit retain. This is very helpful for 3rd party libraries, which |
| typically get a context passed to them by the application. However, it is possible |
| that the application may delete the context without informing the library. Allowing |
| functions to attach to (i.e. retain) and release a context solves the problem of a |
| context being used by a library no longer being valid. |
| </p> |
| <p> |
| If the |
| <a class="citerefentry" href="cl_khr_terminate_context.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_terminate_context</span></span></a> |
| extension is enabled, <code class="constant">CL_CONTEXT_TERMINATE_KHR</code> can be |
| specified in the context properties only if all devices associated with the |
| context support the ability to support context termination (i.e. |
| <code class="constant">CL_DEVICE_TERMINATE_CAPABILITY_CONTEXT_KHR</code> is set for |
| <code class="constant">CL_DEVICE_TERMINATE_CAPABILITY_KHR</code>). Otherwise, context |
| creation fails with error code of <span class="errorname">CL_INVALID_PROPERTY</span>. |
| </p> |
| <p> |
| If the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled: |
| Attributes control sharing of OpenCL memory objects with OpenGL buffer, texture, and |
| renderbuffer objects as described in section 9.7. Depending on the platform-specific API used to |
| bind OpenGL contexts to the window system, the following attributes may be set to identify an |
| OpenGL context: |
| </p> |
| <div class="itemizedlist"> |
| <ul class="itemizedlist" style="list-style-type: disc; "> |
| <li class="listitem" style="list-style-type: disc"> |
| When the CGL binding API is supported, the attribute |
| <code class="constant">CL_CGL_SHAREGROUP_KHR</code> |
| should be set to a <code class="code">CGLShareGroup</code> handle to a |
| CGL share group object. |
| </li> |
| <li class="listitem" style="list-style-type: disc"> |
| When the EGL binding API is supported, the attribute |
| <code class="constant">CL_GL_CONTEXT_KHR</code> should be |
| set to an <code class="code">EGLContext</code>handle to an |
| OpenGL ES or OpenGL context, and the attribute |
| <code class="constant">CL_EGL_DISPLAY_KHR</code> should be |
| set to the EGLDisplay handle of the display used to |
| create the OpenGL ES or OpenGL context. |
| </li> |
| <li class="listitem" style="list-style-type: disc"> |
| When the GLX binding API is supported, the attribute |
| <code class="constant">CL_GL_CONTEXT_KHR</code> should |
| be set to a <code class="code">GLXContext</code> handle to |
| an OpenGL context, and the attribute |
| <code class="constant">CL_GLX_DISPLAY_KHR</code> should |
| be set to the Display handle of the X Window System |
| display used to create the OpenGL context. |
| </li> |
| <li class="listitem" style="list-style-type: disc"> |
| When the WGL binding API is supported, the attribute |
| <code class="constant">CL_GL_CONTEXT_KHR</code> should |
| be set to an HGLRC handle to an OpenGL context, and |
| the attribute <code class="constant">CL_WGL_HDC_KHR</code> |
| should be set to the HDC handle of the display used |
| to create the OpenGL context. |
| </li> |
| </ul> |
| </div> |
| <p> |
| If the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled: |
| Memory objects created in the context so specified may be shared with the specified OpenGL or |
| OpenGL ES context (as well as with any other OpenGL contexts on the share list of that context, |
| according to the description of sharing in the GLX 1.4 and EGL 1.4 specifications, and the WGL |
| documentation for OpenGL implementations on Microsoft Windows), or with the explicitly |
| identified OpenGL share group for CGL. If no OpenGL or OpenGL ES context or share group is |
| specified in the attribute list, then memory objects may not be shared, and calling any of the |
| commands in section 9.7 will result in a <span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> |
| error. |
| </p> |
| </div> |
| <div class="refsect1"> |
| <a id="errors"></a> |
| <h2>Errors</h2> |
| <p> |
| <code class="function">clCreateContext</code> returns a valid non-zero context and |
| <code class="varname">errcode_ret</code> is set to <span class="errorname">CL_SUCCESS</span> if the |
| context is created successfully. Otherwise, it returns a NULL value with the following |
| error values returned in <code class="varname">errcode_ret</code>: |
| </p> |
| <div class="itemizedlist"> |
| <ul class="itemizedlist" style="list-style-type: disc; "> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_PLATFORM</span> if <code class="varname">properties</code> |
| is NULL and no platform could be selected or if platform value specified |
| in <code class="varname">properties</code> is not a valid platform. (If the extension |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| is enabled, then this error is replaced with |
| <code class="constant">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</code>; see below.) |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_PROPERTY</span> if context property name in |
| <code class="varname">properties</code> is not a supported property name, if the |
| value specified for a supported property name is not valid, or if the |
| same property name is specified more than once. However if the extension |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> is |
| enabled, then <code class="constant">CL_INVALID_PROPERTY</code> is returned if an attribute |
| name other than those listed in the table for <code class="varname">properties</code> |
| above or if <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> is specified in |
| <code class="varname">properties</code>. |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_PROPERTY</span> if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled and an attribute name other than those |
| specified in the table above (table 4.5) or if |
| <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> is |
| specified in <code class="varname">properties</code>. |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">devices</code> is NULL; if |
| <code class="varname">num_devices</code> is equal to zero; or if <code class="varname">pfn_notify</code> |
| is NULL but <code class="varname">user_data</code> is not NULL. |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_DEVICE</span> if <code class="varname">devices</code> contains an invalid device. |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if Direct3D 10 interoperability is |
| specified by setting <code class="constant">CL_INVALID_D3D10_DEVICE_KHR</code> to a non-NULL |
| value, and interoperability with another graphics API is also specified (if the |
| <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a> |
| extension is enabled). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_DEVICE_NOT_AVAILABLE</span> if a device in <code class="varname">devices</code> |
| is currently not available even though the device was returned by |
| <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a>. |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate resources |
| required by the OpenCL implementation on the device. |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate |
| resources required by the OpenCL implementation on the host. |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D10_DEVICE_KHR</span> if the Direct3D |
| 10 device specified for interoperability is not compatible with |
| the devices against which the context is to be created (if the |
| <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a> |
| extension is enabled). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D10_DEVICE_KHR</span> if the value of the property |
| <code class="constant">CL_CONTEXT_D3D10_DEVICE_KHR</code> is non-NULL and does not specify |
| a valid Direct3D 10 device with which the <code class="varname">cl_device_ids</code> |
| against which this context is to be created may interoperate (if the |
| <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a> |
| extension is enabled). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> when an invalid OpenGL |
| context or share group object handle is specified in <code class="varname">properties</code> (only |
| if the <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> if no OpenGL or |
| OpenGL ES context or share group is specified in the attribute list given to |
| <a class="citerefentry" href="clCreateContext.html"><span class="citerefentry"><span class="refentrytitle">clCreateContext</span></span></a> |
| and any of the commands in section 9.7 are called. (if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> extension |
| is enabled) |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled and if a context was specified by any of the following means: |
| |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc"> |
| A context specified for an EGL-based OpenGL ES or OpenGL implementation |
| by setting the attributes <code class="constant">CL_GL_CONTEXT_KHR</code> and |
| <code class="constant">CL_EGL_DISPLAY_KHR</code>. |
| </li><li class="listitem" style="list-style-type: disc"> |
| A context was specified for a GLX-based OpenGL implementation by |
| setting the attributes <code class="constant">CL_GL_CONTEXT_KHR</code> and |
| <code class="constant">CL_GLX_DISPLAY_KHR</code>. |
| </li><li class="listitem" style="list-style-type: disc"> |
| A context was specified for a WGL-based OpenGL implementation by |
| setting the attributes <code class="constant">CL_GL_CONTEXT_KHR</code> and |
| <code class="constant">CL_WGL_HDC_KHR</code>. |
| </li></ul></div> |
| |
| and any of the following conditions hold: |
| |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc"> |
| The specified display and context attributes do not identify a valid |
| OpenGL or OpenGL ES context. |
| </li><li class="listitem" style="list-style-type: disc"> |
| The specified context does not support buffer and renderbuffer objects. |
| </li><li class="listitem" style="list-style-type: disc"> |
| The specified context is not compatible with the OpenCL context being |
| created (for example, it exists in a physically distinct address space, |
| such as another hardware device, or does not support sharing data with |
| OpenCL due to implementation restrictions). |
| </li></ul></div></li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> if a |
| share group was specified for a CGL-based OpenGL implementation by |
| setting the attribute <code class="constant">CL_CGL_SHAREGROUP_KHR</code>, and the |
| specified share group does not identify a valid CGL share group object (if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> extension |
| is enabled). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if the |
| <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> |
| extension is enabled and if a context was specified as described above |
| and any of the following conditions hold: |
| |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc"> |
| A context or share group object was specified for one of CGL, EGL, GLX, or WGL |
| and the OpenGL implementation does not support that window-system binding API. |
| </li><li class="listitem" style="list-style-type: disc"> |
| More than one of the attributes <code class="constant">CL_CGL_SHAREGROUP_KHR</code>, |
| <code class="constant">CL_EGL_DISPLAY_KHR</code>, <code class="constant">CL_GLX_DISPLAY_KHR</code>, |
| and <code class="constant">CL_WGL_HDC_KHR</code> is set to a non-default value. |
| </li><li class="listitem" style="list-style-type: disc"> |
| Both of the attributes <code class="constant">CL_CGL_SHAREGROUP_KHR</code> and |
| <code class="constant">CL_GL_CONTEXT_KHR</code> are set to non-default values. |
| </li><li class="listitem" style="list-style-type: disc"> |
| Any of the devices specified in the <code class="varname">devices</code> |
| argument cannot support OpenCL |
| objects which share the data store of an OpenGL object, as described in |
| section 9.7. |
| </li></ul></div></li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_DX9_MEDIA_ADAPTER_KHR</span> if the |
| media adapter specified for interoperability is not compatible with |
| the devices against which the context is to be created (only if the |
| <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a> |
| extension is supported). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ADAPTER_KHR</span> if |
| any of the values of the properties <code class="constant">CL_CONTEXT_ADAPTER_D3D9_KHR</code>, |
| <code class="constant">CL_CONTEXT_ADAPTER_D3D9EX_KHR</code> or |
| <code class="constant">CL_CONTEXT_ADAPTER_DXVA_KHR</code> is non-NULL and |
| does not specify a valid media adapter with which the <code class="varname">cl_device_ids</code> |
| against which this context is to be created may interoperate (only if the |
| <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a> |
| extension is supported). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if interoperability is |
| specified by setting <code class="constant">CL_CONTEXT_ADAPTER_D3D9_KHR</code>, |
| <code class="constant">CL_CONTEXT_ADAPTER_D3D9EX_KHR</code> or |
| <code class="constant">CL_CONTEXT_ADAPTER_DXVA_KHR</code> to a non-NULL value, and |
| interoperability with another graphics API is also specified (only if the |
| <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a> |
| extension is supported). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> |
| if Direct3D 11 interoperability is specified by setting |
| <code class="constant">CL_INVALID_D3D11_DEVICE_KHR</code> to a non-NULL value, and |
| interoperability with another graphics API is also specified (only if the |
| <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a> |
| extension is supported). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D11_DEVICE_KHR</span> if the value of the property |
| <code class="constant">CL_CONTEXT_D3D11_DEVICE_KHR</code> is non-NULL and does not specify |
| a valid Direct3D 11 device with which the <code class="varname">cl_device_ids</code> |
| against which this context is to be created may interoperate (only if the |
| <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a> |
| extension is supported). |
| </li> |
| <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D11_DEVICE_KHR</span> if the Direct3D |
| 11 device specified for interoperability is not compatible with |
| the devices against which the context is to be created (only if the |
| <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a> |
| extension is supported). |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a id="specification"></a> |
| <h2>Specification</h2> |
| <p><img src="pdficon_small1.gif" /> |
| <a href="https://www.khronos.org/registry/cl/specs/opencl-2.1.pdf#page=90" target="OpenCL Spec">OpenCL Specification</a> |
| </p> |
| </div> |
| <div class="refsect1"> |
| <a id="seealso"></a> |
| <h2>Also see</h2> |
| <p> |
| <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a>, |
| <a class="citerefentry" href="clCreateContextFromType.html"><span class="citerefentry"><span class="refentrytitle">clCreateContextFromType</span></span></a>, |
| <a class="citerefentry" href="clRetainContext.html"><span class="citerefentry"><span class="refentrytitle">clRetainContext</span></span></a>, |
| <a class="citerefentry" href="clReleaseContext.html"><span class="citerefentry"><span class="refentrytitle">clReleaseContext</span></span></a>, |
| <a class="citerefentry" href="clGetContextInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetContextInfo</span></span></a> |
| </p> |
| </div> |
| <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 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. |
| </div> |
| </div> |
| </body> |
| </html> |