6

vulkan.hi を調べると、次のようになります。

#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の最初のケースを使用する方が合理的です

4

1 に答える 1

5

仕様では、ディスパッチ不可能なハンドルは 64 ビットでなければならないと明示的に述べています。

ディスパッチ不可能なハンドル型は 64 ビット整数型であり、その意味は実装依存であり、オブジェクト情報をソフトウェア構造を指すのではなく、ハンドルに直接エンコードする場合があります。ディスパッチ不可能な型のオブジェクトは、型内または型間で一意のハンドル値を持たない場合があります。ハンドル値が一意でない場合、そのようなハンドルの 1 つを破棄しても、他のタイプの同一のハンドルが無効になってはならず、そのハンドル値が作成された回数よりも多く作成されている場合、同じタイプの同一のハンドルが無効になってはなりません。破壊されました。

于 2016-02-23T16:03:20.280 に答える