blob: dcc7ed7f25e86cfaff67c7d43f5e4657adba2571 [file] [log] [blame]
/*
* 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;
}