more progress. removed the unions because they have a bigger size than the foreign procs expects and that messes things up

This commit is contained in:
2024-08-07 06:39:18 +02:00
parent ebafc90985
commit 50fb0bb5f9
13 changed files with 1482 additions and 221 deletions
+143 -165
View File
@@ -18,14 +18,14 @@ foreign android {
* is no longer needed. * is no longer needed.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API feature level 30. * Available since API level 30.
* *
* @param desc The {@link ANeuralNetworksMemoryDesc} to be created. * @param desc The {@link ANeuralNetworksMemoryDesc} to be created.
* Set to NULL if unsuccessful. * Set to NULL if unsuccessful.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksMemoryDesc_create :: proc(desc: ^^ANeuralNetworksMemoryDesc) ANeuralNetworksMemoryDesc_create :: proc(desc: ^^ANeuralNetworksMemoryDesc) -> NNResultCode ---
/** /**
* Destroy a memory descriptor. * Destroy a memory descriptor.
@@ -36,11 +36,12 @@ foreign android {
* See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage. * See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param desc The memory descriptor to be destroyed. Passing NULL is acceptable and * @param desc The memory descriptor to be destroyed. Passing NULL is acceptable and
* results in no operation. * results in no operation.
*/ */
void ANeuralNetworksMemoryDesc_free(ANeuralNetworksMemoryDesc* desc) __NNAPI_INTRODUCED_IN(30); ANeuralNetworksMemoryDesc_free :: proc(desc: ^ANeuralNetworksMemoryDesc) ---
/** /**
* Specify that a memory object will be playing the role of an input to an execution created from a * Specify that a memory object will be playing the role of an input to an execution created from a
@@ -68,6 +69,7 @@ foreign android {
* See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage. * See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param desc The memory descriptor to be modified. * @param desc The memory descriptor to be modified.
* @param compilation The compilation object. It must already have been finished by calling * @param compilation The compilation object. It must already have been finished by calling
@@ -84,10 +86,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksMemoryDesc_addInputRole(ANeuralNetworksMemoryDesc* desc, ANeuralNetworksMemoryDesc_addInputRole :: proc(desc: ^ANeuralNetworksMemoryDesc, compilation: ^ANeuralNetworksCompilation, index: u32, frequency: f32) -> NNResultCode ---
const ANeuralNetworksCompilation* compilation,
uint32_t index, float frequency)
__NNAPI_INTRODUCED_IN(30);
/** /**
* Specify that a memory object will be playing the role of an output to an execution created from a * Specify that a memory object will be playing the role of an output to an execution created from a
@@ -115,6 +114,7 @@ foreign android {
* See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage. * See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param desc The memory descriptor to be modified. * @param desc The memory descriptor to be modified.
* @param compilation The compilation object. It must already have been finished by calling * @param compilation The compilation object. It must already have been finished by calling
@@ -131,10 +131,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksMemoryDesc_addOutputRole(ANeuralNetworksMemoryDesc* desc, ANeuralNetworksMemoryDesc_addOutputRole :: proc(desc: ^ANeuralNetworksMemoryDesc, compilation: ^ANeuralNetworksCompilation, index: u32, frequency: f32) -> NNResultCode ---
const ANeuralNetworksCompilation* compilation,
uint32_t index, float frequency)
__NNAPI_INTRODUCED_IN(30);
/** /**
* Set the dimensional information of the memory descriptor. * Set the dimensional information of the memory descriptor.
@@ -151,6 +148,7 @@ foreign android {
* See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage. * See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param desc The memory descriptor to be modified. * @param desc The memory descriptor to be modified.
* @param rank The number of dimensions. Must be 0 for scalars. * @param rank The number of dimensions. Must be 0 for scalars.
@@ -159,8 +157,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksMemoryDesc_setDimensions(ANeuralNetworksMemoryDesc* desc, uint32_t rank, ANeuralNetworksMemoryDesc_setDimensions :: proc(desc: ^ANeuralNetworksMemoryDesc, rank: u32, dimensions: [^]u32) -> NNResultCode ---
const uint32_t* dimensions) __NNAPI_INTRODUCED_IN(30);
/** /**
* Indicate that we have finished modifying a memory descriptor. Required before calling * Indicate that we have finished modifying a memory descriptor. Required before calling
@@ -171,12 +168,13 @@ foreign android {
* See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage. * See {@link ANeuralNetworksMemoryDesc} for information on multithreaded usage.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param desc The memory descriptor to be finished. * @param desc The memory descriptor to be finished.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksMemoryDesc_finish(ANeuralNetworksMemoryDesc* desc) __NNAPI_INTRODUCED_IN(30); ANeuralNetworksMemoryDesc_finish :: proc(desc: ^ANeuralNetworksMemoryDesc) -> NNResultCode ---
/** /**
* Creates a memory object from a memory descriptor. * Creates a memory object from a memory descriptor.
@@ -222,17 +220,17 @@ foreign android {
* object. * object.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param desc The memory descriptor. * @param desc The memory descriptor.
* @param memory The memory object to be created. * @param memory The memory object to be created.
* Set to NULL if unsuccessful. * Set to NULL if unsuccessful.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful; ANEURALNETWORKS_OP_FAILED if the memory is * @return ANEURALNETWORKS_NO_ERROR if successful ANEURALNETWORKS_OP_FAILED if the memory is
* created with unspecified dimensions or rank and it is not supported for this set of * created with unspecified dimensions or rank and it is not supported for this set of
* roles. * roles.
*/ */
int ANeuralNetworksMemory_createFromDesc(const ANeuralNetworksMemoryDesc* desc, ANeuralNetworksMemory_createFromDesc :: proc(desc: ^ANeuralNetworksMemoryDesc, memory: ^^ANeuralNetworksMemory) -> NNResultCode ---
ANeuralNetworksMemory** memory) __NNAPI_INTRODUCED_IN(30);
/** /**
* Copies data from one memory object to another. * Copies data from one memory object to another.
@@ -264,14 +262,14 @@ foreign android {
* logically with data layout transformation. * logically with data layout transformation.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param src The source memory object. * @param src The source memory object.
* @param dst The destination memory object. * @param dst The destination memory object.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksMemory_copy(const ANeuralNetworksMemory* src, const ANeuralNetworksMemory* dst) ANeuralNetworksMemory_copy :: proc(src: ^ANeuralNetworksMemory, dst: ^ANeuralNetworksMemory) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(30);
/** /**
* Get the number of available devices. * Get the number of available devices.
@@ -281,8 +279,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworks_getDeviceCount(uint32_t* numDevices) __NNAPI_INTRODUCED_IN(29); ANeuralNetworks_getDeviceCount :: proc(numDevices: ^u32) -> NNResultCode ---
/** /**
* Get the representation of the specified device. * Get the representation of the specified device.
@@ -296,9 +295,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworks_getDevice(uint32_t devIndex, ANeuralNetworksDevice** device) ANeuralNetworks_getDevice :: proc(devIndex: u32, device: ^^ANeuralNetworksDevice) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(29);
/** /**
* Get the name of the specified device. * Get the name of the specified device.
@@ -316,9 +315,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksDevice_getName(const ANeuralNetworksDevice* device, const char** name) ANeuralNetworksDevice_getName :: proc(device: ^ANeuralNetworksDevice, name: ^cstring) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(29);
/** /**
* Get the type of a given device. * Get the type of a given device.
@@ -335,9 +334,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksDevice_getType(const ANeuralNetworksDevice* device, int32_t* type) ANeuralNetworksDevice_getType :: proc(device: ^ANeuralNetworksDevice, type: ^DeviceTypeCode) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(29);
/** /**
* Get the version of the driver implementation of the specified device. * Get the version of the driver implementation of the specified device.
@@ -365,9 +364,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksDevice_getVersion(const ANeuralNetworksDevice* device, const char** version) ANeuralNetworksDevice_getVersion :: proc(device: ^ANeuralNetworksDevice, version: ^cstring) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(29);
/** /**
* Get the NNAPI feature level of the specified NNAPI device. * Get the NNAPI feature level of the specified NNAPI device.
@@ -392,9 +391,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksDevice_getFeatureLevel(const ANeuralNetworksDevice* device, ANeuralNetworksDevice_getFeatureLevel :: proc(device: ^ANeuralNetworksDevice, featureLevel: ^FeatureLevelCode) -> NNResultCode ---
int64_t* featureLevel) __NNAPI_INTRODUCED_IN(29);
/** /**
* Wait until the device is in a live state. * Wait until the device is in a live state.
@@ -409,8 +408,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
int ANeuralNetworksDevice_wait(const ANeuralNetworksDevice* device) __NNAPI_INTRODUCED_IN(30); ANeuralNetworksDevice_wait :: proc(device: ^ANeuralNetworksDevice) -> NNResultCode ---
/** /**
* Get the supported operations for a specified set of devices. If multiple devices * Get the supported operations for a specified set of devices. If multiple devices
@@ -428,10 +428,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksModel_getSupportedOperationsForDevices( ANeuralNetworksModel_getSupportedOperationsForDevices :: proc(model: ^ANeuralNetworksModel, devices: [^]^ANeuralNetworksDevice, numDevices: u32, supportedOps: [^]bool) -> NNResultCode ---
const ANeuralNetworksModel* model, const ANeuralNetworksDevice* const* devices,
uint32_t numDevices, bool* supportedOps) __NNAPI_INTRODUCED_IN(29);
/** /**
* Create a {@link ANeuralNetworksCompilation} to compile the given model for a specified set * Create a {@link ANeuralNetworksCompilation} to compile the given model for a specified set
@@ -459,12 +458,9 @@ foreign android {
* if the model is invalid. * if the model is invalid.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksCompilation_createForDevices(ANeuralNetworksModel* model, ANeuralNetworksCompilation_createForDevices :: proc(model: ^ANeuralNetworksModel, devices: [^]^ANeuralNetworksDevice, numDevices: u32, compilation: ^^ANeuralNetworksCompilation) -> NNResultCode ---
const ANeuralNetworksDevice* const* devices,
uint32_t numDevices,
ANeuralNetworksCompilation** compilation)
__NNAPI_INTRODUCED_IN(29);
/** /**
* Sets the compilation caching signature and the cache directory. * Sets the compilation caching signature and the cache directory.
@@ -483,17 +479,16 @@ foreign android {
* @param token The token provided by the user to specify a model must be of length * @param token The token provided by the user to specify a model must be of length
* ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN. The user should ensure that * ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN. The user should ensure that
* the token is unique to a model within the application. The NNAPI * the token is unique to a model within the application. The NNAPI
* runtime cannot detect token collisions; a collision will result in a * runtime cannot detect token collisions a collision will result in a
* failed execution or in a successful execution that produces incorrect * failed execution or in a successful execution that produces incorrect
* output values. * output values.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksCompilation_setCaching(ANeuralNetworksCompilation* compilation, ANeuralNetworksCompilation_setCaching :: proc(compilation: ^ANeuralNetworksCompilation, cacheDir: cstring, token: [^]byte) -> NNResultCode ---
const char* cacheDir, const uint8_t* token)
__NNAPI_INTRODUCED_IN(29);
/** /**
* Schedule synchronous evaluation of the execution. * Schedule synchronous evaluation of the execution.
@@ -527,6 +522,7 @@ foreign android {
* asynchronous execution with dependencies. * asynchronous execution with dependencies.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
* *
* @param execution The execution to be scheduled and executed. * @param execution The execution to be scheduled and executed.
* *
@@ -534,7 +530,7 @@ foreign android {
* ANEURALNETWORKS_UNMAPPABLE if the execution input or output memory cannot * ANEURALNETWORKS_UNMAPPABLE if the execution input or output memory cannot
* be properly mapped. * be properly mapped.
*/ */
int ANeuralNetworksExecution_compute(ANeuralNetworksExecution* execution) __NNAPI_INTRODUCED_IN(29); ANeuralNetworksExecution_compute :: proc(execution: ^ANeuralNetworksExecution) -> NNResultCode ---
/** /**
* Get the dimensional information of the specified output operand of the model of the * Get the dimensional information of the specified output operand of the model of the
@@ -556,10 +552,9 @@ foreign android {
* ANEURALNETWORKS_BAD_DATA if the index is invalid. * ANEURALNETWORKS_BAD_DATA if the index is invalid.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksExecution_getOutputOperandRank(ANeuralNetworksExecution* execution, ANeuralNetworksExecution_getOutputOperandRank :: proc(execution: ^ANeuralNetworksExecution, index: i32, rank: ^u32) -> NNResultCode ---
int32_t index, uint32_t* rank)
__NNAPI_INTRODUCED_IN(29);
/** /**
* Get the dimensional information of the specified output operand of the model of the * Get the dimensional information of the specified output operand of the model of the
@@ -582,10 +577,9 @@ foreign android {
* ANEURALNETWORKS_BAD_DATA if the index is invalid or if the target is a scalar. * ANEURALNETWORKS_BAD_DATA if the index is invalid or if the target is a scalar.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksExecution_getOutputOperandDimensions(ANeuralNetworksExecution* execution, ANeuralNetworksExecution_getOutputOperandDimensions :: proc(execution: ^ANeuralNetworksExecution, index: i32, dimensions: [^]u32) -> NNResultCode ---
int32_t index, uint32_t* dimensions)
__NNAPI_INTRODUCED_IN(29);
/** /**
* Create a {@link ANeuralNetworksBurst} to apply the given compilation. * Create a {@link ANeuralNetworksBurst} to apply the given compilation.
@@ -596,6 +590,7 @@ foreign android {
* <p>The provided compilation must outlive the burst object.</p> * <p>The provided compilation must outlive the burst object.</p>
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
* *
* @param compilation The {@link ANeuralNetworksCompilation} to be evaluated. * @param compilation The {@link ANeuralNetworksCompilation} to be evaluated.
* @param burst The newly created object or NULL if unsuccessful. * @param burst The newly created object or NULL if unsuccessful.
@@ -603,18 +598,18 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA * @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA
* if the compilation is invalid. * if the compilation is invalid.
*/ */
int ANeuralNetworksBurst_create(ANeuralNetworksCompilation* compilation, ANeuralNetworksBurst_create :: proc(compilation: ^ANeuralNetworksCompilation, burst: ^^ANeuralNetworksBurst) -> NNResultCode ---
ANeuralNetworksBurst** burst) __NNAPI_INTRODUCED_IN(29);
/** /**
* Destroys the burst object. * Destroys the burst object.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
* *
* @param burst The burst object to be destroyed. Passing NULL is acceptable and * @param burst The burst object to be destroyed. Passing NULL is acceptable and
* results in no operation. * results in no operation.
*/ */
void ANeuralNetworksBurst_free(ANeuralNetworksBurst* burst) __NNAPI_INTRODUCED_IN(29); ANeuralNetworksBurst_free :: proc(burst: ^ANeuralNetworksBurst) ---
/** /**
* Schedule synchronous evaluation of the execution on a burst object. * Schedule synchronous evaluation of the execution on a burst object.
@@ -652,6 +647,7 @@ foreign android {
* asynchronous execution with dependencies. * asynchronous execution with dependencies.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
* *
* @param burst The burst object to execute on. * @param burst The burst object to execute on.
* @param execution The execution to be scheduled and executed. The execution * @param execution The execution to be scheduled and executed. The execution
@@ -660,8 +656,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if the execution completed normally. * @return ANEURALNETWORKS_NO_ERROR if the execution completed normally.
*/ */
int ANeuralNetworksExecution_burstCompute(ANeuralNetworksExecution* execution, ANeuralNetworksExecution_burstCompute :: proc(execution: ^ANeuralNetworksExecution, burst: ^ANeuralNetworksBurst) -> NNResultCode ---
ANeuralNetworksBurst* burst) __NNAPI_INTRODUCED_IN(29);
/** /**
* Creates a shared memory object from an AHardwareBuffer handle. * Creates a shared memory object from an AHardwareBuffer handle.
@@ -687,6 +682,7 @@ foreign android {
* The provided AHardwareBuffer must outlive the ANeuralNetworksMemory object. * The provided AHardwareBuffer must outlive the ANeuralNetworksMemory object.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
* *
* @param ahwb The AHardwareBuffer handle. * @param ahwb The AHardwareBuffer handle.
* @param memory The memory object to be created. * @param memory The memory object to be created.
@@ -696,11 +692,7 @@ foreign android {
* *
* @see AHardwareBuffer * @see AHardwareBuffer
*/ */
#ifdef __ANDROID__ ANeuralNetworksMemory_createFromAHardwareBuffer :: proc(ahwb: ^AHardwareBuffer, memory: ^^ANeuralNetworksMemory) -> NNResultCode ---
int ANeuralNetworksMemory_createFromAHardwareBuffer(const AHardwareBuffer* ahwb,
ANeuralNetworksMemory** memory)
__NNAPI_INTRODUCED_IN(29);
#endif // __ANDROID__
/** /**
@@ -721,14 +713,14 @@ foreign android {
* See {@link ANeuralNetworksExecution} for information on execution states and multithreaded usage. * See {@link ANeuralNetworksExecution} for information on execution states and multithreaded usage.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
* *
* @param execution The execution to be modified. * @param execution The execution to be modified.
* @param measure 'true' if duration is to be measured, 'false' if not. * @param measure 'true' if duration is to be measured, 'false' if not.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksExecution_setMeasureTiming(ANeuralNetworksExecution* execution, bool measure) ANeuralNetworksExecution_setMeasureTiming :: proc(execution: ^ANeuralNetworksExecution, measure: bool) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(29);
/** /**
* Get the time spent in the latest computation evaluated on the specified * Get the time spent in the latest computation evaluated on the specified
@@ -751,10 +743,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
*/ */
int ANeuralNetworksExecution_getDuration(const ANeuralNetworksExecution* execution, ANeuralNetworksExecution_getDuration :: proc(execution: ^ANeuralNetworksExecution, durationCode: DurationCode, duration: ^u64) -> NNResultCode ---
int32_t durationCode, uint64_t* duration)
__NNAPI_INTRODUCED_IN(29);
/** /**
* Creates a shared memory object from a file descriptor. * Creates a shared memory object from a file descriptor.
@@ -764,6 +755,7 @@ foreign android {
* this shared memory. * this shared memory.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param size The requested size in bytes. * @param size The requested size in bytes.
* Must not be larger than the file size. * Must not be larger than the file size.
@@ -780,8 +772,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if the request completed normally. * @return ANEURALNETWORKS_NO_ERROR if the request completed normally.
*/ */
int ANeuralNetworksMemory_createFromFd(size_t size, int protect, int fd, size_t offset, ANeuralNetworksMemory_createFromFd :: proc(size: uint, protect: i32, fd: i32, offset: uint, memory: ^^ANeuralNetworksMemory) -> NNResultCode ---
ANeuralNetworksMemory** memory) __NNAPI_INTRODUCED_IN(27);
/** /**
* Delete a memory object. * Delete a memory object.
@@ -791,11 +782,12 @@ foreign android {
* handles to this memory. * handles to this memory.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param memory The memory object to be freed. Passing NULL is acceptable and * @param memory The memory object to be freed. Passing NULL is acceptable and
* results in no operation. * results in no operation.
*/ */
void ANeuralNetworksMemory_free(ANeuralNetworksMemory* memory) __NNAPI_INTRODUCED_IN(27); ANeuralNetworksMemory_free :: proc(memory: ^ANeuralNetworksMemory) ---
/** /**
* Create an empty {@link ANeuralNetworksModel}. * Create an empty {@link ANeuralNetworksModel}.
@@ -817,13 +809,14 @@ foreign android {
* is no longer needed.</p> * is no longer needed.</p>
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param model The {@link ANeuralNetworksModel} to be created. * @param model The {@link ANeuralNetworksModel} to be created.
* Set to NULL if unsuccessful. * Set to NULL if unsuccessful.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_create(ANeuralNetworksModel** model) __NNAPI_INTRODUCED_IN(27); ANeuralNetworksModel_create :: proc(model: ^^ANeuralNetworksModel) -> NNResultCode ---
/** /**
* Destroy a model. * Destroy a model.
@@ -834,11 +827,12 @@ foreign android {
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param model The model to be destroyed. Passing NULL is acceptable and * @param model The model to be destroyed. Passing NULL is acceptable and
* results in no operation. * results in no operation.
*/ */
void ANeuralNetworksModel_free(ANeuralNetworksModel* model) __NNAPI_INTRODUCED_IN(27); ANeuralNetworksModel_free :: proc(model: ^ANeuralNetworksModel) ---
/** /**
* Indicate that we have finished modifying a model. Required before * Indicate that we have finished modifying a model. Required before
@@ -853,12 +847,13 @@ foreign android {
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param model The model to be finished. * @param model The model to be finished.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_finish(ANeuralNetworksModel* model) __NNAPI_INTRODUCED_IN(27); ANeuralNetworksModel_finish :: proc(model: ^ANeuralNetworksModel) -> NNResultCode ---
/** /**
* Add an operand to a model. * Add an operand to a model.
@@ -901,6 +896,7 @@ foreign android {
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param model The model to be modified. * @param model The model to be modified.
* @param type The {@link ANeuralNetworksOperandType} that describes the shape * @param type The {@link ANeuralNetworksOperandType} that describes the shape
@@ -910,9 +906,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_addOperand(ANeuralNetworksModel* model, ANeuralNetworksModel_addOperand :: proc(model: ^ANeuralNetworksModel, type: ^ANeuralNetworksOperandType) -> NNResultCode ---
const ANeuralNetworksOperandType* type)
__NNAPI_INTRODUCED_IN(27);
/** /**
* Sets an operand to a constant value. * Sets an operand to a constant value.
@@ -941,6 +935,7 @@ foreign android {
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param model The model to be modified. * @param model The model to be modified.
* @param index The index of the model operand we're setting. * @param index The index of the model operand we're setting.
@@ -949,9 +944,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_setOperandValue(ANeuralNetworksModel* model, int32_t index, ANeuralNetworksModel_setOperandValue :: proc(model: ^ANeuralNetworksModel, index: i32, buffer: rawptr, length: uint) -> NNResultCode ---
const void* buffer, size_t length)
__NNAPI_INTRODUCED_IN(27);
/** /**
* Sets an operand's per channel quantization parameters. * Sets an operand's per channel quantization parameters.
@@ -963,6 +956,7 @@ foreign android {
* calling {@link ANeuralNetworksModel_finish}. * calling {@link ANeuralNetworksModel_finish}.
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
* Available since API level 29.
* *
* @param model The model to be modified. * @param model The model to be modified.
* @param index The index of the model operand we're setting. * @param index The index of the model operand we're setting.
@@ -972,9 +966,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_setOperandSymmPerChannelQuantParams( ANeuralNetworksModel_setOperandSymmPerChannelQuantParams :: proc(model: ^ANeuralNetworksModel, index: i32, channelQuant: ^ANeuralNetworksSymmPerChannelQuantParams) -> NNResultCode ---
ANeuralNetworksModel* model, int32_t index,
const ANeuralNetworksSymmPerChannelQuantParams* channelQuant) __NNAPI_INTRODUCED_IN(29);
/** /**
* Sets an operand to a value stored in a memory object. * Sets an operand to a value stored in a memory object.
@@ -1004,6 +996,7 @@ foreign android {
* AHardwareBuffer usage. * AHardwareBuffer usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param model The model to be modified. * @param model The model to be modified.
* @param index The index of the model operand we're setting. * @param index The index of the model operand we're setting.
@@ -1014,10 +1007,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_setOperandValueFromMemory(ANeuralNetworksModel* model, int32_t index, ANeuralNetworksModel_setOperandValueFromMemory :: proc(model: ^ANeuralNetworksModel, index: i32, memory: ^ANeuralNetworksMemory, offset: uint, length: uint) -> NNResultCode ---
const ANeuralNetworksMemory* memory,
size_t offset, size_t length)
__NNAPI_INTRODUCED_IN(27);
/** /**
* Sets an operand to a value that is a reference to another NNAPI model. * Sets an operand to a value that is a reference to another NNAPI model.
@@ -1037,6 +1027,7 @@ foreign android {
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param model The model to be modified. * @param model The model to be modified.
* @param index The index of the model operand we're setting. * @param index The index of the model operand we're setting.
@@ -1044,9 +1035,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_setOperandValueFromModel(ANeuralNetworksModel* model, int32_t index, ANeuralNetworksModel_setOperandValueFromModel :: proc(model: ^ANeuralNetworksModel, index: i32, value: ^ANeuralNetworksModel) -> NNResultCode ---
const ANeuralNetworksModel* value)
__NNAPI_INTRODUCED_IN(30);
/** /**
* Add an operation to a model. * Add an operation to a model.
@@ -1067,13 +1056,11 @@ foreign android {
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksModel_addOperation(ANeuralNetworksModel* model, ANeuralNetworksModel_addOperation :: proc(model: ^ANeuralNetworksModel, type: ANeuralNetworksOperationType, inputCount: u32, inputs: [^]u32, outputCount: u32, outputs: [^]u32) -> NNResultCode ---
ANeuralNetworksOperationType type, uint32_t inputCount,
const uint32_t* inputs, uint32_t outputCount,
const uint32_t* outputs) __NNAPI_INTRODUCED_IN(27);
/** /**
* Specifies which operands will be the model's inputs and * Specifies which operands will be the model's inputs and
@@ -1097,12 +1084,10 @@ foreign android {
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
*/ */
int ANeuralNetworksModel_identifyInputsAndOutputs(ANeuralNetworksModel* model, uint32_t inputCount, ANeuralNetworksModel_identifyInputsAndOutputs :: proc(model: ^ANeuralNetworksModel, inputCount: u32, inputs: [^]u32, outputCount: u32, outputs: [^]u32) -> NNResultCode ---
const uint32_t* inputs, uint32_t outputCount,
const uint32_t* outputs)
__NNAPI_INTRODUCED_IN(27);
/** /**
* Specifies whether {@link ANEURALNETWORKS_TENSOR_FLOAT32} is allowed to be * Specifies whether {@link ANEURALNETWORKS_TENSOR_FLOAT32} is allowed to be
@@ -1126,11 +1111,11 @@ foreign android {
* called will return an error. * called will return an error.
* *
* Available since NNAPI feature level 2. * Available since NNAPI feature level 2.
* Available since API level 28.
* *
* See {@link ANeuralNetworksModel} for information on multithreaded usage. * See {@link ANeuralNetworksModel} for information on multithreaded usage.
*/ */
int ANeuralNetworksModel_relaxComputationFloat32toFloat16(ANeuralNetworksModel* model, bool allow) ANeuralNetworksModel_relaxComputationFloat32toFloat16 :: proc(model: ^ANeuralNetworksModel, allow: bool) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(28);
/** /**
* Create a {@link ANeuralNetworksCompilation} to compile the given model. * Create a {@link ANeuralNetworksCompilation} to compile the given model.
@@ -1156,6 +1141,7 @@ foreign android {
* See {@link ANeuralNetworksCompilation} for information on multithreaded usage. * See {@link ANeuralNetworksCompilation} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param model The {@link ANeuralNetworksModel} to be compiled. * @param model The {@link ANeuralNetworksModel} to be compiled.
* @param compilation The newly created object or NULL if unsuccessful. * @param compilation The newly created object or NULL if unsuccessful.
@@ -1163,9 +1149,7 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA * @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA
* if the model is invalid. * if the model is invalid.
*/ */
int ANeuralNetworksCompilation_create(ANeuralNetworksModel* model, ANeuralNetworksCompilation_create :: proc(model: ^ANeuralNetworksModel, compilation: ^^ANeuralNetworksCompilation) -> NNResultCode ---
ANeuralNetworksCompilation** compilation)
__NNAPI_INTRODUCED_IN(27);
/** /**
* Destroy a compilation. * Destroy a compilation.
@@ -1176,12 +1160,12 @@ foreign android {
* See {@link ANeuralNetworksCompilation} for information on multithreaded usage. * See {@link ANeuralNetworksCompilation} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param compilation The compilation to be destroyed. Passing NULL is acceptable and * @param compilation The compilation to be destroyed. Passing NULL is acceptable and
* results in no operation. * results in no operation.
*/ */
void ANeuralNetworksCompilation_free(ANeuralNetworksCompilation* compilation) ANeuralNetworksCompilation_free :: proc(compilation: ^ANeuralNetworksCompilation) ---
__NNAPI_INTRODUCED_IN(27);
/** /**
* Sets the execution preference. * Sets the execution preference.
@@ -1192,6 +1176,7 @@ foreign android {
* See {@link ANeuralNetworksCompilation} for information on multithreaded usage. * See {@link ANeuralNetworksCompilation} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param compilation The compilation to be modified. * @param compilation The compilation to be modified.
* @param preference Either {@link ANEURALNETWORKS_PREFER_LOW_POWER}, * @param preference Either {@link ANEURALNETWORKS_PREFER_LOW_POWER},
@@ -1200,8 +1185,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksCompilation_setPreference(ANeuralNetworksCompilation* compilation, ANeuralNetworksCompilation_setPreference :: proc(compilation: ^ANeuralNetworksCompilation, preference: PreferenceCode) -> NNResultCode ---
int32_t preference) __NNAPI_INTRODUCED_IN(27);
/** /**
* Indicate that we have finished modifying a compilation. Required before * Indicate that we have finished modifying a compilation. Required before
@@ -1221,13 +1205,13 @@ foreign android {
* See {@link ANeuralNetworksCompilation} for information on multithreaded usage. * See {@link ANeuralNetworksCompilation} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param compilation The compilation to be finished. * @param compilation The compilation to be finished.
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksCompilation_finish(ANeuralNetworksCompilation* compilation) ANeuralNetworksCompilation_finish :: proc(compilation: ^ANeuralNetworksCompilation) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(27);
/** /**
* Set the execution priority. * Set the execution priority.
@@ -1244,6 +1228,7 @@ foreign android {
* See {@link ANeuralNetworksCompilation} for information on multithreaded usage. * See {@link ANeuralNetworksCompilation} for information on multithreaded usage.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
* *
* @param compilation The compilation to be modified. * @param compilation The compilation to be modified.
* @param priority The relative priority of the execution compared to other * @param priority The relative priority of the execution compared to other
@@ -1252,8 +1237,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
*/ */
int ANeuralNetworksCompilation_setPriority(ANeuralNetworksCompilation* compilation, int priority) ANeuralNetworksCompilation_setPriority :: proc(compilation: ^ANeuralNetworksCompilation, priority: PriorityCode) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(30);
/** /**
* Set the maximum expected duration for compiling the model. * Set the maximum expected duration for compiling the model.
@@ -1294,9 +1278,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
int ANeuralNetworksCompilation_setTimeout(ANeuralNetworksCompilation* compilation, ANeuralNetworksCompilation_setTimeout :: proc(compilation: ^ANeuralNetworksCompilation, duration: u64) -> NNResultCode ---
uint64_t duration) __NNAPI_INTRODUCED_IN(30);
/** /**
* Create a {@link ANeuralNetworksExecution} to apply the given compilation. * Create a {@link ANeuralNetworksExecution} to apply the given compilation.
@@ -1311,6 +1295,7 @@ foreign android {
* See {@link ANeuralNetworksExecution} for information on multithreaded usage. * See {@link ANeuralNetworksExecution} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param compilation The {@link ANeuralNetworksCompilation} to be evaluated. * @param compilation The {@link ANeuralNetworksCompilation} to be evaluated.
* @param execution The newly created object or NULL if unsuccessful. * @param execution The newly created object or NULL if unsuccessful.
@@ -1318,8 +1303,7 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA * @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA
* if the compilation is invalid. * if the compilation is invalid.
*/ */
int ANeuralNetworksExecution_create(ANeuralNetworksCompilation* compilation, ANeuralNetworksExecution_create :: proc(compilation: ^ANeuralNetworksCompilation, execution: ^^ANeuralNetworksExecution) -> NNResultCode ---
ANeuralNetworksExecution** execution) __NNAPI_INTRODUCED_IN(27);
/** /**
* Destroy an execution. * Destroy an execution.
@@ -1328,7 +1312,7 @@ foreign android {
* {@link ANeuralNetworksExecution_burstCompute}, * {@link ANeuralNetworksExecution_burstCompute},
* {@link ANeuralNetworksExecution_compute}, * {@link ANeuralNetworksExecution_compute},
* {@link ANeuralNetworksExecution_startCompute} or * {@link ANeuralNetworksExecution_startCompute} or
* {@link ANeuralNetworksExecution_startComputeWithDependencies}; but if it has been scheduled, * {@link ANeuralNetworksExecution_startComputeWithDependencies} but if it has been scheduled,
* then the application must not call {@link ANeuralNetworksExecution_free} * then the application must not call {@link ANeuralNetworksExecution_free}
* until the execution has completed (i.e., * until the execution has completed (i.e.,
* {@link ANeuralNetworksExecution_burstCompute}, * {@link ANeuralNetworksExecution_burstCompute},
@@ -1338,11 +1322,12 @@ foreign android {
* See {@link ANeuralNetworksExecution} for information on multithreaded usage. * See {@link ANeuralNetworksExecution} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param execution The execution to be destroyed. Passing NULL is acceptable and * @param execution The execution to be destroyed. Passing NULL is acceptable and
* results in no operation. * results in no operation.
*/ */
void ANeuralNetworksExecution_free(ANeuralNetworksExecution* execution) __NNAPI_INTRODUCED_IN(27); ANeuralNetworksExecution_free :: proc(execution: ^ANeuralNetworksExecution) ---
/** /**
* Associate a user buffer with an input of the model of the * Associate a user buffer with an input of the model of the
@@ -1377,6 +1362,7 @@ foreign android {
* preferred buffer alignment and padding, to improve performance. * preferred buffer alignment and padding, to improve performance.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param execution The execution to be modified. * @param execution The execution to be modified.
* @param index The index of the input argument we are setting. It is * @param index The index of the input argument we are setting. It is
@@ -1400,9 +1386,7 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the * @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the
* name is not recognized or the buffer is too small for the input. * name is not recognized or the buffer is too small for the input.
*/ */
int ANeuralNetworksExecution_setInput(ANeuralNetworksExecution* execution, int32_t index, ANeuralNetworksExecution_setInput :: proc(execution: ^ANeuralNetworksExecution, index: i32, type: ^ANeuralNetworksOperandType, buffer: rawptr, length: uint) -> NNResultCode ---
const ANeuralNetworksOperandType* type, const void* buffer,
size_t length) __NNAPI_INTRODUCED_IN(27);
/** /**
* Associate a region of a memory object with an input of the model of the * Associate a region of a memory object with an input of the model of the
@@ -1447,6 +1431,7 @@ foreign android {
* preferred memory alignment and padding, to improve performance. * preferred memory alignment and padding, to improve performance.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param execution The execution to be modified. * @param execution The execution to be modified.
* @param index The index of the input argument we are setting. It is * @param index The index of the input argument we are setting. It is
@@ -1470,10 +1455,7 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the * @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the
* name is not recognized or the buffer is too small for the input. * name is not recognized or the buffer is too small for the input.
*/ */
int ANeuralNetworksExecution_setInputFromMemory(ANeuralNetworksExecution* execution, int32_t index, ANeuralNetworksExecution_setInputFromMemory :: proc(execution: ^ANeuralNetworksExecution, index: i32, type: ^ANeuralNetworksOperandType, memory: ^ANeuralNetworksMemory, offset: uint, length: uint) -> NNResultCode ---
const ANeuralNetworksOperandType* type,
const ANeuralNetworksMemory* memory, size_t offset,
size_t length) __NNAPI_INTRODUCED_IN(27);
/** /**
* Associate a user buffer with an output of the model of the * Associate a user buffer with an output of the model of the
@@ -1507,6 +1489,7 @@ foreign android {
* preferred buffer alignment and padding, to improve performance. * preferred buffer alignment and padding, to improve performance.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param execution The execution to be modified. * @param execution The execution to be modified.
* @param index The index of the output argument we are setting. It is * @param index The index of the output argument we are setting. It is
@@ -1535,9 +1518,7 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the * @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the
* name is not recognized or the buffer is too small for the output. * name is not recognized or the buffer is too small for the output.
*/ */
int ANeuralNetworksExecution_setOutput(ANeuralNetworksExecution* execution, int32_t index, ANeuralNetworksExecution_setOutput :: proc(execution: ^ANeuralNetworksExecution, index: i32, type: ^ANeuralNetworksOperandType, buffer: rawptr, length: uint) -> NNResultCode ---
const ANeuralNetworksOperandType* type, void* buffer,
size_t length) __NNAPI_INTRODUCED_IN(27);
/** /**
* Associate a region of a memory object with an output of the model of the * Associate a region of a memory object with an output of the model of the
@@ -1581,6 +1562,7 @@ foreign android {
* preferred memory alignment and padding, to improve performance. * preferred memory alignment and padding, to improve performance.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param execution The execution to be modified. * @param execution The execution to be modified.
* @param index The index of the output argument we are setting. It is * @param index The index of the output argument we are setting. It is
@@ -1610,10 +1592,7 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the * @return ANEURALNETWORKS_NO_ERROR if successful, ANEURALNETWORKS_BAD_DATA if the
* name is not recognized or the buffer is too small for the output. * name is not recognized or the buffer is too small for the output.
*/ */
int ANeuralNetworksExecution_setOutputFromMemory(ANeuralNetworksExecution* execution, int32_t index, ANeuralNetworksExecution_setOutputFromMemory :: proc(execution: ^ANeuralNetworksExecution, index: i32, type: ^ANeuralNetworksOperandType, memory: ^ANeuralNetworksMemory, offset: uint, length: uint) -> NNResultCode ---
const ANeuralNetworksOperandType* type,
const ANeuralNetworksMemory* memory, size_t offset,
size_t length) __NNAPI_INTRODUCED_IN(27);
/** /**
* Schedule asynchronous evaluation of the execution. * Schedule asynchronous evaluation of the execution.
@@ -1660,6 +1639,7 @@ foreign android {
* asynchronous execution with dependencies. * asynchronous execution with dependencies.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param execution The execution to be scheduled and executed. * @param execution The execution to be scheduled and executed.
* @param event The event that will be signaled on completion. event is set to * @param event The event that will be signaled on completion. event is set to
@@ -1667,8 +1647,7 @@ foreign android {
* *
* @return ANEURALNETWORKS_NO_ERROR if the evaluation is successfully scheduled. * @return ANEURALNETWORKS_NO_ERROR if the evaluation is successfully scheduled.
*/ */
int ANeuralNetworksExecution_startCompute(ANeuralNetworksExecution* execution, ANeuralNetworksExecution_startCompute :: proc(execution: ^ANeuralNetworksExecution, event: ^^ANeuralNetworksEvent) -> NNResultCode ---
ANeuralNetworksEvent** event) __NNAPI_INTRODUCED_IN(27);
/** /**
* Set the maximum expected duration of the specified execution. * Set the maximum expected duration of the specified execution.
@@ -1715,9 +1694,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
int ANeuralNetworksExecution_setTimeout(ANeuralNetworksExecution* execution, uint64_t duration) ANeuralNetworksExecution_setTimeout :: proc(execution: ^ANeuralNetworksExecution, duration: u64) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(30);
/** /**
* Set the maximum duration of WHILE loops in the specified execution. * Set the maximum duration of WHILE loops in the specified execution.
@@ -1746,9 +1725,9 @@ foreign android {
* ANEURALNETWORKS_UNEXPECTED_NULL if execution is NULL. * ANEURALNETWORKS_UNEXPECTED_NULL if execution is NULL.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
int ANeuralNetworksExecution_setLoopTimeout(ANeuralNetworksExecution* execution, uint64_t duration) ANeuralNetworksExecution_setLoopTimeout :: proc(execution: ^ANeuralNetworksExecution, duration: u64) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(30);
/** /**
* Get the default timeout value for WHILE loops. * Get the default timeout value for WHILE loops.
@@ -1756,8 +1735,9 @@ foreign android {
* @return The default timeout value in nanoseconds. * @return The default timeout value in nanoseconds.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
uint64_t ANeuralNetworks_getDefaultLoopTimeout() __NNAPI_INTRODUCED_IN(30); ANeuralNetworks_getDefaultLoopTimeout :: proc() -> u64 ---
/** /**
* Get the maximum timeout value for WHILE loops. * Get the maximum timeout value for WHILE loops.
@@ -1765,8 +1745,9 @@ foreign android {
* @return The maximum timeout value in nanoseconds. * @return The maximum timeout value in nanoseconds.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
uint64_t ANeuralNetworks_getMaximumLoopTimeout() __NNAPI_INTRODUCED_IN(30); ANeuralNetworks_getMaximumLoopTimeout :: proc() -> u64 ---
/** /**
* Waits until the execution completes. * Waits until the execution completes.
@@ -1787,13 +1768,14 @@ foreign android {
* See {@link ANeuralNetworksExecution} for information on execution states and multithreaded usage. * See {@link ANeuralNetworksExecution} for information on execution states and multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param event The event that will be signaled on completion. * @param event The event that will be signaled on completion.
* @return ANEURALNETWORKS_NO_ERROR if the execution completed normally. * @return ANEURALNETWORKS_NO_ERROR if the execution completed normally.
* ANEURALNETWORKS_UNMAPPABLE if the execution input or output memory cannot * ANEURALNETWORKS_UNMAPPABLE if the execution input or output memory cannot
* be properly mapped. * be properly mapped.
*/ */
int ANeuralNetworksEvent_wait(ANeuralNetworksEvent* event) __NNAPI_INTRODUCED_IN(27); ANeuralNetworksEvent_wait :: proc(event: ^ANeuralNetworksEvent) -> NNResultCode ---
/** /**
* Destroys the event. * Destroys the event.
@@ -1801,11 +1783,12 @@ foreign android {
* See {@link ANeuralNetworksExecution} for information on multithreaded usage. * See {@link ANeuralNetworksExecution} for information on multithreaded usage.
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
* Available since API level 27.
* *
* @param event The event object to be destroyed. Passing NULL is acceptable and * @param event The event object to be destroyed. Passing NULL is acceptable and
* results in no operation. * results in no operation.
*/ */
void ANeuralNetworksEvent_free(ANeuralNetworksEvent* event) __NNAPI_INTRODUCED_IN(27); ANeuralNetworksEvent_free :: proc(event: ^ANeuralNetworksEvent) ---
/** /**
* Create a {@link ANeuralNetworksEvent} from a sync_fence file descriptor. * Create a {@link ANeuralNetworksEvent} from a sync_fence file descriptor.
@@ -1819,9 +1802,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
int ANeuralNetworksEvent_createFromSyncFenceFd(int sync_fence_fd, ANeuralNetworksEvent** event) ANeuralNetworksEvent_createFromSyncFenceFd :: proc(sync_fence_fd: i32, event: ^^ANeuralNetworksEvent) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(30);
/** /**
* Get sync_fence file descriptor from the event. * Get sync_fence file descriptor from the event.
@@ -1843,9 +1826,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if successful. * @return ANEURALNETWORKS_NO_ERROR if successful.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
int ANeuralNetworksEvent_getSyncFenceFd(const ANeuralNetworksEvent* event, int* sync_fence_fd) ANeuralNetworksEvent_getSyncFenceFd :: proc(event: ^ANeuralNetworksEvent, sync_fence_fd: ^i32) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(30);
/** /**
* Schedule asynchronous evaluation of the execution with dependencies. * Schedule asynchronous evaluation of the execution with dependencies.
@@ -1922,11 +1905,9 @@ foreign android {
* @return ANEURALNETWORKS_NO_ERROR if the evaluation is successfully scheduled. * @return ANEURALNETWORKS_NO_ERROR if the evaluation is successfully scheduled.
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
* Available since API level 30.
*/ */
int ANeuralNetworksExecution_startComputeWithDependencies( ANeuralNetworksExecution_startComputeWithDependencies :: proc(execution: ^ANeuralNetworksExecution, dependencies: ^^ANeuralNetworksEvent, num_dependencies: u32, duration: u64, event: ^^ANeuralNetworksEvent) -> NNResultCode ---
ANeuralNetworksExecution* execution, const ANeuralNetworksEvent* const* dependencies,
uint32_t num_dependencies, uint64_t duration, ANeuralNetworksEvent** event)
__NNAPI_INTRODUCED_IN(30);
/** /**
* Get the NNAPI runtime feature level. * Get the NNAPI runtime feature level.
@@ -1946,9 +1927,9 @@ foreign android {
* after NNAPI feature level 5 and API levels after S (31). * after NNAPI feature level 5 and API levels after S (31).
* *
* Example usage: * Example usage:
* int device_api_level = android_get_device_api_level(); * int device_api_level = android_get_device_api_level()
* int64_t runtime_feature_level = (device_api_level < __ANDROID_API_S__) ? * int64_t runtime_feature_level = (device_api_level < __ANDROID_API_S__) ?
* device_api_level : ANeuralNetworks_getRuntimeFeatureLevel(); * device_api_level : ANeuralNetworks_getRuntimeFeatureLevel()
* *
* Runtime feature level is closely related to NNAPI device feature level * Runtime feature level is closely related to NNAPI device feature level
* ({@link ANeuralNetworksDevice_getFeatureLevel}), which indicates an NNAPI device feature level * ({@link ANeuralNetworksDevice_getFeatureLevel}), which indicates an NNAPI device feature level
@@ -1962,8 +1943,9 @@ foreign android {
* It is NOT an Android API level. * It is NOT an Android API level.
* *
* Available since NNAPI feature level 5. * Available since NNAPI feature level 5.
* Available since API level 31.
*/ */
int64_t ANeuralNetworks_getRuntimeFeatureLevel() __NNAPI_INTRODUCED_IN(31); ANeuralNetworks_getRuntimeFeatureLevel :: proc() -> FeatureLevelCode ---
/** /**
* Specifies whether the {@link ANeuralNetworksExecution} is able to accept padded input and output * Specifies whether the {@link ANeuralNetworksExecution} is able to accept padded input and output
@@ -1998,9 +1980,9 @@ foreign android {
* {@link ANeuralNetworksExecution_setOutputFromMemory} has been called on the execution. * {@link ANeuralNetworksExecution_setOutputFromMemory} has been called on the execution.
* *
* Available since NNAPI feature level 5. * Available since NNAPI feature level 5.
* Available since API level 31.
*/ */
int ANeuralNetworksExecution_enableInputAndOutputPadding(ANeuralNetworksExecution* execution, ANeuralNetworksExecution_enableInputAndOutputPadding :: proc(execution: ^ANeuralNetworksExecution, enable: bool) -> NNResultCode ---
bool enable) __NNAPI_INTRODUCED_IN(31);
/** /**
* Get the preferred buffer and memory alignment of an input to an execution created from a * Get the preferred buffer and memory alignment of an input to an execution created from a
@@ -2029,10 +2011,9 @@ foreign android {
* ANEURALNETWORKS_BAD_DATA if the index is out of range. * ANEURALNETWORKS_BAD_DATA if the index is out of range.
* *
* Available since NNAPI feature level 5. * Available since NNAPI feature level 5.
* Available since API level 31.
*/ */
int ANeuralNetworksCompilation_getPreferredMemoryAlignmentForInput( ANeuralNetworksCompilation_getPreferredMemoryAlignmentForInput :: proc(compilation: ^ANeuralNetworksCompilation, index: u32, alignment: ^u32) -> NNResultCode ---
const ANeuralNetworksCompilation* compilation, uint32_t index, uint32_t* alignment)
__NNAPI_INTRODUCED_IN(31);
/** /**
* Get the preferred buffer and memory end padding of an input to an execution created from a * Get the preferred buffer and memory end padding of an input to an execution created from a
@@ -2067,10 +2048,9 @@ foreign android {
* ANEURALNETWORKS_BAD_DATA if the index is out of range. * ANEURALNETWORKS_BAD_DATA if the index is out of range.
* *
* Available since NNAPI feature level 5. * Available since NNAPI feature level 5.
* Available since API level 31.
*/ */
int ANeuralNetworksCompilation_getPreferredMemoryPaddingForInput( ANeuralNetworksCompilation_getPreferredMemoryPaddingForInput :: proc(compilation: ^ANeuralNetworksCompilation, index: u32, padding: ^u32) -> NNResultCode ---
const ANeuralNetworksCompilation* compilation, uint32_t index, uint32_t* padding)
__NNAPI_INTRODUCED_IN(31);
/** /**
* Get the preferred buffer and memory alignment of an output to an execution created from a * Get the preferred buffer and memory alignment of an output to an execution created from a
@@ -2099,10 +2079,9 @@ foreign android {
* ANEURALNETWORKS_BAD_DATA if the index is out of range. * ANEURALNETWORKS_BAD_DATA if the index is out of range.
* *
* Available since NNAPI feature level 5. * Available since NNAPI feature level 5.
* Available since API level 31.
*/ */
int ANeuralNetworksCompilation_getPreferredMemoryAlignmentForOutput( ANeuralNetworksCompilation_getPreferredMemoryAlignmentForOutput :: proc(compilation: ^ANeuralNetworksCompilation, index: u32, alignment: ^u32) -> NNResultCode ---
const ANeuralNetworksCompilation* compilation, uint32_t index, uint32_t* alignment)
__NNAPI_INTRODUCED_IN(31);
/** /**
* Get the preferred memory end padding of an output to an execution created from a particular * Get the preferred memory end padding of an output to an execution created from a particular
@@ -2137,10 +2116,9 @@ foreign android {
* ANEURALNETWORKS_BAD_DATA if the index is out of range. * ANEURALNETWORKS_BAD_DATA if the index is out of range.
* *
* Available since NNAPI feature level 5. * Available since NNAPI feature level 5.
* Available since API level 31.
*/ */
int ANeuralNetworksCompilation_getPreferredMemoryPaddingForOutput( ANeuralNetworksCompilation_getPreferredMemoryPaddingForOutput :: proc(compilation: ^ANeuralNetworksCompilation, index: u32, padding: ^u32) -> NNResultCode ---
const ANeuralNetworksCompilation* compilation, uint32_t index, uint32_t* padding)
__NNAPI_INTRODUCED_IN(31);
/** /**
* Specifies whether the {@link ANeuralNetworksExecution} can be reused for multiple computations. * Specifies whether the {@link ANeuralNetworksExecution} can be reused for multiple computations.
@@ -2166,7 +2144,7 @@ foreign android {
* ANEURALNETWORKS_BAD_STATE if the execution is not in the preparation state. * ANEURALNETWORKS_BAD_STATE if the execution is not in the preparation state.
* *
* Available since NNAPI feature level 5. * Available since NNAPI feature level 5.
* Available since API level 31.
*/ */
int ANeuralNetworksExecution_setReusable(ANeuralNetworksExecution* execution, bool reusable) ANeuralNetworksExecution_setReusable :: proc(execution: ^ANeuralNetworksExecution, reusable: bool) -> NNResultCode ---
__NNAPI_INTRODUCED_IN(31);
} }
+8 -8
View File
@@ -22,7 +22,7 @@ ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN :: 32
* Aliasing to {@link OperationCode}, used in function * Aliasing to {@link OperationCode}, used in function
* {@link ANeuralNetworksModel_addOperation}. * {@link ANeuralNetworksModel_addOperation}.
*/ */
ANeuralNetworksOperationType :: i32 ANeuralNetworksOperationType :: OperationCode
/** /**
* Operand types. * Operand types.
@@ -186,7 +186,7 @@ OperandCode :: enum i32 {
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
*/ */
OperationCode :: enum { OperationCode :: enum i32 {
// Operations below are available since NNAPI feature level 1. // Operations below are available since NNAPI feature level 1.
/** /**
@@ -5871,7 +5871,7 @@ PaddingCode :: enum {
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
*/ */
PreferenceCode :: enum { PreferenceCode :: enum i32 {
/** /**
* Prefer executing in a way that minimizes battery drain. * Prefer executing in a way that minimizes battery drain.
* This is desirable for compilations that will be executed often. * This is desirable for compilations that will be executed often.
@@ -5894,7 +5894,7 @@ PreferenceCode :: enum {
* *
* The type of NNAPI device. * The type of NNAPI device.
*/ */
DeviceTypeCode :: enum { DeviceTypeCode :: enum i32 {
/** The device type cannot be provided. */ /** The device type cannot be provided. */
UNKNOWN = 0, UNKNOWN = 0,
/** The device does not fall into any category below. */ /** The device does not fall into any category below. */
@@ -5923,7 +5923,7 @@ DeviceTypeCode :: enum {
* {@link ANeuralNetworks_getRuntimeFeatureLevel} must be compared against * {@link ANeuralNetworks_getRuntimeFeatureLevel} must be compared against
* these enum values instead of the Android API level. * these enum values instead of the Android API level.
*/ */
FeatureLevelCode :: enum { FeatureLevelCode :: enum i64 {
/** NNAPI specification available in Android O-MR1, Android NNAPI feature level 1 */ /** NNAPI specification available in Android O-MR1, Android NNAPI feature level 1 */
LEVEL_1 = 27, LEVEL_1 = 27,
/** NNAPI specification available in Android P, Android NNAPI feature level 2 */ /** NNAPI specification available in Android P, Android NNAPI feature level 2 */
@@ -5959,7 +5959,7 @@ FeatureLevelCode :: enum {
* *
* Available since NNAPI feature level 1. * Available since NNAPI feature level 1.
*/ */
NNResultCode :: enum { NNResultCode :: enum i32 {
/** /**
* Operation was successful. * Operation was successful.
*/ */
@@ -6060,7 +6060,7 @@ NNResultCode :: enum {
* *
* Available since NNAPI feature level 3. * Available since NNAPI feature level 3.
*/ */
DurationCode :: enum { DurationCode :: enum i32 {
// Execution time on hardware (not driver, which runs on host processor). // Execution time on hardware (not driver, which runs on host processor).
DURATION_ON_HARDWARE = 0, DURATION_ON_HARDWARE = 0,
// Execution time in driver (including time on hardware). Excludes overhead // Execution time in driver (including time on hardware). Excludes overhead
@@ -6088,7 +6088,7 @@ DurationCode :: enum {
* *
* Available since NNAPI feature level 4. * Available since NNAPI feature level 4.
*/ */
PriorityCode :: enum { PriorityCode :: enum i32 {
LOW = 90, LOW = 90,
MEDIUM = 100, MEDIUM = 100,
HIGH = 110, HIGH = 110,
+4 -25
View File
@@ -147,27 +147,6 @@ AImageDecoderBlendOp :: enum i32 {
SRC_OVER = 2, SRC_OVER = 2,
} }
ResultOrRepeatCount :: union {
AImageDecoderResult,
AImageDecoderRepeatCount,
i32,
}
ResultOrFrameDuration :: union {
AImageDecoderResult,
i64,
}
ResultOrFrameDisposalOp :: union {
AImageDecoderResult,
AImageDecoderFrameDisposalOp,
}
ResultOrBlendOp :: union {
AImageDecoderResult,
AImageDecoderBlendOp,
}
/** /**
* Opaque handle for decoding images. * Opaque handle for decoding images.
* *
@@ -737,7 +716,7 @@ foreign android {
* - {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER}: The AImageDecoder * - {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER}: The AImageDecoder
* is null. * is null.
*/ */
AImageDecoder_getRepeatCount :: proc(decoder: ^AImageDecoder) -> ResultOrRepeatCount --- AImageDecoder_getRepeatCount :: proc(decoder: ^AImageDecoder) -> i32 ---
/** /**
* Advance to the next frame in the animation. * Advance to the next frame in the animation.
@@ -864,7 +843,7 @@ foreign android {
* Errors: * Errors:
* - returns {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER} if |info| is null. * - returns {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER} if |info| is null.
*/ */
AImageDecoderFrameInfo_getDuration :: proc(info: ^AImageDecoderFrameInfo) -> ResultOrFrameDuration --- AImageDecoderFrameInfo_getDuration :: proc(info: ^AImageDecoderFrameInfo) -> i64 ---
/** /**
* The rectangle of the image (within 0, 0, * The rectangle of the image (within 0, 0,
@@ -936,7 +915,7 @@ foreign android {
* Errors: * Errors:
* - {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER} if |info| is null. * - {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER} if |info| is null.
*/ */
AImageDecoderFrameInfo_getDisposeOp :: proc(info: ^AImageDecoderFrameInfo) -> ResultOrFrameDisposalOp --- AImageDecoderFrameInfo_getDisposeOp :: proc(info: ^AImageDecoderFrameInfo) -> i32 ---
/** /**
* Return how this frame is blended with the previous frame. * Return how this frame is blended with the previous frame.
@@ -954,7 +933,7 @@ foreign android {
* Errors: * Errors:
* - {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER} if |info| is null. * - {@link ANDROID_IMAGE_DECODER_BAD_PARAMETER} if |info| is null.
*/ */
AImageDecoderFrameInfo_getBlendOp :: proc(info: ^AImageDecoderFrameInfo) -> ResultOrBlendOp --- AImageDecoderFrameInfo_getBlendOp :: proc(info: ^AImageDecoderFrameInfo) -> i32 ---
/** /**
* Whether to have AImageDecoder store the frame prior to a * Whether to have AImageDecoder store the frame prior to a
+3 -3
View File
@@ -511,7 +511,7 @@ Keycode :: enum {
MANNER_MODE = 205, MANNER_MODE = 205,
/** 3D Mode key. /** 3D Mode key.
* Toggles the display between 2D and 3D mode. */ * Toggles the display between 2D and 3D mode. */
3D_MODE = 206, _3D_MODE = 206,
/** Contacts special function key. /** Contacts special function key.
* Used to launch an address book application. */ * Used to launch an address book application. */
CONTACTS = 207, CONTACTS = 207,
@@ -569,9 +569,9 @@ Keycode :: enum {
* Goes to the top of media menu. */ * Goes to the top of media menu. */
MEDIA_TOP_MENU = 226, MEDIA_TOP_MENU = 226,
/** '11' key. */ /** '11' key. */
11 = 227, KEY_11 = 227,
/** '12' key. */ /** '12' key. */
12 = 228, KEY_12 = 228,
/** Last Channel key. /** Last Channel key.
* Goes to the last viewed channel. */ * Goes to the last viewed channel. */
LAST_CHANNEL = 229, LAST_CHANNEL = 229,
+3 -8
View File
@@ -12,7 +12,7 @@ foreign import android "system:android"
* MUST check the return from these functions to discover when * MUST check the return from these functions to discover when
* data is available on such fds and process it. * data is available on such fds and process it.
*/ */
ALOOPER_PREPARE_ALLOW_NON_CALLBACKS = 1<<0 ALOOPER_PREPARE_ALLOW_NON_CALLBACKS :: 1<<0
/** Result from ALooper_pollOnce() and ALooper_pollAll(). */ /** Result from ALooper_pollOnce() and ALooper_pollAll(). */
ALooperPollResult :: enum i32 { ALooperPollResult :: enum i32 {
@@ -41,11 +41,6 @@ ALooperPollResult :: enum i32 {
ERROR = -4, ERROR = -4,
} }
PollResultOrIdent :: union {
ALooperPollResult,
i32,
}
/** /**
* Flags for file descriptor events that a looper can monitor. * Flags for file descriptor events that a looper can monitor.
* *
@@ -174,14 +169,14 @@ foreign android {
* This method does not return until it has finished invoking the appropriate callbacks * This method does not return until it has finished invoking the appropriate callbacks
* for all file descriptors that were signalled. * for all file descriptors that were signalled.
*/ */
ALooper_pollOnce :: proc(timeoutMillis: i32, outFd: ^i32, outEvents: ^i32, outData: ^rawptr) -> PollResultOrIdent --- ALooper_pollOnce :: proc(timeoutMillis: i32, outFd: ^i32, outEvents: ^i32, outData: ^rawptr) -> i32 ---
/** /**
* Like ALooper_pollOnce(), but performs all pending callbacks until all * Like ALooper_pollOnce(), but performs all pending callbacks until all
* data has been consumed or a file descriptor is available with no callback. * data has been consumed or a file descriptor is available with no callback.
* This function will never return ALOOPER_POLL_CALLBACK. * This function will never return ALOOPER_POLL_CALLBACK.
*/ */
ALooper_pollAll :: proc(timeoutMillis: i32, outFd: ^i32, outEvents: ^i32, outData: ^rawptr) -> PollResultOrIdent --- ALooper_pollAll :: proc(timeoutMillis: i32, outFd: ^i32, outEvents: ^i32, outData: ^rawptr) -> i32 ---
/** /**
* Wakes the poll asynchronously. * Wakes the poll asynchronously.
+21
View File
@@ -14,7 +14,28 @@ foreign import android "system:android"
*/ */
net_handle_t :: distinct u64 net_handle_t :: distinct u64
// TODO: these should probably be put in android's libc bindings or something
uid_t :: u32 uid_t :: u32
socklen_t :: u32 // See: https://android.googlesource.com/platform/bionic/+/main/docs/32-bit-abi.md
sa_family_t :: u16
#assert(size_of(sockaddr) == 16)
sockaddr :: struct {
sa_family: sa_family_t,
sa_data: [14]byte,
}
addrinfo :: struct {
ai_flags: i32, /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
ai_family: i32, /* PF_xxx */
ai_socktype: i32, /* SOCK_xxx */
ai_protocol: i32, /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
ai_addrlen: socklen_t, /* length of ai_addr */
ai_canonname: cstring, /* canonical name for hostname */
ai_addr: ^sockaddr, /* binary address */
ai_next: ^addrinfo, /* next structure in linked list */
}
/** /**
* The value NETWORK_UNSPECIFIED indicates no specific network. * The value NETWORK_UNSPECIFIED indicates no specific network.
+1 -3
View File
@@ -256,9 +256,7 @@ foreign android {
* *any* thread it will send a message to the main thread of the process * *any* thread it will send a message to the main thread of the process
* where the Java finish call will take place. * where the Java finish call will take place.
*/ */
// TODO: wtf is format here ?? is there an enum or constants for this proc? ANativeActivity_setWindowFormat :: proc(activity: ^ANativeActivity, format: AHardwareBuffer_Format) ---
// I think this might be AHardwareBuffer_Format, but annoyingly so, it's u32 while this proc requires i32.
ANativeActivity_setWindowFormat :: proc(activity: ^ANativeActivity, format: i32) ---
/** /**
* Change the window flags of the given activity. Calls getWindow().setFlags() * Change the window flags of the given activity. Calls getWindow().setFlags()
+6 -8
View File
@@ -5,15 +5,15 @@ package android
* Legacy window pixel format names, kept for backwards compatibility. * Legacy window pixel format names, kept for backwards compatibility.
* New code and APIs should use AHARDWAREBUFFER_FORMAT_*. * New code and APIs should use AHARDWAREBUFFER_FORMAT_*.
*/ */
ANativeWindow_LegacyFormat :: enum { ANativeWindow_LegacyFormat :: enum u32 {
// NOTE: these values must match the values from graphics/common/x.x/types.hal // NOTE: these values must match the values from graphics/common/x.x/types.hal
/** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Alpha: 8 bits. **/ /** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Alpha: 8 bits. **/
RGBA_8888 = AHardwareBuffer_Format.R8G8B8A8_UNORM, RGBA_8888 = u32(AHardwareBuffer_Format.R8G8B8A8_UNORM),
/** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Unused: 8 bits. **/ /** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Unused: 8 bits. **/
RGBX_8888 = AHardwareBuffer_Format.R8G8B8X8_UNORM, RGBX_8888 = u32(AHardwareBuffer_Format.R8G8B8X8_UNORM),
/** Red: 5 bits, Green: 6 bits, Blue: 5 bits. **/ /** Red: 5 bits, Green: 6 bits, Blue: 5 bits. **/
RGB_565 = AHardwareBuffer_Format.R5G6B5_UNORM, RGB_565 = u32(AHardwareBuffer_Format.R5G6B5_UNORM),
} }
/** /**
@@ -93,8 +93,7 @@ ANativeWindow_Buffer :: struct {
stride: i32, stride: i32,
/// The format of the buffer. One of AHardwareBuffer_Format. /// The format of the buffer. One of AHardwareBuffer_Format.
// TODO: u32/i32 mismatch with the enum. format: AHardwareBuffer_Format,
int32_t format,
/// The actual bits. /// The actual bits.
bits: rawptr, bits: rawptr,
@@ -136,8 +135,7 @@ foreign android {
* *
* \return a negative value on error. * \return a negative value on error.
*/ */
// TODO: should return AHardwarebuffer_Format but i32/u32 mismatch ANativeWindow_getFormat :: proc(window: ^ANativeWindow) -> AHardwareBuffer_Format ---
ANativeWindow_getFormat :: proc(window: ^ANativeWindow) -> i32 ---
/** /**
* Change the format and size of the window buffers. * Change the format and size of the window buffers.
+39
View File
@@ -0,0 +1,39 @@
//+build android
package android
foreign import android "system:android"
/** Flag for an obb file, returned by AObbInfo_getFlags(). */
ObbFlags :: enum i32 {
OVERLAY = 0x0001,
}
/** {@link AObbInfo} is an opaque type representing information for obb storage. */
AObbInfo :: struct{}
foreign android {
/**
* Scan an OBB and get information about it.
*/
AObbScanner_getObbInfo :: proc(filename: cstring) -> ^AObbInfo ---
/**
* Destroy the AObbInfo object. You must call this when finished with the object.
*/
AObbInfo_delete :: proc(obbInfo: ^AObbInfo) ---
/**
* Get the package name for the OBB.
*/
AObbInfo_getPackageName :: proc(obbInfo: ^AObbInfo) -> cstring ---
/**
* Get the version of an OBB file.
*/
AObbInfo_getVersion :: proc(obbInfo: ^AObbInfo) -> i32 ---
/**
* Get the flags of an OBB file.
*/
AObbInfo_getFlags :: proc(obbInfo: ^AObbInfo) -> ObbFlags ---
}
+127
View File
@@ -0,0 +1,127 @@
//+build android
package android
foreign import android "system:android"
/**
* An opaque type representing a handle to a performance hint manager.
* It must be released after use.
*
* <p>To use:<ul>
* <li>Obtain the performance hint manager instance by calling
* {@link APerformanceHint_getManager} function.</li>
* <li>Create an {@link APerformanceHintSession} with
* {@link APerformanceHint_createSession}.</li>
* <li>Get the preferred update rate in nanoseconds with
* {@link APerformanceHint_getPreferredUpdateRateNanos}.</li>
*/
APerformanceHintManager :: struct{}
/**
* An opaque type representing a handle to a performance hint session.
* A session can only be acquired from a {@link APerformanceHintManager}
* with {@link APerformanceHint_getPreferredUpdateRateNanos}. It must be
* freed with {@link APerformanceHint_closeSession} after use.
*
* A Session represents a group of threads with an inter-related workload such that hints for
* their performance should be considered as a unit. The threads in a given session should be
* long-life and not created or destroyed dynamically.
*
* <p>Each session is expected to have a periodic workload with a target duration for each
* cycle. The cycle duration is likely greater than the target work duration to allow other
* parts of the pipeline to run within the available budget. For example, a renderer thread may
* work at 60hz in order to produce frames at the display's frame but have a target work
* duration of only 6ms.</p>
*
* <p>After each cycle of work, the client is expected to use
* {@link APerformanceHint_reportActualWorkDuration} to report the actual time taken to
* complete.</p>
*
* <p>To use:<ul>
* <li>Update a sessions target duration for each cycle of work
* with {@link APerformanceHint_updateTargetWorkDuration}.</li>
* <li>Report the actual duration for the last cycle of work with
* {@link APerformanceHint_reportActualWorkDuration}.</li>
* <li>Release the session instance with
* {@link APerformanceHint_closeSession}.</li></ul></p>
*/
APerformanceHintSession :: struct{}
foreign android {
/**
* Acquire an instance of the performance hint manager.
*
* Available since API level 33.
*
* @return manager instance on success, nullptr on failure.
*/
APerformanceHint_getManager :: proc() -> ^APerformanceHintManager ---
/**
* Creates a session for the given set of threads and sets their initial target work
* duration.
*
* Available since API level 33.
*
* @param manager The performance hint manager instance.
* @param threadIds The list of threads to be associated with this session. They must be part of
* this app's thread group.
* @param size the size of threadIds.
* @param initialTargetWorkDurationNanos The desired duration in nanoseconds for the new session.
* This must be positive.
* @return manager instance on success, nullptr on failure.
*/
APerformanceHint_createSession :: proc(manager: ^APerformanceHintManager, threadIds: [^]i32, size: uint, initialTargetWorkDurationNanos: i64) -> ^APerformanceHintSession ---
/**
* Get preferred update rate information for this device.
*
* Available since API level 33.
*
* @param manager The performance hint manager instance.
* @return the preferred update rate supported by device software.
*/
APerformanceHint_getPreferredUpdateRateNanos :: proc(manager: ^APerformanceHintManager) -> i64 ---
/**
* Updates this session's target duration for each cycle of work.
*
* Available since API level 33.
*
* @param session The performance hint session instance to update.
* @param targetDurationNanos the new desired duration in nanoseconds. This must be positive.
* @return 0 on success
* EINVAL if targetDurationNanos is not positive.
* EPIPE if communication with the system service has failed.
*/
APerformanceHint_updateTargetWorkDuration :: proc(session: ^APerformanceHintSession, targetDurationNanos: i64) -> i32 ---
/**
* Reports the actual duration for the last cycle of work.
*
* <p>The system will attempt to adjust the core placement of the threads within the thread
* group and/or the frequency of the core on which they are run to bring the actual duration
* close to the target duration.</p>
*
* Available since API level 33.
*
* @param session The performance hint session instance to update.
* @param actualDurationNanos how long the thread group took to complete its last task in
* nanoseconds. This must be positive.
* @return 0 on success
* EINVAL if actualDurationNanos is not positive.
* EPIPE if communication with the system service has failed.
*/
APerformanceHint_reportActualWorkDuration :: proc(session: ^APerformanceHintSession, actualDurationNanos: i64) -> i32 ---
/**
* Release the performance hint manager pointer acquired via
* {@link APerformanceHint_createSession}.
*
* Available since API level 33.
*
* @param session The performance hint session instance to release.
*/
APerformanceHint_closeSession :: proc(session: ^APerformanceHintSession) ---
}
+68
View File
@@ -0,0 +1,68 @@
//+build android
package android
foreign import android "system:android"
// TODO: move to libc or something
pid_t :: i32
/**
* Permission check results.
*
* Introduced in API 31.
*/
PermissionManagerResult :: enum i32 {
/**
* This is returned by APermissionManager_checkPermission()
* if the permission has been granted to the given package.
*/
PERMISSION_GRANTED = 0,
/**
* This is returned by APermissionManager_checkPermission()
* if the permission has not been granted to the given package.
*/
PERMISSION_DENIED = -1,
}
/**
* Permission check return status values.
*
* Introduced in API 31.
*/
PermissionManagerStatus :: enum i32 {
/**
* This is returned if the permission check completed without errors.
* The output result is valid and contains one of {::PERMISSION_MANAGER_PERMISSION_GRANTED,
* ::PERMISSION_MANAGER_PERMISSION_DENIED}.
*/
OK = 0,
/**
* This is returned if the permission check encountered an unspecified error.
* The output result is unmodified.
*/
ERROR_UNKNOWN = -1,
/**
* This is returned if the permission check failed because the service is
* unavailable. The output result is unmodified.
*/
SERVICE_UNAVAILABLE = -2,
}
foreign android {
/**
* Checks whether the package with the given pid/uid has been granted a permission.
*
* Note that the Java API of Context#checkPermission() is usually faster due to caching,
* thus is preferred over this API wherever possible.
*
* Available since API level 31
*
* @param permission the permission to be checked.
* @param pid the process id of the package to be checked.
* @param uid the uid of the package to be checked.
* @param outResult output of the permission check result.
*
* @return error codes if any error happened during the check.
*/
APermissionManager_checkPermission :: proc(permission: cstring, pid: pid_t, uid: uid_t, outResult: ^PermissionManagerResult) -> PermissionManagerStatus ---
}
+1058
View File
File diff suppressed because it is too large Load Diff