diff options
Diffstat (limited to 'glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt')
-rw-r--r-- | glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt new file mode 100644 index 0000000..cc54749 --- /dev/null +++ b/glew/auto/EGL-Registry/extensions/NV/EGL_NV_cuda_event.txt @@ -0,0 +1,206 @@ +Name + + NV_cuda_event + +Name Strings + + EGL_NV_cuda_event + +Contributors + + Debalina Bhattacharjee + Michael Chock + James Jones + Daniel Kartch + +Contact + + Michael Chock (mchock 'at' nvidia.com) + +Status + + Complete + +Version + + Version 2, June 28, 2018 + +Number + + EGL Extension #75 + +Extension Type + + EGL display extension + +Dependencies + + This extension is written against the language of EGL 1.5 and the + EGL_EXT_sync_reuse extension. + + Either EGL_KHR_fence_sync and the EGLAttrib type or EGL 1.5 are + required. + + This extension interacts with, but does not require, + EGL_EXT_sync_reuse. + + This extension interacts with EGL_NV_device_cuda. + +Overview + + This extension allows creating an EGL sync object linked to a CUDA + event object, potentially improving efficiency of sharing images and + compute results between the two APIs. + +IP Status + + No known claims. + +New Types + + A pointer to type cudaEvent_t, defined in the CUDA header files, may + be included in the attribute list passed to eglCreateSync. + +New Procedures and Functions + + None. + +New Tokens + + Accepted as attribute names in the <attrib_list> argument + of eglCreateSync: + + EGL_CUDA_EVENT_HANDLE_NV 0x323B + + Returned in <values> for eglGetSyncAttrib <attribute> + EGL_SYNC_TYPE: + + EGL_SYNC_CUDA_EVENT_NV 0x323C + + Returned in <values> for eglGetSyncAttrib <attribute> + EGL_SYNC_CONDITION: + + EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D + +Add to section 3.8.1 (Sync Objects) of the EGL 1.5 specification, after +the sixth paragraph: + + Likewise, a <CUDA event sync object> reflects the status of a + corresponding CUDA object. Waiting on this type of sync object is + equivalent to waiting for completion of the corresponding linked + CUDA event object. + +Add a new section following section 3.8.1.2 (Creating and Signaling +OpenCL Event Sync Objects): + + Section 3.8.1.X Creating and Signaling CUDA Event Sync Objects + + If <type> is EGL_SYNC_CUDA_EVENT_NV, a CUDA event sync object is + created. The <attrib_list> may contain the attribute + EGL_CUDA_EVENT_HANDLE_NV, set to a pointer to a cudaEvent_t object. + If it does not contain this attribute, the sync object will start in + the signaled state, and an event attribute must be provided the + first time eglUnsignalSyncEXT is called. Otherwise, a call to + eglUnsignalSyncEXT may replace this event attribute or leave it + unspecified, causing the previous object to be reused. + + A cudaEvent_t object provided to eglCreateSync or eglUnsignalSyncEXT + must be properly initialized and recorded by the CUDA API (using + cudaEventCreate and cudaEventRecord), and the CUDA device + used to create the event must correspond to <dpy>[fn1]. Note that + EGL_CUDA_EVENT_HANDLE_NV is not a queryable property of a sync + object. + + [fn1] If EGL_NV_device_cuda is supported, it is sufficient that the + CUDA device used to create the CUDA event matches the + EGL_CUDA_DEVICE_NV attribute of <dpy>'s underlying EGL + device. + + Attributes of the CUDA event sync object are set as follows: + + Attribute Name Initial Attribute Value(s) + ------------- -------------------------- + EGL_SYNC_TYPE EGL_SYNC_CUDA_EVENT_NV + EGL_SYNC_STATUS Depends on status of <event> + EGL_SYNC_CONDITION EGL_SYNC_CUDA_EVENT_COMPLETE_NV + + If an <event> is linked to the sync object, the status of this type + of sync object depends on the state of <event> evaluated at the time + of the most recent call to eglCreateSync or eglUnsignalSyncEXT. If + all device work preceding the most recent call to cudaEventRecord on + the event has not yet completed, the status of the linked sync + object will be EGL_UNSIGNALED. If all such work has completed, the + status of the linked sync object will be EGL_SIGNALED. Calling + cudaEventRecord to modify an event has no effect on the sync object + while its status is EGL_UNSIGNALED, but will have an effect if the + event is reevaluated at a subsequent eglUnsignalSyncEXT call. + + The only condition supported for CUDA event sync objects is + EGL_SYNC_CUDA_EVENT_COMPLETE_NV. It is satisfied when all device + work prior to the most recent call to cudaEventRecord at sync + unsignaling time has completed. + +If EGL_EXT_sync_reuse is not present, then change the second sentence of +3.8.1.X above to "The <attrib_list> must contain ..." and omit the +remaining sentences in the paragraph. Omit all references to +eglUnsignalSyncEXT. + +In 3.8.1 (Sync Objects), if EGL_EXT_sync_reuse is present, then add the +following to the error list for eglUnsignalSyncEXT. Otherwise add it to +the error list for eglCreateSync: + + If <type> is EGL_SYNC_CUDA_EVENT_NV and a EGL_CUDA_EVENT_HANDLE_NV + is not linked to the sync object, then an EGL_BAD_ATTRIBUTE error is + generated. If its attribute value is not a valid CUDA event pointer + or has not been initialized as described above, then + EGL_BAD_ATTRIBUTE may be generated, but the results are undefined + and may include program termination. + +Modify the third paragraph of section 3.8.1.4 (Querying Sync Object +Attributes): + + If any eglClientWaitSync or eglWaitSync commands are blocking on + <sync> when eglDestroySync is called, <sync> is flagged for deletion + and will be deleted when the associated fence command, OpenCL event + object, or CUDA event object has completed, and <sync> is no longer + blocking any such egl*WaitSync command. Otherwise, the sync object + is destroyed immediately. + +Replace the EGL_SYNC_CONDITION row of table 3.9 with: + + Attribute Description Supported Sync Objects + ------------------ ----------------------- ---------------------- + EGL_SYNC_CONDITION Signaling condition EGL_SYNC_FENCE, + EGL_SYNC_CL_EVENT, or + EGL_SYNC_CUDA_EVENT_NV + + Table 3.9 Attributes Accepted by eglGetSyncAttrib + + +Interactions with EGL versions prior to 1.5 + + This extension may be used with earlier versions of EGL, provided + that the EGL_KHR_fence_sync extension is supported. In this case, + replace all references to sync functions and tokens with + corresponding KHR-suffixed versions (e.g., replace eglCreateSync + with eglCreateSyncKHR). + + Additionally, this extension may be used with the 64-bit types and + functions added to EGL_KHR_fence_sync introduced by + EGL_KHR_cl_event2 (EGLAttribKHR and eglCreateSync64KHR). Support + for OpenCL events is not required. + +Issues + + None + +Revision History + + Version 2, 2018/06/28 (Daniel Kartch) + - Rewritten to clearly define interactions with + EGL_EXT_sync_reuse, without requiring it + - Fixed incorrect CUDA function name + - Fixed table spacing + + Version 1, 2014/06/20 (Michael Chock) + - initial version. |