1 // Copyright 2019-2021 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 
4 #pragma once
5 
6 #include "common.h"
7 
8 struct VKLDeviceInternal;
9 typedef struct VKLDeviceInternal *VKLDevice;
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 OPENVKL_INTERFACE VKLDevice vklNewDevice(const char *deviceName);
16 
17 typedef void (*VKLLogCallback)(void *userData, const char *message);
18 OPENVKL_INTERFACE void vklDeviceSetLogCallback(VKLDevice device,
19                                                VKLLogCallback callback,
20                                                void *userData);
21 
22 typedef void (*VKLErrorCallback)(void *userData,
23                                  VKLError error,
24                                  const char *message);
25 OPENVKL_INTERFACE void vklDeviceSetErrorCallback(VKLDevice device,
26                                                  VKLErrorCallback callback,
27                                                  void *userData);
28 
29 OPENVKL_INTERFACE void vklDeviceSetInt(VKLDevice device,
30                                        const char *name,
31                                        int x);
32 
33 OPENVKL_INTERFACE void vklDeviceSetString(VKLDevice device,
34                                           const char *name,
35                                           const char *s);
36 
37 OPENVKL_INTERFACE void vklCommitDevice(VKLDevice device);
38 
39 OPENVKL_INTERFACE VKLError vklDeviceGetLastErrorCode(VKLDevice device);
40 
41 OPENVKL_INTERFACE const char *vklDeviceGetLastErrorMsg(VKLDevice device);
42 
43 OPENVKL_INTERFACE int vklGetNativeSIMDWidth(VKLDevice device);
44 
45 OPENVKL_INTERFACE void vklCommit(VKLObject object);
46 
47 OPENVKL_INTERFACE void vklRelease(VKLObject object);
48 
49 OPENVKL_INTERFACE void vklReleaseDevice(VKLDevice device);
50 
51 #ifdef __cplusplus
52 }  // extern "C"
53 #endif
54