blob: 8f1bfdb759a1aa3c0cf7d40ed983908914ee9967 [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 Barbour11e76ac2015-04-20 16:28:46 -060021static inline void set_loader_magic_value(VkObject 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 Barbour11e76ac2015-04-20 16:28:46 -060026static inline bool valid_loader_magic_value(VkObject 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