| /* |
| * Copyright (c) 2020 The Khronos Group Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * OpenCL is a trademark of Apple Inc. used under license by Khronos. |
| */ |
| |
| #include "icd_print_layer.h" |
| |
| struct _cl_icd_dispatch dispatch = {NULL}; |
| |
| const struct _cl_icd_dispatch *tdispatch; |
| |
| CL_API_ENTRY cl_int CL_API_CALL |
| clGetLayerInfo( |
| cl_layer_info param_name, |
| size_t param_value_size, |
| void *param_value, |
| size_t *param_value_size_ret) { |
| if (param_value_size && !param_value) |
| return CL_INVALID_VALUE; |
| if (!param_value && !param_value_size_ret) |
| return CL_INVALID_VALUE; |
| switch (param_name) { |
| case CL_LAYER_API_VERSION: |
| if (param_value_size < sizeof(cl_layer_api_version)) |
| return CL_INVALID_VALUE; |
| if (param_value) |
| *((cl_layer_api_version *)param_value) = CL_LAYER_API_VERSION_100; |
| if (param_value_size_ret) |
| *param_value_size_ret = sizeof(cl_layer_api_version); |
| break; |
| default: |
| return CL_INVALID_VALUE; |
| } |
| return CL_SUCCESS; |
| } |
| |
| CL_API_ENTRY cl_int CL_API_CALL |
| clInitLayer( |
| cl_uint num_entries, |
| const struct _cl_icd_dispatch *target_dispatch, |
| cl_uint *num_entries_out, |
| const struct _cl_icd_dispatch **layer_dispatch_ret) { |
| if (!target_dispatch || !layer_dispatch_ret ||!num_entries_out || num_entries < sizeof(dispatch)/sizeof(dispatch.clGetPlatformIDs)) |
| return CL_INVALID_VALUE; |
| |
| _init_dispatch(); |
| |
| tdispatch = target_dispatch; |
| *layer_dispatch_ret = &dispatch; |
| *num_entries_out = sizeof(dispatch)/sizeof(dispatch.clGetPlatformIDs); |
| return CL_SUCCESS; |
| } |
| |
| |