// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// An implementation of the subset of hardware buffers functionality required by
// NNAPI. The upstream implementation of hardware buffers can be found in the
// AOSP source file frameworks/native/libs/nativewindow/AHardwareBuffer.cpp. See
// https://android.googlesource.com/platform/frameworks/native/+/refs/heads/master/libs/nativewindow/AHardwareBuffer.cpp

// Unused functions are left without any implementations. Should a future
// version of NNAPI need a new function, we will be notified through a link
// error.

// android/log.h contains __INTRODUCED_IN() macro and must be included before
// hardware_buffer.h
#include <android/log.h>
#include <vndk/hardware_buffer.h>


int AHardwareBuffer_allocate(const AHardwareBuffer_Desc* /*desc*/,
                             AHardwareBuffer** /*outBuffer*/) {
  return 0;
}

int AHardwareBuffer_createFromHandle(const AHardwareBuffer_Desc* /*desc*/,
                                     const native_handle_t* /*handle*/,
                                     int32_t /*method*/,
                                     AHardwareBuffer** /*outBuffer*/) {
  return 0;
}

void AHardwareBuffer_describe(const AHardwareBuffer* /*buffer*/,
                              AHardwareBuffer_Desc* /*outDesc*/) {}

const native_handle_t* AHardwareBuffer_getNativeHandle(
    const AHardwareBuffer* /*buffer*/) {
  return nullptr;
}

int AHardwareBuffer_lock(AHardwareBuffer* /*buffer*/,
                         uint64_t /*usage*/,
                         int32_t /*fence*/,
                         const ARect* /*rect*/,
                         void** /*outVirtualAddress*/) {
  return 0;
}

void AHardwareBuffer_release(AHardwareBuffer* /*buffer*/) {}

int AHardwareBuffer_unlock(AHardwareBuffer* /*buffer*/, int32_t* /*fence*/) {
  return 0;
}
