Home | History | Annotate | Download | only in renderer
      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/platform.h"
     15 
     16 #include <GLES2/gl2.h>
     17 #include <EGL/egl.h>
     18 
     19 #if !defined(ANGLE_FORCE_VSYNC_OFF)
     20 #define ANGLE_FORCE_VSYNC_OFF 0
     21 #endif
     22 
     23 namespace rx
     24 {
     25 
     26 class SwapChain
     27 {
     28   public:
     29     SwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat)
     30         : mWindow(window), mShareHandle(shareHandle), mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat)
     31     {
     32     }
     33 
     34     virtual ~SwapChain() {};
     35 
     36     virtual EGLint resize(EGLint backbufferWidth, EGLint backbufferSize) = 0;
     37     virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0;
     38     virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0;
     39     virtual void recreate() = 0;
     40 
     41     virtual HANDLE getShareHandle() {return mShareHandle;};
     42 
     43   protected:
     44     const HWND mWindow;            // Window that the surface is created for.
     45     const GLenum mBackBufferFormat;
     46     const GLenum mDepthBufferFormat;
     47 
     48     HANDLE mShareHandle;
     49 };
     50 
     51 }
     52 #endif // LIBGLESV2_RENDERER_SWAPCHAIN_H_
     53