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 
     15 namespace rx
     16 {
     17 
     18 class SwapChain
     19 {
     20   public:
     21     SwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat)
     22         : mWindow(window), mShareHandle(shareHandle), mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat)
     23     {
     24     }
     25 
     26     virtual ~SwapChain() {};
     27 
     28     virtual EGLint resize(EGLint backbufferWidth, EGLint backbufferSize) = 0;
     29     virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0;
     30     virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0;
     31     virtual void recreate() = 0;
     32 
     33     virtual HANDLE getShareHandle() {return mShareHandle;};
     34 
     35   protected:
     36     const HWND mWindow;            // Window that the surface is created for.
     37     const GLenum mBackBufferFormat;
     38     const GLenum mDepthBufferFormat;
     39 
     40     HANDLE mShareHandle;
     41 };
     42 
     43 }
     44 #endif // LIBGLESV2_RENDERER_SWAPCHAIN_H_
     45