xref: /aosp_15_r20/external/swiftshader/include/Android/nativebase/nativebase.h (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
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