1 /*
2  * Copyright (C) 2020 Intel Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  */
7 
8 #include "test_api_tracing_common.h"
9 
10 using ::testing::Return;
11 
12 namespace L0 {
13 namespace ult {
14 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListCreateTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)15 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListCreateTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
16     ze_result_t result;
17     driver_ddiTable.core_ddiTable.CommandList.pfnCreate =
18         [](ze_context_handle_t hContext,
19            ze_device_handle_t hDevice,
20            const ze_command_list_desc_t *desc,
21            ze_command_list_handle_t *phCommandList) { return ZE_RESULT_SUCCESS; };
22     ze_command_list_desc_t desc = {};
23     ze_command_list_handle_t commandList = {};
24 
25     prologCbs.CommandList.pfnCreateCb = genericPrologCallbackPtr;
26     epilogCbs.CommandList.pfnCreateCb = genericEpilogCallbackPtr;
27 
28     setTracerCallbacksAndEnableTracer();
29 
30     result = zeCommandListCreate_Tracing(nullptr, nullptr, &desc, &commandList);
31     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
32     EXPECT_EQ(defaultUserData, 1);
33 }
34 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListCreateImmediateTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)35 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListCreateImmediateTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
36     ze_result_t result;
37     driver_ddiTable.core_ddiTable.CommandList.pfnCreateImmediate =
38         [](ze_context_handle_t hContext,
39            ze_device_handle_t hDevice,
40            const ze_command_queue_desc_t *desc,
41            ze_command_list_handle_t *phCommandList) { return ZE_RESULT_SUCCESS; };
42     ze_command_queue_desc_t desc = {};
43     ze_command_list_handle_t commandList = {};
44 
45     prologCbs.CommandList.pfnCreateImmediateCb = genericPrologCallbackPtr;
46     epilogCbs.CommandList.pfnCreateImmediateCb = genericEpilogCallbackPtr;
47 
48     setTracerCallbacksAndEnableTracer();
49 
50     result = zeCommandListCreateImmediate_Tracing(nullptr, nullptr, &desc, &commandList);
51     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
52     EXPECT_EQ(defaultUserData, 1);
53 }
54 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListDestroyTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)55 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListDestroyTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
56     ze_result_t result;
57     driver_ddiTable.core_ddiTable.CommandList.pfnDestroy =
58         [](ze_command_list_handle_t hCommandList) { return ZE_RESULT_SUCCESS; };
59     prologCbs.CommandList.pfnDestroyCb = genericPrologCallbackPtr;
60     epilogCbs.CommandList.pfnDestroyCb = genericEpilogCallbackPtr;
61 
62     setTracerCallbacksAndEnableTracer();
63 
64     result = zeCommandListDestroy_Tracing(nullptr);
65     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
66     EXPECT_EQ(defaultUserData, 1);
67 }
68 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListResetTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)69 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListResetTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
70     ze_result_t result;
71     driver_ddiTable.core_ddiTable.CommandList.pfnReset =
72         [](ze_command_list_handle_t hCommandList) { return ZE_RESULT_SUCCESS; };
73     prologCbs.CommandList.pfnResetCb = genericPrologCallbackPtr;
74     epilogCbs.CommandList.pfnResetCb = genericEpilogCallbackPtr;
75 
76     setTracerCallbacksAndEnableTracer();
77 
78     result = zeCommandListReset_Tracing(nullptr);
79     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
80     EXPECT_EQ(defaultUserData, 1);
81 }
82 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListAppendMemoryPrefetchTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)83 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListAppendMemoryPrefetchTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
84     ze_result_t result;
85     driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryPrefetch =
86         [](ze_command_list_handle_t hCommandList, const void *ptr, size_t size) { return ZE_RESULT_SUCCESS; };
87     prologCbs.CommandList.pfnAppendMemoryPrefetchCb = genericPrologCallbackPtr;
88     epilogCbs.CommandList.pfnAppendMemoryPrefetchCb = genericEpilogCallbackPtr;
89 
90     setTracerCallbacksAndEnableTracer();
91 
92     result = zeCommandListAppendMemoryPrefetch_Tracing(nullptr, nullptr, 0);
93     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
94     EXPECT_EQ(defaultUserData, 1);
95 }
96 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListCloseTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)97 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListCloseTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
98     ze_result_t result;
99     driver_ddiTable.core_ddiTable.CommandList.pfnClose =
100         [](ze_command_list_handle_t hCommandList) { return ZE_RESULT_SUCCESS; };
101     prologCbs.CommandList.pfnCloseCb = genericPrologCallbackPtr;
102     epilogCbs.CommandList.pfnCloseCb = genericEpilogCallbackPtr;
103 
104     setTracerCallbacksAndEnableTracer();
105 
106     result = zeCommandListClose_Tracing(nullptr);
107     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
108     EXPECT_EQ(defaultUserData, 1);
109 }
110 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListAppendQueryKernelTimestampsTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)111 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListAppendQueryKernelTimestampsTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
112     ze_result_t result;
113 
114     driver_ddiTable.core_ddiTable.CommandList.pfnAppendQueryKernelTimestamps =
115         [](ze_command_list_handle_t hCommandList,
116            uint32_t numEvents,
117            ze_event_handle_t *phEvents,
118            void *dstptr,
119            const size_t *pOffsets,
120            ze_event_handle_t hSignalEvent,
121            uint32_t numWaitEvents,
122            ze_event_handle_t *phWaitEvents) { return ZE_RESULT_SUCCESS; };
123 
124     prologCbs.CommandList.pfnAppendQueryKernelTimestampsCb = genericPrologCallbackPtr;
125     epilogCbs.CommandList.pfnAppendQueryKernelTimestampsCb = genericEpilogCallbackPtr;
126 
127     setTracerCallbacksAndEnableTracer();
128 
129     result = zeCommandListAppendQueryKernelTimestamps_Tracing(nullptr, 1U, nullptr, nullptr, nullptr, nullptr, 1U, nullptr);
130     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
131     EXPECT_EQ(defaultUserData, 1);
132 }
133 
TEST_F(zeAPITracingRuntimeTests,WhenCallingCommandListAppendWriteGlobalTimestampTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess)134 TEST_F(zeAPITracingRuntimeTests, WhenCallingCommandListAppendWriteGlobalTimestampTracingWrapperWithOneSetOfPrologEpilogsThenReturnSuccess) {
135     ze_result_t result;
136     driver_ddiTable.core_ddiTable.CommandList.pfnAppendWriteGlobalTimestamp =
137         [](ze_command_list_handle_t hCommandList,
138            uint64_t *dstptr,
139            ze_event_handle_t hSignalEvent,
140            uint32_t numWaitEvents,
141            ze_event_handle_t *phWaitEvents) { return ZE_RESULT_SUCCESS; };
142 
143     prologCbs.CommandList.pfnAppendWriteGlobalTimestampCb = genericPrologCallbackPtr;
144     epilogCbs.CommandList.pfnAppendWriteGlobalTimestampCb = genericEpilogCallbackPtr;
145 
146     setTracerCallbacksAndEnableTracer();
147 
148     result = zeCommandListAppendWriteGlobalTimestamp_Tracing(nullptr, nullptr, nullptr, 1U, nullptr);
149     EXPECT_EQ(ZE_RESULT_SUCCESS, result);
150     EXPECT_EQ(defaultUserData, 1);
151 }
152 
153 } // namespace ult
154 } // namespace L0
155