88//
99// ===----------------------------------------------------------------------===//
1010
11+ #include " sampler.hpp"
1112#include " common.hpp"
1213#include " context.hpp"
1314
@@ -144,10 +145,10 @@ ur_result_t urSamplerCreate(ur_context_handle_t hContext,
144145 cl_filter_mode FilterMode = ur2CLFilterMode (pDesc->filterMode );
145146
146147 // Always call OpenCL 1.0 API
147- *phSampler = cl_adapter::cast< ur_sampler_handle_t >( clCreateSampler (
148+ cl_sampler Sampler = clCreateSampler (
148149 hContext->get (), static_cast <cl_bool>(pDesc->normalizedCoords ),
149- AddressingMode, FilterMode, cl_adapter::cast<cl_int *>(&ErrorCode))) ;
150-
150+ AddressingMode, FilterMode, cl_adapter::cast<cl_int *>(&ErrorCode));
151+ *phSampler = new ur_sampler_handle_t_ (Sampler, hContext);
151152 return mapCLErrorToUR (ErrorCode);
152153}
153154
@@ -158,10 +159,13 @@ urSamplerGetInfo(ur_sampler_handle_t hSampler, ur_sampler_info_t propName,
158159 static_assert (sizeof (cl_addressing_mode) ==
159160 sizeof (ur_sampler_addressing_mode_t ));
160161
162+ UrReturnHelper ReturnValue (propSize, pPropValue, pPropSizeRet);
163+ if (SamplerInfo == CL_SAMPLER_CONTEXT) {
164+ return ReturnValue (hSampler->Context );
165+ }
161166 size_t CheckPropSize = 0 ;
162- ur_result_t Err = mapCLErrorToUR (
163- clGetSamplerInfo (cl_adapter::cast<cl_sampler>(hSampler), SamplerInfo,
164- propSize, pPropValue, &CheckPropSize));
167+ ur_result_t Err = mapCLErrorToUR (clGetSamplerInfo (
168+ hSampler->get (), SamplerInfo, propSize, pPropValue, &CheckPropSize));
165169 if (pPropValue && CheckPropSize != propSize) {
166170 return UR_RESULT_ERROR_INVALID_SIZE;
167171 }
@@ -178,27 +182,24 @@ urSamplerGetInfo(ur_sampler_handle_t hSampler, ur_sampler_info_t propName,
178182
179183UR_APIEXPORT ur_result_t UR_APICALL
180184urSamplerRetain (ur_sampler_handle_t hSampler) {
181- return mapCLErrorToUR (
182- clRetainSampler (cl_adapter::cast<cl_sampler>(hSampler)));
185+ return mapCLErrorToUR (clRetainSampler (hSampler->get ()));
183186}
184187
185188UR_APIEXPORT ur_result_t UR_APICALL
186189urSamplerRelease (ur_sampler_handle_t hSampler) {
187- return mapCLErrorToUR (
188- clReleaseSampler (cl_adapter::cast<cl_sampler>(hSampler)));
190+ return mapCLErrorToUR (clReleaseSampler (hSampler->get ()));
189191}
190192
191193UR_APIEXPORT ur_result_t UR_APICALL urSamplerGetNativeHandle (
192194 ur_sampler_handle_t hSampler, ur_native_handle_t *phNativeSampler) {
193- *phNativeSampler = reinterpret_cast <ur_native_handle_t >(
194- cl_adapter::cast<cl_sampler>(hSampler));
195+ *phNativeSampler = reinterpret_cast <ur_native_handle_t >(hSampler->get ());
195196 return UR_RESULT_SUCCESS;
196197}
197198
198199UR_APIEXPORT ur_result_t UR_APICALL urSamplerCreateWithNativeHandle (
199- ur_native_handle_t hNativeSampler, ur_context_handle_t ,
200+ ur_native_handle_t hNativeSampler, ur_context_handle_t hContext ,
200201 const ur_sampler_native_properties_t *, ur_sampler_handle_t *phSampler) {
201- *phSampler = reinterpret_cast <ur_sampler_handle_t >(
202- cl_adapter::cast<cl_sampler>(hNativeSampler) );
202+ cl_sampler NativeHandle = reinterpret_cast <cl_sampler>(hNativeSampler);
203+ *phSampler = new ur_sampler_handle_t_ (NativeHandle, hContext );
203204 return UR_RESULT_SUCCESS;
204205}
0 commit comments