tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SwapChain9.h (2402B)


      1 //
      2 // Copyright 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 // SwapChain9.h: Defines a back-end specific class for the D3D9 swap chain.
      8 
      9 #ifndef LIBANGLE_RENDERER_D3D_D3D9_SWAPCHAIN9_H_
     10 #define LIBANGLE_RENDERER_D3D_D3D9_SWAPCHAIN9_H_
     11 
     12 #include "common/angleutils.h"
     13 #include "libANGLE/renderer/d3d/SwapChainD3D.h"
     14 #include "libANGLE/renderer/d3d/d3d9/RenderTarget9.h"
     15 
     16 namespace rx
     17 {
     18 class NativeWindow9;
     19 class Renderer9;
     20 
     21 class SwapChain9 : public SwapChainD3D
     22 {
     23  public:
     24    SwapChain9(Renderer9 *renderer,
     25               NativeWindow9 *nativeWindow,
     26               HANDLE shareHandle,
     27               IUnknown *d3dTexture,
     28               GLenum backBufferFormat,
     29               GLenum depthBufferFormat,
     30               EGLint orientation);
     31    ~SwapChain9() override;
     32 
     33    EGLint resize(DisplayD3D *displayD3D, EGLint backbufferWidth, EGLint backbufferHeight) override;
     34    EGLint reset(DisplayD3D *displayD3D,
     35                 EGLint backbufferWidth,
     36                 EGLint backbufferHeight,
     37                 EGLint swapInterval) override;
     38    EGLint swapRect(DisplayD3D *displayD3D,
     39                    EGLint x,
     40                    EGLint y,
     41                    EGLint width,
     42                    EGLint height) override;
     43    void recreate() override;
     44 
     45    RenderTargetD3D *getColorRenderTarget() override;
     46    RenderTargetD3D *getDepthStencilRenderTarget() override;
     47 
     48    virtual IDirect3DSurface9 *getRenderTarget();
     49    virtual IDirect3DSurface9 *getDepthStencil();
     50    virtual IDirect3DTexture9 *getOffscreenTexture();
     51 
     52    EGLint getWidth() const { return mWidth; }
     53    EGLint getHeight() const { return mHeight; }
     54 
     55    void *getKeyedMutex() override;
     56 
     57    egl::Error getSyncValues(EGLuint64KHR *ust, EGLuint64KHR *msc, EGLuint64KHR *sbc) override;
     58 
     59  private:
     60    void release();
     61 
     62    Renderer9 *mRenderer;
     63    EGLint mWidth;
     64    EGLint mHeight;
     65    EGLint mSwapInterval;
     66 
     67    NativeWindow9 *mNativeWindow;
     68 
     69    IDirect3DSwapChain9 *mSwapChain;
     70    IDirect3DSurface9 *mBackBuffer;
     71    IDirect3DSurface9 *mRenderTarget;
     72    IDirect3DSurface9 *mDepthStencil;
     73    IDirect3DTexture9 *mOffscreenTexture;
     74 
     75    SurfaceRenderTarget9 mColorRenderTarget;
     76    SurfaceRenderTarget9 mDepthStencilRenderTarget;
     77 };
     78 
     79 }  // namespace rx
     80 #endif  // LIBANGLE_RENDERER_D3D_D3D9_SWAPCHAIN9_H_