1c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu/*
2c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * Copyright (C) 2013 The Android Open Source Project
3c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu *
4c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * Licensed under the Apache License, Version 2.0 (the "License");
5c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * you may not use this file except in compliance with the License.
6c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * You may obtain a copy of the License at
7c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu *
8c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu *      http://www.apache.org/licenses/LICENSE-2.0
9c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu *
10c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * Unless required by applicable law or agreed to in writing, software
11c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * distributed under the License is distributed on an "AS IS" BASIS,
12c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * See the License for the specific language governing permissions and
14c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu * limitations under the License.
15c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu */
16c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
17c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu// Provides the implementation of the GraphicBuffer interface in
18c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu// renderer compostior
19c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
20c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu#ifndef ANDROID_GRAPHIC_BUFFER_IMPL_H
21c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu#define ANDROID_GRAPHIC_BUFFER_IMPL_H
22c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
23c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu#include <ui/GraphicBuffer.h>
24c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
25e4be25a7c5d547be06ed43166d82237cb08ad38aMarcin Kosiba#include "draw_gl.h"
261cc1c4153a26307948af9f1ee6d9cde7a7103b94Kaan Baloglu
27c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglunamespace android {
28c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
29c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Balogluclass GraphicBufferImpl {
30c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu public:
31c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu  ~GraphicBufferImpl();
32c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
332ddcc98cb29e567ea545b3eba2fedc576d1f5365Ross McIlroy  static long Create(int w, int h);
342ddcc98cb29e567ea545b3eba2fedc576d1f5365Ross McIlroy  static void Release(long buffer_id);
352ddcc98cb29e567ea545b3eba2fedc576d1f5365Ross McIlroy  static int MapStatic(long buffer_id, AwMapMode mode, void** vaddr);
362ddcc98cb29e567ea545b3eba2fedc576d1f5365Ross McIlroy  static int UnmapStatic(long buffer_id);
372ddcc98cb29e567ea545b3eba2fedc576d1f5365Ross McIlroy  static void* GetNativeBufferStatic(long buffer_id);
382ddcc98cb29e567ea545b3eba2fedc576d1f5365Ross McIlroy  static uint32_t GetStrideStatic(long buffer_id);
39c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
40c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu private:
411cc1c4153a26307948af9f1ee6d9cde7a7103b94Kaan Baloglu  status_t Map(AwMapMode mode, void** vaddr);
421cc1c4153a26307948af9f1ee6d9cde7a7103b94Kaan Baloglu  status_t Unmap();
43c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu  status_t InitCheck() const;
44c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu  void* GetNativeBuffer() const;
45c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu  uint32_t GetStride() const;
46c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu  GraphicBufferImpl(uint32_t w, uint32_t h);
47c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
48c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu  sp<android::GraphicBuffer> mBuffer;
49c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu};
50c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
511cc1c4153a26307948af9f1ee6d9cde7a7103b94Kaan Baloglu}  // namespace android
52c5cde8c18df853e11d1ec528508fd0fe2e742d5cKaan Baloglu
531cc1c4153a26307948af9f1ee6d9cde7a7103b94Kaan Baloglu#endif  // ANDROID_GRAPHIC_BUFFER_IMPL_H
54