16a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu/* 2cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Copyright (c) 2014 Intel Corporation 3cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 4cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Licensed under the Apache License, Version 2.0 (the "License"); 5cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// you may not use this file except in compliance with the License. 6cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// You may obtain a copy of the License at 7cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 8cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// http://www.apache.org/licenses/LICENSE-2.0 9cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 10cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Unless required by applicable law or agreed to in writing, software 11cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// distributed under the License is distributed on an "AS IS" BASIS, 12cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// See the License for the specific language governing permissions and 14cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// limitations under the License. 15cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika*/ 166a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#ifndef TTMBUFFERMAPPER_H_ 176a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#define TTMBUFFERMAPPER_H_ 186a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 196a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#include <DataBuffer.h> 206a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#include <BufferMapper.h> 210594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel#include <ips/common/Wsbm.h> 226a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 236a6081a46a83da606cf21548879b37695adc7e1fAndy Qiunamespace android { 246a6081a46a83da606cf21548879b37695adc7e1fAndy Qiunamespace intel { 256a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 266a6081a46a83da606cf21548879b37695adc7e1fAndy Qiuclass TTMBufferMapper : public BufferMapper { 276a6081a46a83da606cf21548879b37695adc7e1fAndy Qiupublic: 286a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu TTMBufferMapper(Wsbm& wsbm, DataBuffer& buffer); 29eb726af21649d79ed720bdf329e0849270995c45Andy Qiu virtual ~TTMBufferMapper(); 306a6081a46a83da606cf21548879b37695adc7e1fAndy Qiupublic: 316a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu bool map(); 326a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu bool unmap(); 336a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 340594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel uint32_t getGttOffsetInPage(int /* subIndex */) const { 356a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu return mGttOffsetInPage; 366a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu } 370594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel void* getCpuAddress(int /* subIndex */) const { 386a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu return mCpuAddress; 396a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu } 400594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel uint32_t getSize(int /* subIndex */) const { 416a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu return mSize; 426a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu } 430594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel uint32_t getKHandle(int /* subIndex */) { 4430c19aca49c615368ae3bce961c431fa901e90b9Andy Qiu return 0; 4530c19aca49c615368ae3bce961c431fa901e90b9Andy Qiu } 460594c42af26255fd8d3d7d39c0cb0e2da5b8841bThierry Strudel uint32_t getFbHandle(int /* subIndex */) { 473555e1ff071400446170ddc209bbb9fa0e40c502fu jin return 0; 483555e1ff071400446170ddc209bbb9fa0e40c502fu jin } 493555e1ff071400446170ddc209bbb9fa0e40c502fu jin void putFbHandle() { 503555e1ff071400446170ddc209bbb9fa0e40c502fu jin return; 513555e1ff071400446170ddc209bbb9fa0e40c502fu jin } 526a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 536a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu // wait idle 546a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu bool waitIdle(); 556a6081a46a83da606cf21548879b37695adc7e1fAndy Qiuprivate: 566a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu int mRefCount; 576a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu Wsbm& mWsbm; 586a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu void* mBufferObject; 596a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 606a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu // mapped info 616a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu uint32_t mGttOffsetInPage; 626a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu void* mCpuAddress; 636a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu uint32_t mSize; 646a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu}; 656a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 666a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu} //namespace intel 676a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu} //namespace android 686a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 696a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu 706a6081a46a83da606cf21548879b37695adc7e1fAndy Qiu#endif /* TTMBUFFERMAPPER_H_ */ 71