• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2016 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 // StreamProducerD3DTexture.h: Interface for a D3D11 texture stream producer
8 
9 #ifndef LIBANGLE_RENDERER_D3D_D3D11_STREAM11_H_
10 #define LIBANGLE_RENDERER_D3D_D3D11_STREAM11_H_
11 
12 #include "libANGLE/renderer/StreamProducerImpl.h"
13 
14 namespace rx
15 {
16 class Renderer11;
17 
18 class StreamProducerD3DTexture : public StreamProducerImpl
19 {
20   public:
21     StreamProducerD3DTexture(Renderer11 *renderer);
22     ~StreamProducerD3DTexture() override;
23 
24     egl::Error validateD3DTexture(const void *pointer,
25                                   const egl::AttributeMap &attributes) const override;
26     void postD3DTexture(void *pointer, const egl::AttributeMap &attributes) override;
27     egl::Stream::GLTextureDescription getGLFrameDescription(int planeIndex) override;
28 
29     // Gets a pointer to the internal D3D texture
30     ID3D11Texture2D *getD3DTexture();
31 
32     // Gets the slice index for the D3D texture that the frame is in
33     UINT getArraySlice();
34 
35   private:
36     Renderer11 *mRenderer;
37 
38     ID3D11Texture2D *mTexture;
39     UINT mArraySlice;
40     UINT mPlaneOffset;
41 };
42 }  // namespace rx
43 
44 #endif  // LIBANGLE_RENDERER_D3D_D3D11_STREAM11_H_
45