@@ -91,13 +91,27 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenLocalAddressAndNullArgValueWhenSettin
9191 EXPECT_EQ (CL_INVALID_ARG_VALUE, retVal);
9292}
9393
94- TEST_F (clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgThenInvalidArgValueErrorIsReturned ) {
94+ TEST_F (clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgAndDebugVarSetThenInvalidArgValueErrorIsReturned ) {
9595 pDevice->deviceInfo .sharedSystemMemCapabilities = 0u ;
9696 pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0 ;
9797 void *ptrHost = malloc (256 );
9898 EXPECT_NE (nullptr , ptrHost);
9999
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 (
101115 pMockMultiDeviceKernel, // cl_kernel kernel
102116 0 , // cl_uint arg_index
103117 ptrHost // const void *arg_value
@@ -107,6 +121,44 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenInvalidArgValueWhenSettingKernelArgTh
107121 free (ptrHost);
108122}
109123
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+
110162TEST_F (clSetKernelArgSVMPointerTests, GivenSvmAndNullArgValueWhenSettingKernelArgThenSuccessIsReturned) {
111163 const ClDeviceInfo &devInfo = pDevice->getDeviceInfo ();
112164 if (devInfo.svmCapabilities != 0 ) {
@@ -173,10 +225,13 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithOffsetWhenSettingKer
173225 }
174226}
175227
176- TEST_F (clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSettingKernelArgThenInvalidArgValueErrorIsReturned ) {
228+ TEST_F (clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSettingKernelArgAndDebugVarSetThenInvalidArgValueErrorIsReturned ) {
177229 pDevice->deviceInfo .sharedSystemMemCapabilities = 0u ;
178230 pDevice->getRootDeviceEnvironment ().getMutableHardwareInfo ()->capabilityTable .sharedSystemMemCapabilities = 0 ;
179231 const ClDeviceInfo &devInfo = pDevice->getDeviceInfo ();
232+ DebugManagerStateRestore restore;
233+ debugManager.flags .DetectIncorrectPointersOnSetArgCalls .set (1 );
234+
180235 if (devInfo.svmCapabilities != 0 ) {
181236 void *ptrSvm = clSVMAlloc (pContext, CL_MEM_READ_WRITE, 256 , 4 );
182237 auto svmData = pContext->getSVMAllocsManager ()->getSVMAlloc (ptrSvm);
@@ -197,6 +252,33 @@ TEST_F(clSetKernelArgSVMPointerTests, GivenSvmAndPointerWithInvalidOffsetWhenSet
197252 }
198253}
199254
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+
200282TEST_F (clSetKernelArgSVMPointerTests, givenSvmAndValidArgValueWhenSettingSameKernelArgThenSetArgSvmAllocCalledOnlyWhenNeeded) {
201283 const ClDeviceInfo &devInfo = pDevice->getDeviceInfo ();
202284 if (devInfo.svmCapabilities != 0 ) {
0 commit comments