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