OSDN Git Service

Android FrameBuffer implementation.
[android-x86/external-swiftshader.git] / src / Main / FrameBufferAndroid.hpp
1 #ifndef sw_FrameBufferAndroid_hpp
2 #define sw_FrameBufferAndroid_hpp
3
4 #include "Main/FrameBuffer.hpp"
5 #include "Common/Debug.hpp"
6
7 #include <hardware/gralloc.h>
8 #include <system/window.h>
9
10 namespace sw
11 {
12     class FrameBufferAndroid : public FrameBuffer
13     {
14     public:
15         FrameBufferAndroid(ANativeWindow* window, int width, int height);
16
17         ~FrameBufferAndroid();
18
19         virtual void flip(void *source, Format format) {blit(source, 0, 0, format);};
20         virtual void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format format);
21
22         virtual void *lock();
23         virtual void unlock();
24
25         bool setSwapRectangle(int l, int t, int w, int h);
26
27     private:
28         int lock(ANativeWindowBuffer* buf, int usage, void** vaddr);
29         int unlock(ANativeWindowBuffer* buf);
30
31         ANativeWindow* nativeWindow;
32         ANativeWindowBuffer* buffer;
33         gralloc_module_t const* gralloc;
34         void* bits;
35     };
36 }
37
38 #endif   // sw_FrameBufferAndroid