@@ -190,6 +190,31 @@ HWTEST_F(SamplerSetArgTest, GivenSamplerObjectWhenSetKernelArgIsCalledThenIncrea
190190 ASSERT_EQ (CL_SUCCESS, retVal);
191191}
192192
193+ HWTEST_F (SamplerSetArgTest, GivenSamplerObjectWhenSetKernelArgIsCalledThenSamplerObjectSurvivesClReleaseSampler) {
194+ cl_sampler samplerObj = Sampler::create (
195+ context,
196+ CL_TRUE,
197+ CL_ADDRESS_MIRRORED_REPEAT,
198+ CL_FILTER_NEAREST,
199+ retVal);
200+
201+ auto pSampler = castToObject<Sampler>(samplerObj);
202+ auto refCountBefore = pSampler->getRefInternalCount ();
203+
204+ retVal = pKernel->setArg (
205+ 0 ,
206+ sizeof (samplerObj),
207+ &samplerObj);
208+ ASSERT_EQ (CL_SUCCESS, retVal);
209+
210+ retVal = clReleaseSampler (samplerObj);
211+ ASSERT_EQ (CL_SUCCESS, retVal);
212+
213+ auto refCountAfter = pSampler->getRefInternalCount ();
214+
215+ EXPECT_EQ (refCountBefore, refCountAfter);
216+ }
217+
193218HWTEST_F (SamplerSetArgTest, GivenSamplerObjectWhenSetKernelArgIsCalledAndKernelIsDeletedThenRefCountIsUnchanged) {
194219 auto myKernel = std::make_unique<MockKernel>(program.get (), *pKernelInfo, *pDevice);
195220 ASSERT_NE (nullptr , myKernel.get ());
@@ -234,9 +259,7 @@ HWTEST_F(SamplerSetArgTest, GivenNewSamplerObjectWhensSetKernelArgIsCalledThenDe
234259 CL_FILTER_NEAREST,
235260 retVal);
236261
237- auto clSamplerObj = *(static_cast <const cl_sampler *>(&samplerObj));
238- cl_sampler s = clSamplerObj;
239- auto pSampler = castToObjectOrAbort<Sampler>(s);
262+ auto pSampler = castToObject<Sampler>(samplerObj);
240263
241264 retVal = pKernel->setArg (
242265 0 ,
0 commit comments