1*03ce13f7SAndroid Build Coastguard Worker /* 2*03ce13f7SAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*03ce13f7SAndroid Build Coastguard Worker * 4*03ce13f7SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*03ce13f7SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*03ce13f7SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*03ce13f7SAndroid Build Coastguard Worker * 8*03ce13f7SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*03ce13f7SAndroid Build Coastguard Worker * 10*03ce13f7SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*03ce13f7SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*03ce13f7SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*03ce13f7SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*03ce13f7SAndroid Build Coastguard Worker * limitations under the License. 15*03ce13f7SAndroid Build Coastguard Worker */ 16*03ce13f7SAndroid Build Coastguard Worker 17*03ce13f7SAndroid Build Coastguard Worker #pragma once 18*03ce13f7SAndroid Build Coastguard Worker 19*03ce13f7SAndroid Build Coastguard Worker #include <cutils/native_handle.h> 20*03ce13f7SAndroid Build Coastguard Worker 21*03ce13f7SAndroid Build Coastguard Worker #include <cstdint> 22*03ce13f7SAndroid Build Coastguard Worker #include <cstring> 23*03ce13f7SAndroid Build Coastguard Worker 24*03ce13f7SAndroid Build Coastguard Worker // clang-format off 25*03ce13f7SAndroid Build Coastguard Worker #define ANDROID_NATIVE_MAKE_CONSTANT(a, b, c, d) \ 26*03ce13f7SAndroid Build Coastguard Worker ((static_cast<unsigned int>(a) << 24) | \ 27*03ce13f7SAndroid Build Coastguard Worker (static_cast<unsigned int>(b) << 16) | \ 28*03ce13f7SAndroid Build Coastguard Worker (static_cast<unsigned int>(c) << 8) | \ 29*03ce13f7SAndroid Build Coastguard Worker (static_cast<unsigned int>(d) << 0)) 30*03ce13f7SAndroid Build Coastguard Worker // clang-format on 31*03ce13f7SAndroid Build Coastguard Worker 32*03ce13f7SAndroid Build Coastguard Worker struct android_native_base_t { 33*03ce13f7SAndroid Build Coastguard Worker int magic; 34*03ce13f7SAndroid Build Coastguard Worker int version; 35*03ce13f7SAndroid Build Coastguard Worker void* reserved[4]; 36*03ce13f7SAndroid Build Coastguard Worker void (*incRef)(android_native_base_t*); 37*03ce13f7SAndroid Build Coastguard Worker void (*decRef)(android_native_base_t*); 38*03ce13f7SAndroid Build Coastguard Worker }; 39*03ce13f7SAndroid Build Coastguard Worker 40*03ce13f7SAndroid Build Coastguard Worker #define ANDROID_NATIVE_BUFFER_MAGIC ANDROID_NATIVE_MAKE_CONSTANT('_', 'b', 'f', 'r') 41*03ce13f7SAndroid Build Coastguard Worker 42*03ce13f7SAndroid Build Coastguard Worker struct ANativeWindowBuffer { ANativeWindowBufferANativeWindowBuffer43*03ce13f7SAndroid Build Coastguard Worker ANativeWindowBuffer() { 44*03ce13f7SAndroid Build Coastguard Worker common.magic = ANDROID_NATIVE_BUFFER_MAGIC; 45*03ce13f7SAndroid Build Coastguard Worker common.version = sizeof(ANativeWindowBuffer); 46*03ce13f7SAndroid Build Coastguard Worker memset(common.reserved, 0, sizeof(common.reserved)); 47*03ce13f7SAndroid Build Coastguard Worker } 48*03ce13f7SAndroid Build Coastguard Worker 49*03ce13f7SAndroid Build Coastguard Worker android_native_base_t common; 50*03ce13f7SAndroid Build Coastguard Worker 51*03ce13f7SAndroid Build Coastguard Worker int width; 52*03ce13f7SAndroid Build Coastguard Worker int height; 53*03ce13f7SAndroid Build Coastguard Worker int stride; 54*03ce13f7SAndroid Build Coastguard Worker int format; 55*03ce13f7SAndroid Build Coastguard Worker int usage_deprecated; 56*03ce13f7SAndroid Build Coastguard Worker uintptr_t layerCount; 57*03ce13f7SAndroid Build Coastguard Worker 58*03ce13f7SAndroid Build Coastguard Worker void* reserved[1]; 59*03ce13f7SAndroid Build Coastguard Worker 60*03ce13f7SAndroid Build Coastguard Worker const native_handle_t* handle; 61*03ce13f7SAndroid Build Coastguard Worker uint64_t usage; 62*03ce13f7SAndroid Build Coastguard Worker 63*03ce13f7SAndroid Build Coastguard Worker void* reserved_proc[8 - (sizeof(uint64_t) / sizeof(void*))]; 64*03ce13f7SAndroid Build Coastguard Worker }; 65