diff options
author | Gil Pitney <gil.pitney@linaro.org> | 2014-10-28 18:00:42 -0700 |
---|---|---|
committer | Gil Pitney <gil.pitney@linaro.org> | 2014-10-28 18:00:42 -0700 |
commit | 61b2c94d9e64758e55730be6a3fc9006c171db85 (patch) | |
tree | f564f09ebf93ba293dfa225bd374df6f1f37aa01 /src/api/api_sampler.cpp |
Initial Commit: Based on TI OpenCL v0.8, originally based on clover.shamrock_v0.8
This is a continuation of the clover OpenCL project:
http://people.freedesktop.org/~steckdenis/clover
based on the contributions from Texas Instruments for Keystone II DSP device:
git.ti.com/opencl
and adding contributions from Linaro for ARM CPU-only support.
See README.txt for more info, and build instructions.
Signed-off-by: Gil Pitney <gil.pitney@linaro.org>
Diffstat (limited to 'src/api/api_sampler.cpp')
-rw-r--r-- | src/api/api_sampler.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/api/api_sampler.cpp b/src/api/api_sampler.cpp new file mode 100644 index 0000000..9bd2dec --- /dev/null +++ b/src/api/api_sampler.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2011, Denis Steckelmacher <steckdenis@yahoo.fr> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the copyright holder nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file api_sampler.cpp + * \brief Samplers + */ + +#include "CL/cl.h" + +#include "core/sampler.h" +#include "core/context.h" + +// Sampler APIs +cl_sampler +clCreateSampler(cl_context context, + cl_bool normalized_coords, + cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, + cl_int * errcode_ret) +{ + cl_int dummy_errcode; + + if (!errcode_ret) + errcode_ret = &dummy_errcode; + + if (!context->isA(Coal::Object::T_Context)) + { + *errcode_ret = CL_INVALID_CONTEXT; + return 0; + } + + *errcode_ret = CL_SUCCESS; + + Coal::Sampler *sampler = new Coal::Sampler((Coal::Context *)context, + normalized_coords, + addressing_mode, + filter_mode, + errcode_ret); + + if (*errcode_ret != CL_SUCCESS) + { + delete sampler; + return 0; + } + + return (cl_sampler)sampler; +} + +cl_int +clRetainSampler(cl_sampler sampler) +{ + if (!sampler->isA(Coal::Object::T_Sampler)) + return CL_INVALID_SAMPLER; + + sampler->reference(); + + return CL_SUCCESS; +} + +cl_int +clReleaseSampler(cl_sampler sampler) +{ + if (!sampler->isA(Coal::Object::T_Sampler)) + return CL_INVALID_SAMPLER; + + if (sampler->dereference()) + delete sampler; + + return CL_SUCCESS; +} + +cl_int +clGetSamplerInfo(cl_sampler sampler, + cl_sampler_info param_name, + size_t param_value_size, + void * param_value, + size_t * param_value_size_ret) +{ + if (!sampler->isA(Coal::Object::T_Sampler)) + return CL_INVALID_SAMPLER; + + return sampler->info(param_name, param_value_size, param_value, + param_value_size_ret); +} |