func CopyAllDevices() []Device {
	d := C.CopyAllDevices()
	defer C.free(unsafe.Pointer(d.Devices))

	ds := make([]Device, d.Length)
	for i := 0; i < len(ds); i++ {
		d := (*C.struct_Device)(unsafe.Pointer(uintptr(unsafe.Pointer(d.Devices)) + uintptr(i)*C.sizeof_struct_Device))

		ds[i].device = d.Device
		ds[i].Headless = d.Headless != 0
		ds[i].LowPower = d.LowPower != 0
		ds[i].Name = C.GoString(d.Name)
	}
	return ds
}
func CopyAllDevices() []Device {
	d := C.CopyAllDevices()
	defer C.free(unsafe.Pointer(d.Devices))

	ds := make([]Device, d.Length)
	for i := 0; i < len(ds); i++ {
		d := (*C.struct_Device)(unsafe.Pointer(uintptr(unsafe.Pointer(d.Devices)) + uintptr(i)*C.sizeof_struct_Device))

		ds[i].device = d.Device
		ds[i].Headless = d.Headless != 0
		ds[i].LowPower = d.LowPower != 0
		ds[i].Name = C.GoString(d.Name)
	}
	return ds
}
func CopyAllDevices ( ) [ ] Device { d := C . CopyAllDevices ( ) defer C . free ( unsafe . Pointer ( d . Devices ) ) ds := make ( [ ] Device , d . Length ) for i := 0 ; i < len ( ds ) ; i ++ { d := ( * C . struct_Device ) ( unsafe . Pointer ( uintptr ( unsafe . Pointer ( d . Devices ) ) + uintptr ( i ) * C . sizeof_struct_Device ) ) ds [ i ] . device = d . Device ds [ i ] . Headless = d . Headless != 0 ds [ i ] . LowPower = d . LowPower != 0 ds [ i ] . Name = C . GoString ( d . Name ) } return ds }
// CopyAllDevices returns all Metal devices in the system.
//
// Reference: https://developer.apple.com/documentation/metal/1433367-mtlcopyalldevices.
CopyAllDevices returns all Metal devices in the system . Reference : https : // developer . apple . com / documentation / metal / 1433367 - mtlcopyalldevices .