Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

AHardwareBuffer

AHardwareBuffer는 gralloc 버퍼를 래핑하는 공유 메모리 유형입니다. Android 10의 Neural Networks API(NNAPI)는 AHardwareBuffer의 사용을 지원합니다. 따라서 드라이버가 데이터를 복사하지 않고도 실행을 수행할 수 있어 앱의 성능과 전력 소비가 개선됩니다. 예를 들어 카메라 HAL 스택은 머신러닝 워크로드와 관련하여 카메라 NDK 및 미디어 NDK API에 의해 생성된 AHardwareBuffer 핸들을 사용하여 AHardwareBuffer 개체를 NNAPI에 전달할 수 있습니다. 자세한 내용은 ANeuralNetworksMemory_createFromAHardwareBuffer를 참조하세요.

NNAPI에 사용되는 AHardwareBuffer 개체는 이름이 hardware_buffer 또는 hardware_buffer_blob로 지정된 hidl_memory 구조를 통해 드라이버에 전달됩니다. hidl_memory 구조 hardware_buffer_blobAHARDWAREBUFFER_FORMAT_BLOB 형식의 AHardwareBuffer 개체만 표현합니다.

프레임워크에서 요구한 정보는 hidl_memory 구조의 hidl_handle 필드에서 인코딩됩니다. hidl_handle 필드는 AHardwareBuffer 또는 Gralloc 버퍼에 대한 모든 필수 메타데이터를 전부 인코딩하는 native_handle을 래핑합니다.

드라이버는 제공된 hidl_handle 필드를 제대로 디코딩하고 hidl_handle에 의해 설명된 메모리에 액세스해야 합니다. getSupportedOperations_1_2, getSupportedOperations_1_1 또는 getSupportedOperations 메서드가 호출되면 드라이버는 제공된 hidl_handle을 디코딩하고 hidl_handle에 의해 설명된 메모리에 액세스할 수 있는지를 감지해야 합니다. 모델 준비는 상수 피연산자에 사용되는 hidl_handle 필드가 지원되지 않을 경우 실패해야 합니다. 실행은 실행의 입력 또는 출력 피연산자에 사용되는 hidl_handle 필드가 지원되지 않는 경우 실패해야 합니다. 모델 준비 또는 실행이 실패할 경우 드라이버에서 GENERAL_FAILURE 오류를 반환하는 것이 좋습니다.