Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / src / libGLESv2 / renderer / SwapChain.h
1 //
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 // SwapChain.h: Defines a back-end specific class that hides the details of the
8 // implementation-specific swapchain.
9
10 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN_H_
11 #define LIBGLESV2_RENDERER_SWAPCHAIN_H_
12
13 #include "common/angleutils.h"
14 #include "common/NativeWindow.h"
15 #include "common/platform.h"
16
17 #include <GLES2/gl2.h>
18 #include <EGL/egl.h>
19
20 #if !defined(ANGLE_FORCE_VSYNC_OFF)
21 #define ANGLE_FORCE_VSYNC_OFF 0
22 #endif
23
24 namespace rx
25 {
26
27 class SwapChain
28 {
29   public:
30     SwapChain(rx::NativeWindow nativeWindow, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat)
31         : mNativeWindow(nativeWindow), mShareHandle(shareHandle), mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat)
32     {
33     }
34
35     virtual ~SwapChain() {};
36
37     virtual EGLint resize(EGLint backbufferWidth, EGLint backbufferSize) = 0;
38     virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0;
39     virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0;
40     virtual void recreate() = 0;
41
42     virtual HANDLE getShareHandle() {return mShareHandle;};
43
44   protected:
45     rx::NativeWindow mNativeWindow;  // Handler for the Window that the surface is created for.
46     const GLenum mBackBufferFormat;
47     const GLenum mDepthBufferFormat;
48
49     HANDLE mShareHandle;
50 };
51
52 }
53 #endif // LIBGLESV2_RENDERER_SWAPCHAIN_H_