mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 00:06:09 +03:00
91 lines
3.7 KiB
C
91 lines
3.7 KiB
C
// Copyright 2017 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef BASE_ANDROID_ANDROID_HARDWARE_BUFFER_ABI_H_
|
|
#define BASE_ANDROID_ANDROID_HARDWARE_BUFFER_ABI_H_
|
|
|
|
// Minimal binary interface definitions for AHardwareBuffer based on
|
|
// include/android/hardware_buffer.h from the Android NDK for platform level
|
|
// 26+. This is only intended for use from the AndroidHardwareBufferCompat
|
|
// wrapper for building without NDK platform level support, it is not a
|
|
// general-use header and is not complete.
|
|
//
|
|
// TODO(crbug.com/771171): Delete this file when third_party/android_ndk/
|
|
// is updated to a version that contains the android/hardware_buffer.h file.
|
|
//
|
|
// Please refer to the API documentation for details:
|
|
// https://developer.android.com/ndk/reference/hardware__buffer_8h.html
|
|
|
|
#include <stdint.h>
|
|
|
|
// Use "C" linkage to match the original header file. This isn't strictly
|
|
// required since the file is not declaring global functions, but the types
|
|
// should remain in the global namespace for compatibility, and it's a reminder
|
|
// that forward declarations elsewhere should use "extern "C" to avoid
|
|
// namespace issues.
|
|
extern "C" {
|
|
|
|
typedef struct AHardwareBuffer AHardwareBuffer;
|
|
typedef struct ARect ARect;
|
|
|
|
enum {
|
|
AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM = 1,
|
|
AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM = 2,
|
|
AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM = 3,
|
|
AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM = 4,
|
|
AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT = 0x16,
|
|
AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM = 0x2b,
|
|
AHARDWAREBUFFER_FORMAT_BLOB = 0x21,
|
|
};
|
|
|
|
enum {
|
|
AHARDWAREBUFFER_USAGE_CPU_READ_NEVER = 0UL,
|
|
AHARDWAREBUFFER_USAGE_CPU_READ_RARELY = 2UL,
|
|
AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN = 3UL,
|
|
AHARDWAREBUFFER_USAGE_CPU_READ_MASK = 0xFUL,
|
|
AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER = 0UL << 4,
|
|
AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY = 2UL << 4,
|
|
AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN = 3UL << 4,
|
|
AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK = 0xFUL << 4,
|
|
AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE = 1UL << 8,
|
|
AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT = 1UL << 9,
|
|
AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT = 1UL << 14,
|
|
AHARDWAREBUFFER_USAGE_VIDEO_ENCODE = 1UL << 16,
|
|
AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA = 1UL << 23,
|
|
AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER = 1UL << 24,
|
|
};
|
|
|
|
typedef struct AHardwareBuffer_Desc {
|
|
uint32_t width;
|
|
uint32_t height;
|
|
uint32_t layers;
|
|
uint32_t format;
|
|
uint64_t usage;
|
|
uint32_t stride;
|
|
uint32_t rfu0;
|
|
uint64_t rfu1;
|
|
} AHardwareBuffer_Desc;
|
|
|
|
using PFAHardwareBuffer_allocate = void (*)(const AHardwareBuffer_Desc* desc,
|
|
AHardwareBuffer** outBuffer);
|
|
using PFAHardwareBuffer_acquire = void (*)(AHardwareBuffer* buffer);
|
|
using PFAHardwareBuffer_describe = void (*)(const AHardwareBuffer* buffer,
|
|
AHardwareBuffer_Desc* outDesc);
|
|
using PFAHardwareBuffer_lock = int (*)(AHardwareBuffer* buffer,
|
|
uint64_t usage,
|
|
int32_t fence,
|
|
const ARect* rect,
|
|
void** outVirtualAddress);
|
|
using PFAHardwareBuffer_recvHandleFromUnixSocket =
|
|
int (*)(int socketFd, AHardwareBuffer** outBuffer);
|
|
using PFAHardwareBuffer_release = void (*)(AHardwareBuffer* buffer);
|
|
using PFAHardwareBuffer_sendHandleToUnixSocket =
|
|
int (*)(const AHardwareBuffer* buffer, int socketFd);
|
|
using PFAHardwareBuffer_unlock = int (*)(AHardwareBuffer* buffer,
|
|
int32_t* fence);
|
|
|
|
} // extern "C"
|
|
|
|
#endif // BASE_ANDROID_ANDROID_HARDWARE_BUFFER_ABI_H_
|