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 // TextureNULL.h:
7 //    Defines the class interface for TextureNULL, implementing TextureImpl.
8 //
9 
10 #ifndef LIBANGLE_RENDERER_NULL_TEXTURENULL_H_
11 #define LIBANGLE_RENDERER_NULL_TEXTURENULL_H_
12 
13 #include "libANGLE/renderer/TextureImpl.h"
14 
15 namespace rx
16 {
17 
18 class TextureNULL : public TextureImpl
19 {
20   public:
21     TextureNULL(const gl::TextureState &state);
22     ~TextureNULL() override;
23 
24     gl::Error setImage(GLenum target,
25                        size_t level,
26                        GLenum internalFormat,
27                        const gl::Extents &size,
28                        GLenum format,
29                        GLenum type,
30                        const gl::PixelUnpackState &unpack,
31                        const uint8_t *pixels) override;
32     gl::Error setSubImage(GLenum target,
33                           size_t level,
34                           const gl::Box &area,
35                           GLenum format,
36                           GLenum type,
37                           const gl::PixelUnpackState &unpack,
38                           const uint8_t *pixels) override;
39 
40     gl::Error setCompressedImage(GLenum target,
41                                  size_t level,
42                                  GLenum internalFormat,
43                                  const gl::Extents &size,
44                                  const gl::PixelUnpackState &unpack,
45                                  size_t imageSize,
46                                  const uint8_t *pixels) override;
47     gl::Error setCompressedSubImage(GLenum target,
48                                     size_t level,
49                                     const gl::Box &area,
50                                     GLenum format,
51                                     const gl::PixelUnpackState &unpack,
52                                     size_t imageSize,
53                                     const uint8_t *pixels) override;
54 
55     gl::Error copyImage(GLenum target,
56                         size_t level,
57                         const gl::Rectangle &sourceArea,
58                         GLenum internalFormat,
59                         const gl::Framebuffer *source) override;
60     gl::Error copySubImage(GLenum target,
61                            size_t level,
62                            const gl::Offset &destOffset,
63                            const gl::Rectangle &sourceArea,
64                            const gl::Framebuffer *source) override;
65 
66     gl::Error setStorage(GLenum target,
67                          size_t levels,
68                          GLenum internalFormat,
69                          const gl::Extents &size) override;
70 
71     gl::Error setEGLImageTarget(GLenum target, egl::Image *image) override;
72 
73     gl::Error setImageExternal(GLenum target,
74                                egl::Stream *stream,
75                                const egl::Stream::GLTextureDescription &desc) override;
76 
77     gl::Error generateMipmap() override;
78 
79     void setBaseLevel(GLuint baseLevel) override;
80 
81     void bindTexImage(egl::Surface *surface) override;
82     void releaseTexImage() override;
83 
84     void syncState(const gl::Texture::DirtyBits &dirtyBits) override;
85 };
86 
87 }  // namespace rx
88 
89 #endif  // LIBANGLE_RENDERER_NULL_TEXTURENULL_H_
90