blob: 0f64c72236cd7201e30fe4fe715946a5a53f88c8 [file] [log] [blame]
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001#ifndef VKICD_H
2#define VKICD_H
3
4#include <stdint.h>
5#include <stdbool.h>
Courtney Goeltzenleuchter2040b432015-04-09 11:52:55 -06006#include "vk_platform.h"
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06007
8/*
9 * The ICD must reserve space for a pointer for the loader's dispatch
10 * table, at the start of <each object>.
11 * The ICD must initialize this variable using the SET_LOADER_MAGIC_VALUE macro.
12 */
13
14#define ICD_LOADER_MAGIC 0x01CDC0DE
15
16typedef union _VK_LOADER_DATA {
17 uint32_t loaderMagic;
18 void *loaderData;
19} VK_LOADER_DATA;
20
Tony Barbourde4124d2015-07-03 10:33:54 -060021static inline void set_loader_magic_value(void* pNewObject) {
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -060022 VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *) pNewObject;
23 loader_info->loaderMagic = ICD_LOADER_MAGIC;
24}
25
Tony Barbourde4124d2015-07-03 10:33:54 -060026static inline bool valid_loader_magic_value(void* pNewObject) {
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -060027 const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *) pNewObject;
28 return loader_info->loaderMagic == ICD_LOADER_MAGIC;
29}
30
31#endif // VKICD_H
32