@@ -91,13 +91,27 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenLocalAddressAndNullArgValueWhenSettin
91
91
EXPECT_EQ (CL_INVALID_ARG_VALUE, retVal);
92
92
}
93
93
94
- TEST_F (clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgThenInvalidArgValueErrorIsReturned ) {
94
+ TEST_F (clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgAndDebugVarSetThenInvalidArgValueErrorIsReturned ) {
95
95
pDevice->deviceInfo .sharedSystemMemCapabilities = 0u ;
96
96
pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0 ;
97
97
void *ptrHost = malloc (256 );
98
98
EXPECT_NE (nullptr , ptrHost);
99
99
100
- auto retVal = clSetKernelArgSVMPointer (
100
+ DebugManagerStateRestore restore;
101
+ debugManager.flags .DetectIncorrectPointersOnSetArgCalls .set (1 );
102
+
103
+ cl_int retVal = clSetKernelArgSVMPointer (
104
+ pMockMultiDeviceKernel, // cl_kernel kernel
105
+ 0 , // cl_uint arg_index
106
+ ptrHost // const void *arg_value
107
+ );
108
+ EXPECT_EQ (CL_INVALID_ARG_VALUE, retVal);
109
+
110
+ pDevice->deviceInfo .sharedSystemMemCapabilities = 0xF ;
111
+ pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0xF ;
112
+ debugManager.flags .EnableSharedSystemUsmSupport .set (0 );
113
+
114
+ retVal = clSetKernelArgSVMPointer (
101
115
pMockMultiDeviceKernel, // cl_kernel kernel
102
116
0 , // cl_uint arg_index
103
117
ptrHost // const void *arg_value
@@ -107,6 +121,44 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgTh
107
121
free (ptrHost);
108
122
}
109
123
124
+ TEST_F (clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgAndDebugVarNotSetThenSuccessIsReturned) {
125
+ pDevice->deviceInfo .sharedSystemMemCapabilities = 0u ;
126
+ pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0 ;
127
+ void *ptrHost = malloc (256 );
128
+ EXPECT_NE (nullptr , ptrHost);
129
+
130
+ DebugManagerStateRestore restore;
131
+ debugManager.flags .DetectIncorrectPointersOnSetArgCalls .set (-1 );
132
+
133
+ auto retVal = clSetKernelArgSVMPointer (
134
+ pMockMultiDeviceKernel, // cl_kernel kernel
135
+ 0 , // cl_uint arg_index
136
+ ptrHost // const void *arg_value
137
+ );
138
+ EXPECT_EQ (CL_SUCCESS, retVal);
139
+
140
+ free (ptrHost);
141
+ }
142
+
143
+ TEST_F (clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgAndDebugVarSetAndSharedSystemCapabilitesNonZeroThenSuccessIsReturned) {
144
+ pDevice->deviceInfo .sharedSystemMemCapabilities = 0xF ;
145
+ pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0xF ;
146
+ void *ptrHost = malloc (256 );
147
+ EXPECT_NE (nullptr , ptrHost);
148
+
149
+ DebugManagerStateRestore restore;
150
+ debugManager.flags .DetectIncorrectPointersOnSetArgCalls .set (1 );
151
+
152
+ auto retVal = clSetKernelArgSVMPointer (
153
+ pMockMultiDeviceKernel, // cl_kernel kernel
154
+ 0 , // cl_uint arg_index
155
+ ptrHost // const void *arg_value
156
+ );
157
+ EXPECT_EQ (CL_SUCCESS, retVal);
158
+
159
+ free (ptrHost);
160
+ }
161
+
110
162
TEST_F (clSetKernelArgSVMPointerTests, GivenSvmAndNullArgValueWhenSettingKernelArgThenSuccessIsReturned) {
111
163
const ClDeviceInfo &devInfo = pDevice->getDeviceInfo ();
112
164
if (devInfo.svmCapabilities != 0 ) {
@@ -173,10 +225,13 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithOffsetWhenSettingKer
173
225
}
174
226
}
175
227
176
- TEST_F (clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSettingKernelArgThenInvalidArgValueErrorIsReturned ) {
228
+ TEST_F (clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSettingKernelArgAndDebugVarSetThenInvalidArgValueErrorIsReturned ) {
177
229
pDevice->deviceInfo .sharedSystemMemCapabilities = 0u ;
178
230
pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0 ;
179
231
const ClDeviceInfo &devInfo = pDevice->getDeviceInfo ();
232
+ DebugManagerStateRestore restore;
233
+ debugManager.flags .DetectIncorrectPointersOnSetArgCalls .set (1 );
234
+
180
235
if (devInfo.svmCapabilities != 0 ) {
181
236
void *ptrSvm = clSVMAlloc (pContext, CL_MEM_READ_WRITE, 256 , 4 );
182
237
auto svmData = pContext->getSVMAllocsManager ()->getSVMAlloc (ptrSvm);
@@ -197,6 +252,33 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSet
197
252
}
198
253
}
199
254
255
+ TEST_F (clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSettingKernelArgAndDebugVarNotSetThenSuccessIsReturned) {
256
+ pDevice->deviceInfo .sharedSystemMemCapabilities = 0u ;
257
+ pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0 ;
258
+ const ClDeviceInfo &devInfo = pDevice->getDeviceInfo ();
259
+ DebugManagerStateRestore restore;
260
+ debugManager.flags .DetectIncorrectPointersOnSetArgCalls .set (-1 );
261
+
262
+ if (devInfo.svmCapabilities != 0 ) {
263
+ void *ptrSvm = clSVMAlloc (pContext, CL_MEM_READ_WRITE, 256 , 4 );
264
+ auto svmData = pContext->getSVMAllocsManager ()->getSVMAlloc (ptrSvm);
265
+ ASSERT_NE (nullptr , svmData);
266
+ auto svmAlloc = svmData->gpuAllocations .getGraphicsAllocation (pContext->getDevice (0 )->getRootDeviceIndex ());
267
+ EXPECT_NE (nullptr , svmAlloc);
268
+
269
+ size_t offset = svmAlloc->getUnderlyingBufferSize () + 1 ;
270
+
271
+ auto retVal = clSetKernelArgSVMPointer (
272
+ pMockMultiDeviceKernel, // cl_kernel kernel
273
+ 0 , // cl_uint arg_index
274
+ (char *)ptrSvm + offset // const void *arg_value
275
+ );
276
+ EXPECT_EQ (CL_SUCCESS, retVal);
277
+
278
+ clSVMFree (pContext, ptrSvm);
279
+ }
280
+ }
281
+
200
282
TEST_F (clSetKernelArgSVMPointerTests, givenSvmAndValidArgValueWhenSettingSameKernelArgThenSetArgSvmAllocCalledOnlyWhenNeeded) {
201
283
const ClDeviceInfo &devInfo = pDevice->getDeviceInfo ();
202
284
if (devInfo.svmCapabilities != 0 ) {
0 commit comments