VPI - Vision Programming Interface

0.2.0 Release

Event.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019 NVIDIA Corporation. All rights reserved.
3  *
4  * NOTICE TO LICENSEE:
5  *
6  * This source code and/or documentation ("Licensed Deliverables") are
7  * subject to NVIDIA intellectual property rights under U.S. and
8  * international Copyright laws.
9  *
10  * These Licensed Deliverables contained herein is PROPRIETARY and
11  * CONFIDENTIAL to NVIDIA and is being provided under the terms and
12  * conditions of a form of NVIDIA software license agreement by and
13  * between NVIDIA and Licensee ("License Agreement") or electronically
14  * accepted by Licensee. Notwithstanding any terms or conditions to
15  * the contrary in the License Agreement, reproduction or disclosure
16  * of the Licensed Deliverables to any third party without the express
17  * written consent of NVIDIA is prohibited.
18  *
19  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
20  * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
21  * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
22  * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
23  * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
24  * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
25  * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
26  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
27  * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
28  * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
29  * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
30  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
31  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
32  * OF THESE LICENSED DELIVERABLES.
33  *
34  * U.S. Government End Users. These Licensed Deliverables are a
35  * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
36  * 1995), consisting of "commercial computer software" and "commercial
37  * computer software documentation" as such terms are used in 48
38  * C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
39  * only as a commercial end item. Consistent with 48 C.F.R.12.212 and
40  * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
41  * U.S. Government End Users acquire the Licensed Deliverables with
42  * only those rights set forth herein.
43  *
44  * Any use of the Licensed Deliverables in individual and commercial
45  * software must include, in the user documentation and internal
46  * comments to the code, the above Disclaimer and U.S. Government End
47  * Users Notice.
48  */
49 
56 #ifndef NV_VPI_EVENT_H
57 #define NV_VPI_EVENT_H
58 
87 #include "Export.h"
88 #include "Status.h"
89 #include "Types.h"
90 
91 #include <stdint.h>
92 
93 #ifdef __cplusplus
94 extern "C" {
95 #endif
96 
101 typedef struct CUevent_st *CUevent;
102 
105 #define VPI_EVENT_DISABLE_PVA VPI_BACKEND_DISABLE_PVA
106 #define VPI_EVENT_DISABLE_CPU VPI_BACKEND_DISABLE_CPU
107 #define VPI_EVENT_DISABLE_CUDA VPI_BACKEND_DISABLE_CUDA
108 #define VPI_EVENT_DISABLE_TIMESTAMP \
109  0x08
112 #define VPI_EVENT_ONLY_PVA VPI_BACKEND_ONLY_PVA
113 #define VPI_EVENT_ONLY_CPU VPI_BACKEND_ONLY_CPU
114 #define VPI_EVENT_ONLY_CUDA VPI_BACKEND_ONLY_CUDA
119 #define VPI_EVENT_NO_PVA VPI_EVENT_DISABLE_PVA
120 #define VPI_EVENT_NO_CPU VPI_EVENT_DISABLE_CPU
121 #define VPI_EVENT_NO_CUDA VPI_EVENT_DISABLE_CUDA
132 VPI_PUBLIC VPIStatus vpiEventCreate(uint32_t flags, VPIEvent *event);
133 
139 VPI_PUBLIC void vpiEventDestroy(VPIEvent event);
140 
154 VPI_PUBLIC VPIStatus vpiEventWrapCudaEvent(CUevent cudaEvent, VPIEvent *event);
155 
168 VPI_PUBLIC VPIStatus vpiEventRecord(VPIEvent event, VPIStream stream);
169 
178 VPI_PUBLIC VPIStatus vpiEventSync(VPIEvent event);
179 
189 VPI_PUBLIC VPIStatus vpiEventQuery(VPIEvent event);
190 
203 VPI_PUBLIC VPIStatus vpiEventElapsedTime(VPIEvent start, VPIEvent end, float *msec);
204 
205 #ifdef __cplusplus
206 }
207 #endif
208  // end of VPI_Event
210 
211 #endif // NV_VPI_EVENT_H
vpiEventElapsedTime
VPIStatus vpiEventElapsedTime(VPIEvent start, VPIEvent end, float *msec)
Computes the elapsed time in (msec) between two completed events.
Export.h
vpiEventSync
VPIStatus vpiEventSync(VPIEvent event)
Blocks the calling thread until the event is completed.
Types.h
vpiEventRecord
VPIStatus vpiEventRecord(VPIEvent event, VPIStream stream)
Captures in the event the contents of the stream command queue at the time of this call.
VPIEvent
struct VPIEventImpl * VPIEvent
Definition: Types.h:158
VPIStatus
VPIStatus
Error codes.
Definition: Types.h:488
vpiEventWrapCudaEvent
VPIStatus vpiEventWrapCudaEvent(CUevent cudaEvent, VPIEvent *event)
Create an event object by wrapping around an existing CUDA CUevent object.
Status.h
VPIStream
struct VPIStreamImpl * VPIStream
Definition: Types.h:164
vpiEventDestroy
void vpiEventDestroy(VPIEvent event)
Destroy an event instance as well as all resources it owns.
vpiEventQuery
VPIStatus vpiEventQuery(VPIEvent event)
Queries the status of all work currently captured by the event.