1 /*
2  * Copyright (C) 2017-2019 ARM Limited. All rights reserved.
3  *
4  * Copyright (C) 2008 The Android Open Source Project
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 #ifndef MALI_GRALLOC_USAGES_H_
20 #define MALI_GRALLOC_USAGES_H_
21 
22 #ifndef GRALLOC_VERSION_MAJOR
23 #error "GRALLOC_VERSION_MAJOR must be defined."
24 #endif
25 
26 #define GRALLOC_USAGE_PRIVATE_MASK (0xffff0000f0000000U)
27 
28 /*
29  * Below usage types overlap, this is intentional.
30  * The reason is that for Gralloc 0.3 there are very
31  * few usage flags we have at our disposal.
32  *
33  * The overlapping is handled by processing the definitions
34  * in a specific order.
35  *
36  * MALI_GRALLOC_USAGE_PRIVATE_FORMAT and MALI_GRALLOC_USAGE_NO_AFBC
37  * don't overlap and are processed first.
38  *
39  * MALI_GRALLOC_USAGE_YUV_CONF are only for YUV formats and clients
40  * using MALI_GRALLOC_USAGE_NO_AFBC must never allocate YUV formats.
41  * The latter is strictly enforced and allocations will fail.
42  *
43  * MALI_GRALLOC_USAGE_AFBC_PADDING is only valid if MALI_GRALLOC_USAGE_NO_AFBC
44  * is not present.
45  */
46 
47 /*
48  * Gralloc private usage 0-3 are the same in 0.3 and 1.0.
49  * We defined based our usages based on what is available.
50  */
51 #if GRALLOC_VERSION_MAJOR == 1
52 #include <hardware/gralloc1.h>
53 
54 /*
55  * Most gralloc code is fairly version agnostic, but certain
56  * places still use old usage defines. Make sure it works
57  * ok for usages that are backwards compatible.
58  */
59 #define GRALLOC_USAGE_PRIVATE_0 GRALLOC1_CONSUMER_USAGE_PRIVATE_0
60 #define GRALLOC_USAGE_PRIVATE_1 GRALLOC1_CONSUMER_USAGE_PRIVATE_1
61 #define GRALLOC_USAGE_PRIVATE_2 GRALLOC1_CONSUMER_USAGE_PRIVATE_2
62 #define GRALLOC_USAGE_PRIVATE_3 GRALLOC1_CONSUMER_USAGE_PRIVATE_3
63 
64 #define GRALLOC_USAGE_PRIVATE_4 GRALLOC1_CONSUMER_USAGE_PRIVATE_4
65 #define GRALLOC_USAGE_PRIVATE_5 GRALLOC1_CONSUMER_USAGE_PRIVATE_5
66 #define GRALLOC_USAGE_PRIVATE_6 GRALLOC1_CONSUMER_USAGE_PRIVATE_6
67 #define GRALLOC_USAGE_PRIVATE_7 GRALLOC1_CONSUMER_USAGE_PRIVATE_7
68 #define GRALLOC_USAGE_PRIVATE_8 GRALLOC1_CONSUMER_USAGE_PRIVATE_8
69 #define GRALLOC_USAGE_PRIVATE_9 GRALLOC1_CONSUMER_USAGE_PRIVATE_9
70 
71 #define GRALLOC_USAGE_PRIVATE_10 GRALLOC1_PRODUCER_USAGE_PRIVATE_10
72 #define GRALLOC_USAGE_PRIVATE_12 GRALLOC1_PRODUCER_USAGE_PRIVATE_12
73 #define GRALLOC_USAGE_PRIVATE_13 GRALLOC1_PRODUCER_USAGE_PRIVATE_13
74 #define GRALLOC_USAGE_PRIVATE_14 GRALLOC1_PRODUCER_USAGE_PRIVATE_14
75 #define GRALLOC_USAGE_PRIVATE_15 GRALLOC1_PRODUCER_USAGE_PRIVATE_15
76 #define GRALLOC_USAGE_PRIVATE_16 GRALLOC1_PRODUCER_USAGE_PRIVATE_16
77 #define GRALLOC_USAGE_PRIVATE_17 GRALLOC1_PRODUCER_USAGE_PRIVATE_17
78 #define GRALLOC_USAGE_PRIVATE_18 GRALLOC1_PRODUCER_USAGE_PRIVATE_18
79 #define GRALLOC_USAGE_PRIVATE_19 GRALLOC1_PRODUCER_USAGE_PRIVATE_19
80 
81 #define GRALLOC_USAGE_SW_WRITE_RARELY GRALLOC1_PRODUCER_USAGE_CPU_WRITE
82 #define GRALLOC_USAGE_SW_WRITE_OFTEN GRALLOC1_PRODUCER_USAGE_CPU_WRITE_OFTEN
83 #define GRALLOC_USAGE_SW_READ_RARELY GRALLOC1_CONSUMER_USAGE_CPU_READ
84 #define GRALLOC_USAGE_SW_READ_OFTEN GRALLOC1_CONSUMER_USAGE_CPU_READ_OFTEN
85 #define GRALLOC_USAGE_HW_FB GRALLOC1_CONSUMER_USAGE_CLIENT_TARGET
86 #define GRALLOC_USAGE_HW_2D 0x00000400U
87 
88 #define GRALLOC_USAGE_SW_WRITE_MASK 0x000000F0U
89 #define GRALLOC_USAGE_SW_READ_MASK 0x0000000FU
90 #define GRALLOC_USAGE_PROTECTED GRALLOC1_PRODUCER_USAGE_PROTECTED
91 #define GRALLOC_USAGE_HW_RENDER GRALLOC1_PRODUCER_USAGE_GPU_RENDER_TARGET
92 #define GRALLOC_USAGE_HW_CAMERA_WRITE GRALLOC1_PRODUCER_USAGE_CAMERA
93 #define GRALLOC_USAGE_HW_CAMERA_READ GRALLOC1_CONSUMER_USAGE_CAMERA
94 #define GRALLOC_USAGE_HW_TEXTURE GRALLOC1_CONSUMER_USAGE_GPU_TEXTURE
95 #define GRALLOC_USAGE_HW_VIDEO_ENCODER GRALLOC1_CONSUMER_USAGE_VIDEO_ENCODER
96 #define GRALLOC_USAGE_HW_COMPOSER GRALLOC1_CONSUMER_USAGE_HWCOMPOSER
97 #define GRALLOC_USAGE_EXTERNAL_DISP 0x00002000U
98 
99 #define GRALLOC_USAGE_SENSOR_DIRECT_DATA GRALLOC1_PRODUCER_USAGE_SENSOR_DIRECT_DATA
100 #define GRALLOC_USAGE_GPU_DATA_BUFFER GRALLOC1_CONSUMER_USAGE_GPU_DATA_BUFFER
101 #define GRALLOC_USAGE_VIDEO_DECODER GRALLOC1_PRODUCER_USAGE_VIDEO_DECODER
102 
103 typedef enum
104 {
105 	/*
106 	 * Allocation will be used as a front-buffer, which
107 	 * supports concurrent producer-consumer access.
108 	 *
109 	 * NOTE: Must not be used with MALI_GRALLOC_USAGE_FORCE_BACKBUFFER
110 	 */
111 	MALI_GRALLOC_USAGE_FRONTBUFFER = GRALLOC1_PRODUCER_USAGE_PRIVATE_12,
112 
113 	/*
114 	 * Allocation will be used as a back-buffer.
115 	 * Use when switching from front-buffer as a workaround for Android
116 	 * buffer queue, which does not re-allocate for a sub-set of
117 	 * existing usage.
118 	 *
119 	 * NOTE: Must not be used with MALI_GRALLOC_USAGE_FRONTBUFFER.
120 	 */
121 	MALI_GRALLOC_USAGE_FORCE_BACKBUFFER = GRALLOC1_PRODUCER_USAGE_PRIVATE_13,
122 
123 	/*
124 	 * Buffer will not be allocated with AFBC.
125 	 *
126 	 * NOTE: Not compatible with MALI_GRALLOC_USAGE_FORCE_BACKBUFFER so cannot be
127 	 * used when switching from front-buffer to back-buffer.
128 	 */
129 	MALI_GRALLOC_USAGE_NO_AFBC = GRALLOC1_PRODUCER_USAGE_PRIVATE_1,
130 
131 	/* Custom alignment for AFBC headers.
132 	 *
133 	 * NOTE: due to usage flag overlap, AFBC_PADDING cannot be used with FORCE_BACKBUFFER.
134 	 */
135 	MALI_GRALLOC_USAGE_AFBC_PADDING = GRALLOC1_PRODUCER_USAGE_PRIVATE_14,
136 	/* Private format usage.
137 	 * 'format' argument to allocation function will be interpreted in a
138 	 * private manner and must be constructed via GRALLOC_PRIVATE_FORMAT_WRAPPER_*
139 	 * macros which pack base format and AFBC format modifiers into 32-bit value.
140 	 */
141 	MALI_GRALLOC_USAGE_PRIVATE_FORMAT = GRALLOC1_PRODUCER_USAGE_PRIVATE_15,
142 
143 	/* SLSI specific usages */
144 	GRALLOC1_PRODUCER_USAGE_PRIVATE_NONSECURE              = GRALLOC1_PRODUCER_USAGE_PRIVATE_8,
145 	GRALLOC1_PRODUCER_USAGE_NOZEROED                       = GRALLOC1_PRODUCER_USAGE_PRIVATE_9,
146 
147 	GRALLOC1_CONSUMER_USAGE_VIDEO_PRIVATE_DATA             = GRALLOC1_CONSUMER_USAGE_PRIVATE_7,
148 
149         /* FaceAuth specific usages */
150 	GS101_GRALLOC_USAGE_TPU_INPUT                          = GRALLOC1_CONSUMER_USAGE_PRIVATE_5,
151 	GS101_GRALLOC_USAGE_TPU_OUTPUT                         = GRALLOC1_PRODUCER_USAGE_PRIVATE_3,
152 	GS101_GRALLOC_USAGE_CAMERA_STATS                       = GRALLOC1_PRODUCER_USAGE_PRIVATE_2,
153 
154 	/* YUV only. */
155 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_DEFAULT = 0,
156 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT601 = GRALLOC1_PRODUCER_USAGE_PRIVATE_18,
157 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT709 = GRALLOC1_PRODUCER_USAGE_PRIVATE_19,
158 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT2020 = (GRALLOC1_PRODUCER_USAGE_PRIVATE_18 | GRALLOC1_PRODUCER_USAGE_PRIVATE_19),
159 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_MASK = MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT2020,
160 
161 	MALI_GRALLOC_USAGE_RANGE_DEFAULT = 0,
162 	MALI_GRALLOC_USAGE_RANGE_NARROW = GRALLOC1_PRODUCER_USAGE_PRIVATE_16,
163 	MALI_GRALLOC_USAGE_RANGE_WIDE = GRALLOC1_PRODUCER_USAGE_PRIVATE_17,
164 	MALI_GRALLOC_USAGE_RANGE_MASK = (GRALLOC1_PRODUCER_USAGE_PRIVATE_16 | GRALLOC1_PRODUCER_USAGE_PRIVATE_17),
165 
166 	/* Google specific usages */
167 	GRALLOC_USAGE_GOOGLE_IP_BO                             = GRALLOC_USAGE_PRIVATE_16,
168 	GRALLOC_USAGE_GOOGLE_IP_MFC                            = GRALLOC_USAGE_PRIVATE_17,
169 
170 } mali_gralloc_usage_type;
171 
172 
173 #elif GRALLOC_VERSION_MAJOR == 0
174 #include <hardware/gralloc.h>
175 
176 typedef enum
177 {
178 	/* See comment for Gralloc 1.0, above. */
179 	MALI_GRALLOC_USAGE_FRONTBUFFER = GRALLOC_USAGE_PRIVATE_0,
180 
181 	/* See comment for Gralloc 1.0, above. */
182 	MALI_GRALLOC_USAGE_FORCE_BACKBUFFER = GRALLOC_USAGE_PRIVATE_1,
183 
184 	/* See comment for Gralloc 1.0, above. */
185 	MALI_GRALLOC_USAGE_NO_AFBC = (GRALLOC_USAGE_PRIVATE_1 | GRALLOC_USAGE_PRIVATE_2),
186 
187 	/* See comment for Gralloc 1.0, above. */
188 	MALI_GRALLOC_USAGE_AFBC_PADDING = GRALLOC_USAGE_PRIVATE_2,
189 
190 	/* See comment for Gralloc 1.0, above. */
191 	MALI_GRALLOC_USAGE_PRIVATE_FORMAT = GRALLOC_USAGE_PRIVATE_3,
192 
193 } mali_gralloc_usage_type;
194 
195 #elif GRALLOC_VERSION_MAJOR == 2
196 #if HIDL_COMMON_VERSION_SCALED == 100
197 #include <android/hardware/graphics/common/1.0/types.h>
198 #elif HIDL_COMMON_VERSION_SCALED == 110
199 #include <android/hardware/graphics/common/1.1/types.h>
200 #endif
201 
202 /* Local macro definitions to emulate Gralloc 1.0 usage interface */
203 #define GRALLOC_USAGE_PRIVATE_12 1ULL << 55
204 #define GRALLOC_USAGE_PRIVATE_13 1ULL << 54
205 #define GRALLOC_USAGE_PRIVATE_14 1ULL << 53
206 #define GRALLOC_USAGE_PRIVATE_15 1ULL << 52
207 #define GRALLOC_USAGE_PRIVATE_16 1ULL << 51
208 #define GRALLOC_USAGE_PRIVATE_17 1ULL << 50
209 #define GRALLOC_USAGE_PRIVATE_18 1ULL << 49
210 #define GRALLOC_USAGE_PRIVATE_19 1ULL << 48
211 
212 typedef enum
213 {
214 	/* See comment for Gralloc 1.0, above. */
215 	MALI_GRALLOC_USAGE_FRONTBUFFER = GRALLOC_USAGE_PRIVATE_12,
216 
217 	/* See comment for Gralloc 1.0, above. */
218 	MALI_GRALLOC_USAGE_FORCE_BACKBUFFER = GRALLOC_USAGE_PRIVATE_13,
219 
220 	/* See comment for Gralloc 1.0, above. */
221 	MALI_GRALLOC_USAGE_NO_AFBC = (GRALLOC_USAGE_PRIVATE_13 | GRALLOC_USAGE_PRIVATE_14),
222 
223 	/* See comment for Gralloc 1.0, above. */
224 	MALI_GRALLOC_USAGE_AFBC_PADDING = GRALLOC_USAGE_PRIVATE_14,
225 
226 	/* See comment for Gralloc 1.0, above. */
227 	MALI_GRALLOC_USAGE_PRIVATE_FORMAT = GRALLOC_USAGE_PRIVATE_15,
228 
229 	/* YUV-only. */
230 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_DEFAULT = 0,
231 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT601 = GRALLOC_USAGE_PRIVATE_18,
232 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT709 = GRALLOC_USAGE_PRIVATE_19,
233 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT2020 =  (GRALLOC_USAGE_PRIVATE_18 | GRALLOC_USAGE_PRIVATE_19),
234 	MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_MASK = MALI_GRALLOC_USAGE_YUV_COLOR_SPACE_BT2020,
235 
236 	MALI_GRALLOC_USAGE_RANGE_DEFAULT = 0,
237 	MALI_GRALLOC_USAGE_RANGE_NARROW = GRALLOC_USAGE_PRIVATE_16,
238 	MALI_GRALLOC_USAGE_RANGE_WIDE = GRALLOC_USAGE_PRIVATE_17,
239 	MALI_GRALLOC_USAGE_RANGE_MASK = (GRALLOC_USAGE_PRIVATE_16 | GRALLOC_USAGE_PRIVATE_17),
240 } mali_gralloc_usage_type;
241 
242 using android::hardware::graphics::common::HIDL_COMMON_NAMESPACE::BufferUsage;
243 
244 #define GRALLOC_USAGE_SW_WRITE_RARELY static_cast<uint64_t>(BufferUsage::CPU_WRITE_RARELY)
245 #define GRALLOC_USAGE_SW_WRITE_OFTEN static_cast<uint64_t>(BufferUsage::CPU_WRITE_OFTEN)
246 #define GRALLOC_USAGE_SW_READ_RARELY static_cast<uint64_t>(BufferUsage::CPU_READ_RARELY)
247 #define GRALLOC_USAGE_SW_READ_OFTEN static_cast<uint64_t>(BufferUsage::CPU_READ_OFTEN)
248 #define GRALLOC_USAGE_HW_FB static_cast<uint64_t>(BufferUsage::COMPOSER_CLIENT_TARGET)
249 
250 /* Bit 10 must be zero as per Gralloc 2.x interface specification. Used, however, for backward compatibility */
251 #define GRALLOC_USAGE_HW_2D  static_cast<uint64_t>(0x00000400)
252 
253 #define GRALLOC_USAGE_SW_WRITE_MASK static_cast<uint64_t>(BufferUsage::CPU_WRITE_MASK)
254 #define GRALLOC_USAGE_SW_READ_MASK static_cast<uint64_t>(BufferUsage::CPU_READ_MASK)
255 #define GRALLOC_USAGE_PROTECTED static_cast<uint64_t>(BufferUsage::PROTECTED)
256 #define GRALLOC_USAGE_HW_RENDER static_cast<uint64_t>(BufferUsage::GPU_RENDER_TARGET)
257 #define GRALLOC_USAGE_HW_CAMERA_WRITE static_cast<uint64_t>(BufferUsage::CAMERA_OUTPUT)
258 #define GRALLOC_USAGE_HW_CAMERA_READ static_cast<uint64_t>(BufferUsage::CAMERA_INPUT)
259 #define GRALLOC_USAGE_HW_TEXTURE static_cast<uint64_t>(BufferUsage::GPU_TEXTURE)
260 #define GRALLOC_USAGE_HW_VIDEO_ENCODER static_cast<uint64_t>(BufferUsage::VIDEO_ENCODER)
261 #define GRALLOC_USAGE_HW_COMPOSER static_cast<uint64_t>(BufferUsage::COMPOSER_OVERLAY)
262 #define GRALLOC_USAGE_EXTERNAL_DISP  static_cast<uint64_t>(0x00002000)
263 
264 #define GRALLOC_USAGE_SENSOR_DIRECT_DATA static_cast<uint64_t>(BufferUsage::SENSOR_DIRECT_DATA)
265 #define GRALLOC_USAGE_GPU_DATA_BUFFER static_cast<uint64_t>(BufferUsage::GPU_DATA_BUFFER)
266 #define GRALLOC_USAGE_VIDEO_DECODER static_cast<uint64_t>(BufferUsage::VIDEO_DECODER)
267 
268 #endif
269 
270 /* Originally (Gralloc 0.x), Android did not provide an explicit DECODER usage. This was rectified in Android N-MR1/7.1
271  * when Gralloc 1.0 defined GRALLOC1_PRODUCER_USAGE_VIDEO_DECODER. However, libstagefright continues
272  * (currently, Android P/9.0) to use this old combination of flags to indicate decoder producer
273  */
274 #define GRALLOC_USAGE_DECODER (GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_HW_COMPOSER | GRALLOC_USAGE_EXTERNAL_DISP)
275 
276 static const uint64_t VALID_USAGE =
277     GRALLOC_USAGE_SW_READ_MASK |       /* 0x0FU */
278     GRALLOC_USAGE_SW_WRITE_MASK |      /* 0xF0U */
279     GRALLOC_USAGE_HW_TEXTURE |         /* 1U << 8 */
280     GRALLOC_USAGE_HW_RENDER |          /* 1U << 9 */
281     GRALLOC_USAGE_HW_2D |              /* 1U << 10 */
282     GRALLOC_USAGE_HW_COMPOSER |        /* 1U << 11 */
283     GRALLOC_USAGE_HW_FB |              /* 1U << 12 */
284     GRALLOC_USAGE_EXTERNAL_DISP |      /* 1U << 13 */
285     GRALLOC_USAGE_PROTECTED |          /* 1U << 14 */
286     1ULL << 15 |                       /* COMPOSER_CURSOR (types1.0) */
287     GRALLOC_USAGE_HW_VIDEO_ENCODER |   /* 1U << 16 */
288     GRALLOC_USAGE_HW_CAMERA_WRITE |    /* 1U << 17 */
289     GRALLOC_USAGE_HW_CAMERA_READ |     /* 1U << 18 */
290 	1ULL << 19 | /* GRALLOC_USAGE_GVR_FRONT_BUFFER_MODE */
291     1ULL << 20 | /* RENDERSCRIPT */
292     1ULL << 21 | /* GRALLOC1_CONSUMER_USAGE_FOREIGN_BUFFERS (IGNORED) */
293     1ULL << 22 | /* VIDEO_DECODER */
294     1ULL << 23 | /* SENSOR_DIRECT_DATA */
295     1ULL << 24 | /* GPU_DATA_BUFFER */
296     1ULL << 25 | /* GPU_CUBE_MAP */
297     1ULL << 26 | /* GPU_MIPMAP_COMPLETE */
298 
299 #if GRALLOC_VERSION_MAJOR >= 1
300     /* As producer and consumer usage are combined there is no way to differentiate these
301        but they are both listed here to show that the intention is to include both. */
302     GRALLOC_USAGE_SENSOR_DIRECT_DATA | /* 1U << 23 */
303     GRALLOC_USAGE_GPU_DATA_BUFFER |    /* 1U << 24 */
304 #endif
305 #if GRALLOC_VERSION_MAJOR >= 1
306     GRALLOC1_PRODUCER_USAGE_PRIVATE_NONSECURE |
307     GRALLOC1_PRODUCER_USAGE_NOZEROED |
308     GRALLOC1_CONSUMER_USAGE_VIDEO_PRIVATE_DATA |
309 
310     GS101_GRALLOC_USAGE_TPU_INPUT |
311     GS101_GRALLOC_USAGE_TPU_OUTPUT |
312     GS101_GRALLOC_USAGE_CAMERA_STATS |
313 
314     GRALLOC_USAGE_PRIVATE_19 |         /* 1U << 48 */
315     GRALLOC_USAGE_PRIVATE_18 |         /* 1U << 49 */
316     GRALLOC_USAGE_PRIVATE_17 |         /* 1U << 50 */
317     GRALLOC_USAGE_PRIVATE_16 |         /* 1U << 51 */
318     GRALLOC_USAGE_PRIVATE_15 |         /* 1U << 52 */
319     GRALLOC_USAGE_PRIVATE_14 |         /* 1U << 53 */
320     GRALLOC_USAGE_PRIVATE_13 |         /* 1U << 54 */
321     GRALLOC_USAGE_PRIVATE_12 |         /* 1U << 55 */
322 
323     GRALLOC_USAGE_PRIVATE_10 |        /* 1U << 57 */
324     GRALLOC_USAGE_PRIVATE_9 |         /* 1U << 58 */
325     GRALLOC_USAGE_PRIVATE_8 |         /* 1U << 59 */
326     GRALLOC_USAGE_PRIVATE_7 |         /* 1U << 60 */
327     GRALLOC_USAGE_PRIVATE_6 |         /* 1U << 61 */
328     GRALLOC_USAGE_PRIVATE_5 |         /* 1U << 62 */
329     GRALLOC_USAGE_PRIVATE_4 |         /* 1U << 63 */
330 #endif
331     GRALLOC_USAGE_PRIVATE_0 |          /* 1U << 28 */
332     GRALLOC_USAGE_PRIVATE_1 |          /* 1U << 29 */
333     GRALLOC_USAGE_PRIVATE_2 |          /* 1U << 30 */
334     GRALLOC_USAGE_PRIVATE_3;           /* 1U << 31 */
335 #endif /*MALI_GRALLOC_USAGES_H_*/
336