const std = @import("std"); const vk = @import("vulkan"); // Provide bogus defaults for unknown platform types // The actual type does not really matter here... pub const GgpFrameToken = u32; pub const GgpStreamDescriptor = u32; pub const ANativeWindow = u32; pub const AHardwareBuffer = u32; pub const CAMetalLayer = u32; pub const MTLDevice_id = u32; pub const MTLCommandQueue_id = u32; pub const MTLBuffer_id = u32; pub const MTLTexture_id = u32; pub const MTLSharedEvent_id = u32; pub const IOSurfaceRef = u32; // For some reason these types are exported in a different header, and not described in vk.xml. pub const StdVideoH264ProfileIdc = u32; pub const StdVideoH264LevelIdc = u32; pub const StdVideoH264ChromaFormatIdc = u32; pub const StdVideoH264PocType = u32; pub const StdVideoH264SpsFlags = u32; pub const StdVideoH264ScalingLists = u32; pub const StdVideoH264SequenceParameterSetVui = u32; pub const StdVideoH264AspectRatioIdc = u32; pub const StdVideoH264HrdParameters = u32; pub const StdVideoH264SpsVuiFlags = u32; pub const StdVideoH264WeightedBipredIdc = u32; pub const StdVideoH264PpsFlags = u32; pub const StdVideoH264SliceType = u32; pub const StdVideoH264CabacInitIdc = u32; pub const StdVideoH264DisableDeblockingFilterIdc = u32; pub const StdVideoH264PictureType = u32; pub const StdVideoH264ModificationOfPicNumsIdc = u32; pub const StdVideoH264MemMgmtControlOp = u32; pub const StdVideoDecodeH264PictureInfo = u32; pub const StdVideoDecodeH264ReferenceInfo = u32; pub const StdVideoDecodeH264PictureInfoFlags = u32; pub const StdVideoDecodeH264ReferenceInfoFlags = u32; pub const StdVideoH264SequenceParameterSet = u32; pub const StdVideoH264PictureParameterSet = u32; pub const StdVideoH265ProfileIdc = u32; pub const StdVideoH265VideoParameterSet = u32; pub const StdVideoH265SequenceParameterSet = u32; pub const StdVideoH265PictureParameterSet = u32; pub const StdVideoH265DecPicBufMgr = u32; pub const StdVideoH265HrdParameters = u32; pub const StdVideoH265VpsFlags = u32; pub const StdVideoH265LevelIdc = u32; pub const StdVideoH265SpsFlags = u32; pub const StdVideoH265ScalingLists = u32; pub const StdVideoH265SequenceParameterSetVui = u32; pub const StdVideoH265PredictorPaletteEntries = u32; pub const StdVideoH265PpsFlags = u32; pub const StdVideoH265SubLayerHrdParameters = u32; pub const StdVideoH265HrdFlags = u32; pub const StdVideoH265SpsVuiFlags = u32; pub const StdVideoH265SliceType = u32; pub const StdVideoH265PictureType = u32; pub const StdVideoDecodeH265PictureInfo = u32; pub const StdVideoDecodeH265ReferenceInfo = u32; pub const StdVideoDecodeH265PictureInfoFlags = u32; pub const StdVideoDecodeH265ReferenceInfoFlags = u32; pub const StdVideoEncodeH264SliceHeader = u32; pub const StdVideoEncodeH264PictureInfo = u32; pub const StdVideoEncodeH264ReferenceInfo = u32; pub const StdVideoEncodeH264SliceHeaderFlags = u32; pub const StdVideoEncodeH264RefMemMgmtCtrlOperations = u32; pub const StdVideoEncodeH264PictureInfoFlags = u32; pub const StdVideoEncodeH264ReferenceInfoFlags = u32; pub const StdVideoEncodeH264RefMgmtFlags = u32; pub const StdVideoEncodeH264RefListModEntry = u32; pub const StdVideoEncodeH264RefPicMarkingEntry = u32; pub const StdVideoEncodeH265PictureInfoFlags = u32; pub const StdVideoEncodeH265PictureInfo = u32; pub const StdVideoEncodeH265SliceSegmentHeader = u32; pub const StdVideoEncodeH265ReferenceInfo = u32; pub const StdVideoEncodeH265ReferenceModifications = u32; pub const StdVideoEncodeH265SliceSegmentHeaderFlags = u32; pub const StdVideoEncodeH265ReferenceInfoFlags = u32; pub const StdVideoEncodeH265ReferenceModificationFlags = u32; comptime { @setEvalBranchQuota(100000); reallyRefAllDecls(vk); } fn reallyRefAllDecls(comptime T: type) void { switch (@typeInfo(T)) { .Struct, .Union => { reallyRefAllContainerDecls(T); inline for (std.meta.fields(T)) |field| { reallyRefAllDecls(field.type); } }, .Enum, .Opaque => { reallyRefAllContainerDecls(T); }, else => {}, } } fn reallyRefAllContainerDecls(comptime T: type) void { inline for (comptime std.meta.declarations(T)) |decl| { if (decl.is_pub and @TypeOf(@field(T, decl.name)) == type) { reallyRefAllDecls(@field(T, decl.name)); } } }