BufferManager.h revision 6a6081a46a83da606cf21548879b37695adc7e1f
16a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu/* 26a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * Copyright © 2012 Intel Corporation 36a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * All rights reserved. 46a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * 56a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * Permission is hereby granted, free of charge, to any person obtaining a 66a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * copy of this software and associated documentation files (the "Software"), 76a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * to deal in the Software without restriction, including without limitation 86a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * the rights to use, copy, modify, merge, publish, distribute, sublicense, 96a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * and/or sell copies of the Software, and to permit persons to whom the 106a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * Software is furnished to do so, subject to the following conditions: 116a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * 126a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * The above copyright notice and this permission notice (including the next 136a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * paragraph) shall be included in all copies or substantial portions of the 146a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * Software. 156a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * 166a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 176a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 186a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 196a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 206a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 216a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 226a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * IN THE SOFTWARE. 236a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * 246a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * Authors: 256a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * Jackie Li <yaodong.li@intel.com> 266a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu * 276a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu */ 286a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#ifndef BUFFERMANAGER_H_ 296a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#define BUFFERMANAGER_H_ 306a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 316a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#include <Dump.h> 326a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#include <DataBuffer.h> 336a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#include <BufferMapper.h> 346a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#include <BufferCache.h> 356a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 366a6081a46a83da606cf21548879b37695adc7e1fAndy Qiunamespace android { 376a6081a46a83da606cf21548879b37695adc7e1fAndy Qiunamespace intel { 386a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 396a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu// Gralloc Buffer Manager 406a6081a46a83da606cf21548879b37695adc7e1fAndy Qiuclass BufferManager { 416a6081a46a83da606cf21548879b37695adc7e1fAndy Qiuenum { 426a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu BUFFER_POOL_SIZE = 20, 436a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu}; 446a6081a46a83da606cf21548879b37695adc7e1fAndy Qiupublic: 456a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu BufferManager(); 466a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu virtual ~BufferManager(); 476a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 486a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu bool initCheck() const; 496a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu bool initialize(); 506a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 516a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu // dump interface 526a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu void dump(Dump& d); 536a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 546a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu DataBuffer* get(uint32_t handle); 556a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu void put(DataBuffer& buffer); 566a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 576a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu // map/unmap a data buffer into/from display memory 586a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu BufferMapper* map(DataBuffer& buffer); 596a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu void unmap(BufferMapper& mapper); 606a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 616a6081a46a83da606cf21548879b37695adc7e1fAndy Qiuprotected: 626a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu virtual DataBuffer* createDataBuffer(gralloc_module_t *module, 636a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu uint32_t handle) = 0; 646a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu virtual BufferMapper* createBufferMapper(gralloc_module_t *module, 656a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu DataBuffer& buffer) = 0; 666a6081a46a83da606cf21548879b37695adc7e1fAndy Qiuprivate: 676a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu gralloc_module_t *mGrallocModule; 686a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu BufferCache *mBufferPool; 696a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu bool mInitialized; 706a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu}; 716a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 726a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu} // namespace intel 736a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu} // namespace android 746a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 756a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#endif /* BUFFERMANAGER_H_ */ 76