blob: f09f19b2006dccc717cb11a26a8e03a86d79a5ea [file] [log] [blame]
daniel@transgaming.com3c720782012-10-31 18:42:34 +00001//
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
daniel@transgaming.com76d3e6e2012-10-31 19:55:33 +000013#include "common/angleutils.h"
daniel@transgaming.com3c720782012-10-31 18:42:34 +000014
Geoff Lang1727a0a2013-10-15 16:07:38 -040015#if !defined(ANGLE_FORCE_VSYNC_OFF)
16#define ANGLE_FORCE_VSYNC_OFF 0
17#endif
18
daniel@transgaming.com76d3e6e2012-10-31 19:55:33 +000019namespace rx
daniel@transgaming.com3c720782012-10-31 18:42:34 +000020{
daniel@transgaming.com3c720782012-10-31 18:42:34 +000021
22class SwapChain
23{
24 public:
daniel@transgaming.coma27e05b2012-11-28 19:39:42 +000025 SwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat)
26 : mWindow(window), mShareHandle(shareHandle), mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat)
27 {
28 }
daniel@transgaming.com3c720782012-10-31 18:42:34 +000029
daniel@transgaming.coma27e05b2012-11-28 19:39:42 +000030 virtual ~SwapChain() {};
daniel@transgaming.com3c720782012-10-31 18:42:34 +000031
shannon.woods@transgaming.comc71ca752013-02-28 23:06:50 +000032 virtual EGLint resize(EGLint backbufferWidth, EGLint backbufferSize) = 0;
daniel@transgaming.coma27e05b2012-11-28 19:39:42 +000033 virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0;
34 virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0;
shannon.woods%transgaming.com@gtempaccount.com88079a02013-03-23 18:43:24 +000035 virtual void recreate() = 0;
daniel@transgaming.com3c720782012-10-31 18:42:34 +000036
daniel@transgaming.coma27e05b2012-11-28 19:39:42 +000037 virtual HANDLE getShareHandle() {return mShareHandle;};
daniel@transgaming.com3c720782012-10-31 18:42:34 +000038
daniel@transgaming.coma27e05b2012-11-28 19:39:42 +000039 protected:
daniel@transgaming.com3c720782012-10-31 18:42:34 +000040 const HWND mWindow; // Window that the surface is created for.
41 const GLenum mBackBufferFormat;
42 const GLenum mDepthBufferFormat;
daniel@transgaming.com3c720782012-10-31 18:42:34 +000043
44 HANDLE mShareHandle;
45};
46
47}
48#endif // LIBGLESV2_RENDERER_SWAPCHAIN_H_