| /* |
| * Copyright (C) 2018 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #pragma once |
| |
| #include <cutils/native_handle.h> |
| |
| #include <cstdint> |
| #include <cstring> |
| |
| // clang-format off |
| #define ANDROID_NATIVE_MAKE_CONSTANT(a, b, c, d) \ |
| ((static_cast<unsigned int>(a) << 24) | \ |
| (static_cast<unsigned int>(b) << 16) | \ |
| (static_cast<unsigned int>(c) << 8) | \ |
| (static_cast<unsigned int>(d) << 0)) |
| // clang-format on |
| |
| struct android_native_base_t { |
| int magic; |
| int version; |
| void* reserved[4]; |
| void (*incRef)(android_native_base_t*); |
| void (*decRef)(android_native_base_t*); |
| }; |
| |
| #define ANDROID_NATIVE_BUFFER_MAGIC ANDROID_NATIVE_MAKE_CONSTANT('_', 'b', 'f', 'r') |
| |
| struct ANativeWindowBuffer { |
| ANativeWindowBuffer() { |
| common.magic = ANDROID_NATIVE_BUFFER_MAGIC; |
| common.version = sizeof(ANativeWindowBuffer); |
| memset(common.reserved, 0, sizeof(common.reserved)); |
| } |
| |
| android_native_base_t common; |
| |
| int width; |
| int height; |
| int stride; |
| int format; |
| int usage_deprecated; |
| uintptr_t layerCount; |
| |
| void* reserved[1]; |
| |
| const native_handle_t* handle; |
| uint64_t usage; |
| |
| void* reserved_proc[8 - (sizeof(uint64_t) / sizeof(void*))]; |
| }; |