gralloc_priv.h revision 471812b710583ffdb5b4bda6c7c85c893762b0f2
16198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin/* 26198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * Copyright (C) 2010-2011 ARM Limited. All rights reserved. 36198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * 46198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * Copyright (C) 2008 The Android Open Source Project 56198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * 66198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * Licensed under the Apache License, Version 2.0 (the "License"); 76198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * you may not use this file except in compliance with the License. 86198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * You may obtain a copy of the License at 96198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * 106198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * http://www.apache.org/licenses/LICENSE-2.0 116198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * 126198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * Unless required by applicable law or agreed to in writing, software 136198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * distributed under the License is distributed on an "AS IS" BASIS, 146198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 156198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * See the License for the specific language governing permissions and 166198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin * limitations under the License. 176198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin */ 186198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 196198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#ifndef GRALLOC_PRIV_H_ 206198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#define GRALLOC_PRIV_H_ 216198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 226198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#include <stdint.h> 236198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#include <pthread.h> 246198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#include <errno.h> 256198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#include <linux/fb.h> 266198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 276198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#include <hardware/gralloc.h> 286198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#include <cutils/native_handle.h> 296198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 306198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#include "ump.h" 316198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 32a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin/* UGH.. HACK */ 33a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavinenum { 34a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin GRALLOC_USAGE_HW_FIMC1 = 0x01000000, 35a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin GRALLOC_USAGE_HW_ION = 0x02000000, 36a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin GRALLOC_USAGE_YUV_ADDR = 0x04000000, 37a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin /* SEC Private usage , for Overlay path at HWC */ 38a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin GRALLOC_USAGE_HWC_HWOVERLAY = 0x20000000, 39a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin 40a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin /* SEC Private usage , for HWC to set HDMI S3D format */ 41a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin /* HDMI should display this buffer as S3D SBS LR/RL*/ 42a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin GRALLOC_USAGE_PRIVATE_SBS_LR = 0x00400000, 43a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin GRALLOC_USAGE_PRIVATE_SBS_RL = 0x00200000, 44a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin /* HDMI should display this buffer as 3D TB LR/RL*/ 45a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin GRALLOC_USAGE_PRIVATE_TB_LR = 0x00100000, 4680b3e6c2d2e0f3d1412a6b25a9a8ea4766d8017eErik Gilling GRALLOC_USAGE_PRIVATE_TB_RL = 0x00080000 47a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin}; 48a9301d154ee59354bf167fcde8ec76de2b8ccb33Dima Zavin 496198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin/* 5006062cd9cf56278ef6a46768fc489e34ac5714b5Dima Zavin * HWC_HWOVERLAY is flag for location of glReadPixel(). 5106062cd9cf56278ef6a46768fc489e34ac5714b5Dima Zavin * Enable this define if you want that glReadPixel() is in HWComposer. 5206062cd9cf56278ef6a46768fc489e34ac5714b5Dima Zavin * If you disable this define, glReadPixel() is not called in threadloop(). 536198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin */ 546198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#define HWC_HWOVERLAY 1 556198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 566198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#define GRALLOC_ARM_UMP_MODULE 1 576198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 586198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavinstruct private_handle_t; 596198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 606198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavinstruct private_module_t 616198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin{ 626198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin gralloc_module_t base; 636198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 646198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin private_handle_t* framebuffer; 656198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin uint32_t flags; 666198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin uint32_t numBuffers; 676198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin uint32_t bufferMask; 686198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin pthread_mutex_t lock; 696198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin buffer_handle_t currentBuffer; 706198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int ion_client; 716198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 726198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin struct fb_var_screeninfo info; 736198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin struct fb_fix_screeninfo finfo; 746198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin float xdpi; 756198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin float ydpi; 766198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin float fps; 7706062cd9cf56278ef6a46768fc489e34ac5714b5Dima Zavin int enableVSync; 786198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 796198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin enum { 806198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin PRIV_USAGE_LOCKED_FOR_POST = 0x80000000 816198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin }; 826198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin}; 836198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 846198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#ifdef __cplusplus 856198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavinstruct private_handle_t : public native_handle 866198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin{ 876198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#else 886198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavinstruct private_handle_t 896198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin{ 906198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin struct native_handle nativeHandle; 916198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#endif 926198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 936198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin enum { 946198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin PRIV_FLAGS_FRAMEBUFFER = 0x00000001, 956198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin PRIV_FLAGS_USES_UMP = 0x00000002, 9680b3e6c2d2e0f3d1412a6b25a9a8ea4766d8017eErik Gilling PRIV_FLAGS_USES_ION = 0x00000020 976198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin }; 986198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 996198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin enum { 1006198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin LOCK_STATE_WRITE = 1<<31, 1016198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin LOCK_STATE_MAPPED = 1<<30, 1026198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin LOCK_STATE_READ_MASK = 0x3FFFFFFF 1036198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin }; 1046198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 1056198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin // Following member is for ION memory only 1066198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int fd; 107471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin int u_fd; 108471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin int v_fd; 1096198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int magic; 1106198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int flags; 1116198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int size; 1126198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int base; 1136198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int lockState; 1146198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int writeOwner; 1156198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int pid; 1166198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 1176198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin // Following members are for UMP memory only 1186198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin ump_secure_id ump_id; 1196198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin ump_handle ump_mem_handle; 1206198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 1216198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin // Following members is for framebuffer only 1226198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int offset; 1236198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int paddr; 1246198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 1256198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int format; 1266198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int usage; 1276198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int width; 1286198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int height; 1296198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int bpp; 1306198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int stride; 1316198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 1326198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin /* Following members are for YUV information */ 1336198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin unsigned int yaddr; 1346198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin unsigned int uoffset; 1356198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin unsigned int voffset; 1366198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin int ion_client; 1376198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 1386198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#ifdef __cplusplus 1396198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin static const int sNumInts = 21; 140471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin static const int sNumFds = 3; 1416198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin static const int sMagic = 0x3141592; 14206062cd9cf56278ef6a46768fc489e34ac5714b5Dima Zavin 1436198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin private_handle_t(int flags, int size, int base, int lock_state, ump_secure_id secure_id, ump_handle handle): 144471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin fd(0), 145471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin u_fd(0), 146471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin v_fd(0), 1476198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin magic(sMagic), 1486198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin flags(flags), 1496198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin size(size), 1506198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin base(base), 1516198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin lockState(lock_state), 1526198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin writeOwner(0), 1536198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin pid(getpid()), 1546198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin ump_id(secure_id), 1556198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin ump_mem_handle(handle), 156471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin offset(0), 1576198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin format(0), 1586198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin usage(0), 1596198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin width(0), 1606198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin height(0), 1616198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin bpp(0), 1626198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin stride(0), 1636198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin yaddr(0), 1646198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin uoffset(0), 165471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin voffset(0) 1666198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin { 1676198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin version = sizeof(native_handle); 1686198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin numFds = sNumFds; 1696198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin numInts = sNumInts; 1706198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin } 1716198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 1726198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin private_handle_t(int flags, int size, int base, int lock_state, int fb_file, int fb_offset): 1736198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin magic(sMagic), 1746198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin flags(flags), 1756198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin size(size), 1766198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin base(base), 1776198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin lockState(lock_state), 1786198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin writeOwner(0), 1796198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin pid(getpid()), 1806198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin ump_id(UMP_INVALID_SECURE_ID), 1816198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin ump_mem_handle(UMP_INVALID_MEMORY_HANDLE), 1826198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin fd(fb_file), 183471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin u_fd(0), 184471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin v_fd(0), 1856198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin format(0), 1866198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin usage(0), 1876198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin width(0), 1886198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin height(0), 1896198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin bpp(0), 1906198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin stride(0), 1916198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin yaddr(0), 1926198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin uoffset(0), 1936198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin voffset(0), 1946198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin offset(fb_offset) 1956198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin { 1966198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin version = sizeof(native_handle); 1976198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin numFds = sNumFds; 1986198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin numInts = sNumInts; 1996198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin } 2006198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2016198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin ~private_handle_t() 2026198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin { 2036198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin magic = 0; 2046198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin } 2056198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2066198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin bool usesPhysicallyContiguousMemory() 2076198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin { 2086198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin return (flags & PRIV_FLAGS_FRAMEBUFFER) ? true : false; 2096198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin } 2106198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2116198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin static int validate(const native_handle* h) 2126198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin { 2136198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin const private_handle_t* hnd = (const private_handle_t*)h; 2146198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2156198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin if (!h || h->version != sizeof(native_handle) || 2166198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin h->numInts != sNumInts || 2176198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin h->numFds != sNumFds || 2186198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin hnd->magic != sMagic) 2196198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin return -EINVAL; 2206198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2216198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin return 0; 2226198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin } 2236198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2246198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin static private_handle_t* dynamicCast(const native_handle* in) 2256198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin { 2266198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin if (validate(in) == 0) 2276198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin return (private_handle_t*) in; 2286198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2296198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin return NULL; 2306198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin } 2316198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#endif 2326198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin}; 2336198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin 2346198e543e1160e4d73e50bd7e78c1c1c94e5c138Dima Zavin#endif /* GRALLOC_PRIV_H_ */ 235