diff options
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/libEGL/Surface.h')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/libEGL/Surface.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/src/libEGL/Surface.h b/Source/ThirdParty/ANGLE/src/libEGL/Surface.h new file mode 100644 index 0000000..5bc912c --- /dev/null +++ b/Source/ThirdParty/ANGLE/src/libEGL/Surface.h @@ -0,0 +1,83 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Surface.h: Defines the egl::Surface class, representing a drawing surface +// such as the client area of a window, including any back buffers. +// Implements EGLSurface and related functionality. [EGL 1.4] section 2.2 page 3. + +#ifndef INCLUDE_SURFACE_H_ +#define INCLUDE_SURFACE_H_ + +#define EGLAPI +#include <EGL/egl.h> +#include <d3d9.h> + +#include "common/angleutils.h" + +namespace egl +{ +class Display; +class Config; + +class Surface +{ + public: + Surface(Display *display, const egl::Config *config, HWND window); + + ~Surface(); + + HWND getWindowHandle(); + bool swap(); + + virtual EGLint getWidth() const; + virtual EGLint getHeight() const; + + virtual IDirect3DSurface9 *getRenderTarget(); + virtual IDirect3DSurface9 *getDepthStencil(); + + private: + DISALLOW_COPY_AND_ASSIGN(Surface); + + Display *const mDisplay; + IDirect3DSwapChain9 *mSwapChain; + IDirect3DSurface9 *mBackBuffer; + IDirect3DSurface9 *mRenderTarget; + IDirect3DSurface9 *mDepthStencil; + IDirect3DTexture9 *mFlipTexture; + + void resetSwapChain(); + bool checkForWindowResize(); + + void applyFlipState(IDirect3DDevice9 *device); + void restoreState(IDirect3DDevice9 *device); + void writeRecordableFlipState(IDirect3DDevice9 *device); + void releaseRecordedState(IDirect3DDevice9 *device); + IDirect3DStateBlock9 *mFlipState; + IDirect3DStateBlock9 *mPreFlipState; + IDirect3DSurface9 *mPreFlipBackBuffer; + IDirect3DSurface9 *mPreFlipDepthStencil; + + const HWND mWindow; // Window that the surface is created for. + const egl::Config *mConfig; // EGL config surface was created with + EGLint mHeight; // Height of surface + EGLint mWidth; // Width of surface +// EGLint horizontalResolution; // Horizontal dot pitch +// EGLint verticalResolution; // Vertical dot pitch +// EGLBoolean largestPBuffer; // If true, create largest pbuffer possible +// EGLBoolean mipmapTexture; // True if texture has mipmaps +// EGLint mipmapLevel; // Mipmap level to render to +// EGLenum multisampleResolve; // Multisample resolve behavior + EGLint mPixelAspectRatio; // Display aspect ratio + EGLenum mRenderBuffer; // Render buffer + EGLenum mSwapBehavior; // Buffer swap behavior +// EGLenum textureFormat; // Format of texture: RGB, RGBA, or no texture +// EGLenum textureTarget; // Type of texture: 2D or no texture +// EGLenum vgAlphaFormat; // Alpha format for OpenVG +// EGLenum vgColorSpace; // Color space for OpenVG +}; +} + +#endif // INCLUDE_SURFACE_H_ |