1 // 2 // Copyright 2014 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 // RenderbufferD3d.h: Defines the RenderbufferD3D class which implements RenderbufferImpl. 8 9 #ifndef LIBANGLE_RENDERER_D3D_RENDERBUFFERD3D_H_ 10 #define LIBANGLE_RENDERER_D3D_RENDERBUFFERD3D_H_ 11 12 #include "angle_gl.h" 13 14 #include "common/angleutils.h" 15 #include "libANGLE/renderer/RenderbufferImpl.h" 16 17 namespace rx 18 { 19 class EGLImageD3D; 20 class RendererD3D; 21 class RenderTargetD3D; 22 class SwapChainD3D; 23 24 class RenderbufferD3D : public RenderbufferImpl 25 { 26 public: 27 RenderbufferD3D(const gl::RenderbufferState &state, RendererD3D *renderer); 28 ~RenderbufferD3D() override; 29 30 void onDestroy(const gl::Context *context) override; 31 32 angle::Result setStorage(const gl::Context *context, 33 GLenum internalformat, 34 size_t width, 35 size_t height) override; 36 angle::Result setStorageMultisample(const gl::Context *context, 37 size_t samples, 38 GLenum internalformat, 39 size_t width, 40 size_t height) override; 41 angle::Result setStorageEGLImageTarget(const gl::Context *context, egl::Image *image) override; 42 43 angle::Result getRenderTarget(const gl::Context *context, RenderTargetD3D **outRenderTarget); 44 angle::Result getAttachmentRenderTarget(const gl::Context *context, 45 GLenum binding, 46 const gl::ImageIndex &imageIndex, 47 GLsizei samples, 48 FramebufferAttachmentRenderTarget **rtOut) override; 49 50 angle::Result initializeContents(const gl::Context *context, 51 const gl::ImageIndex &imageIndex) override; 52 53 private: 54 RendererD3D *mRenderer; 55 RenderTargetD3D *mRenderTarget; 56 EGLImageD3D *mImage; 57 }; 58 59 } // namespace rx 60 61 #endif // LIBANGLE_RENDERER_D3D_RENDERBUFFERD3D_H_ 62