1/******************************************************************************* 2 * Copyright (c) 2018 The Khronos Group Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and/or associated documentation files (the 6 * "Materials"), to deal in the Materials without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sublicense, and/or sell copies of the Materials, and to 9 * permit persons to whom the Materials are furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included 13 * in all copies or substantial portions of the Materials. 14 * 15 * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS 16 * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS 17 * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT 18 * https://www.khronos.org/registry/ 19 * 20 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 23 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 24 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 25 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 26 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 27 ******************************************************************************/ 28 29#ifndef __CL_VERSION_H 30#define __CL_VERSION_H 31 32/* Detect which version to target */ 33#if !defined(CL_TARGET_OPENCL_VERSION) 34#pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)") 35#define CL_TARGET_OPENCL_VERSION 220 36#endif 37#if CL_TARGET_OPENCL_VERSION != 100 && \ 38 CL_TARGET_OPENCL_VERSION != 110 && \ 39 CL_TARGET_OPENCL_VERSION != 120 && \ 40 CL_TARGET_OPENCL_VERSION != 200 && \ 41 CL_TARGET_OPENCL_VERSION != 210 && \ 42 CL_TARGET_OPENCL_VERSION != 220 43#pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220). Defaulting to 220 (OpenCL 2.2)") 44#undef CL_TARGET_OPENCL_VERSION 45#define CL_TARGET_OPENCL_VERSION 220 46#endif 47 48 49/* OpenCL Version */ 50#if CL_TARGET_OPENCL_VERSION >= 220 && !defined(CL_VERSION_2_2) 51#define CL_VERSION_2_2 1 52#endif 53#if CL_TARGET_OPENCL_VERSION >= 210 && !defined(CL_VERSION_2_1) 54#define CL_VERSION_2_1 1 55#endif 56#if CL_TARGET_OPENCL_VERSION >= 200 && !defined(CL_VERSION_2_0) 57#define CL_VERSION_2_0 1 58#endif 59#if CL_TARGET_OPENCL_VERSION >= 120 && !defined(CL_VERSION_1_2) 60#define CL_VERSION_1_2 1 61#endif 62#if CL_TARGET_OPENCL_VERSION >= 110 && !defined(CL_VERSION_1_1) 63#define CL_VERSION_1_1 1 64#endif 65#if CL_TARGET_OPENCL_VERSION >= 100 && !defined(CL_VERSION_1_0) 66#define CL_VERSION_1_0 1 67#endif 68 69/* Allow deprecated APIs for older OpenCL versions. */ 70#if CL_TARGET_OPENCL_VERSION <= 210 && !defined(CL_USE_DEPRECATED_OPENCL_2_1_APIS) 71#define CL_USE_DEPRECATED_OPENCL_2_1_APIS 72#endif 73#if CL_TARGET_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) 74#define CL_USE_DEPRECATED_OPENCL_2_0_APIS 75#endif 76#if CL_TARGET_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) 77#define CL_USE_DEPRECATED_OPENCL_1_2_APIS 78#endif 79#if CL_TARGET_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) 80#define CL_USE_DEPRECATED_OPENCL_1_1_APIS 81#endif 82#if CL_TARGET_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS) 83#define CL_USE_DEPRECATED_OPENCL_1_0_APIS 84#endif 85 86#endif /* __CL_VERSION_H */ 87