为什么在vulkan.h中,不可调度的对象总是被定义为64位?

时间:2016-02-23 15:11:47

标签: c vulkan

查看vulkan.h我看到了:

#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || .....
    #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
#else
    #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
#endif

有没有人知道为什么64位?对我来说,总是使用ifdef的第一个案例

似乎更合理

1 个答案:

答案 0 :(得分:5)

spec it explicitly says中,不可分派的句柄必须是64位:

  

不可分派的句柄类型是64位整数类型,其含义   是依赖于实现的,并且可以编码对象信息   直接在句柄中而不是指向软件结构。   不可分派类型的对象可能没有唯一的句柄值   在类型内或跨类型。如果句柄值不唯一,那么   销毁一个这样的句柄不得导致其他句柄相同   类型变为无效,并且不得导致相同的句柄   如果已创建更多句柄值,则相同类型将变为无效   时间比它被摧毁了。