18b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol/*
28b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// Copyright (c) 2014 Intel Corporation 
38b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol//
48b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// Licensed under the Apache License, Version 2.0 (the "License");
58b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// you may not use this file except in compliance with the License.
68b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// You may obtain a copy of the License at
78b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol//
88b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol//      http://www.apache.org/licenses/LICENSE-2.0
98b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol//
108b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// Unless required by applicable law or agreed to in writing, software
118b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// distributed under the License is distributed on an "AS IS" BASIS,
128b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// See the License for the specific language governing permissions and
148b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol// limitations under the License.
158b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol*/
168b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#ifndef TNG_GRALLOC_BUFFER_MAPPER_H
178b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#define TNG_GRALLOC_BUFFER_MAPPER_H
188b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol
198b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#include <BufferMapper.h>
208b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#include <hal_public.h>
218b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#include <common/GrallocBufferMapperBase.h>
228b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#include <tangier/TngGrallocBuffer.h>
238b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol
248b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolnamespace android {
258b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolnamespace intel {
268b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol
278b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolclass TngGrallocBufferMapper : public GrallocBufferMapperBase {
288b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolpublic:
293413b71d9be6302c07d792b40cb232be5d683420Alistair Strachan    TngGrallocBufferMapper(gralloc_module_t const& module,
308b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol                               DataBuffer& buffer);
318b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    virtual ~TngGrallocBufferMapper();
328b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolpublic:
338b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    bool map();
348b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    bool unmap();
358b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    buffer_handle_t getKHandle(int subIndex);
368b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    buffer_handle_t getFbHandle(int subIndex);
378b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    void putFbHandle();
388b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolprivate:
398b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    bool gttMap(void *vaddr, uint32_t size, uint32_t gttAlign, int *offset);
408b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    bool gttUnmap(void *vaddr);
418b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    bool mapKhandle();
428b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol
438b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujolprivate:
443413b71d9be6302c07d792b40cb232be5d683420Alistair Strachan    gralloc_module_t const& mGrallocModule;
458b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol    void* mBufferObject;
468b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol	native_handle_t* mClonedHandle;
478b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol};
488b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol
498b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol} // namespace intel
508b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol} // namespace android
518b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol
528b0063f7f46289983bd1bf9ca61662b4a2ddf5b6Benjamin Pujol#endif /* TNG_GRALLOC_BUFFER_MAPPER_H */
53