• 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 // DisplayNULL.h:
7 //    Defines the class interface for DisplayNULL, implementing DisplayImpl.
8 //
9 
10 #ifndef LIBANGLE_RENDERER_NULL_DISPLAYNULL_H_
11 #define LIBANGLE_RENDERER_NULL_DISPLAYNULL_H_
12 
13 #include "libANGLE/renderer/DisplayImpl.h"
14 
15 namespace rx
16 {
17 class ShareGroupNULL : public ShareGroupImpl
18 {};
19 
20 class AllocationTrackerNULL;
21 
22 class DisplayNULL : public DisplayImpl
23 {
24   public:
25     DisplayNULL(const egl::DisplayState &state);
26     ~DisplayNULL() override;
27 
28     egl::Error initialize(egl::Display *display) override;
29     void terminate() override;
30 
31     egl::Error makeCurrent(egl::Display *display,
32                            egl::Surface *drawSurface,
33                            egl::Surface *readSurface,
34                            gl::Context *context) override;
35 
36     egl::ConfigSet generateConfigs() override;
37 
38     bool testDeviceLost() override;
39     egl::Error restoreLostDevice(const egl::Display *display) override;
40 
41     bool isValidNativeWindow(EGLNativeWindowType window) const override;
42 
43     std::string getRendererDescription() override;
44     std::string getVendorString() override;
45     std::string getVersionString(bool includeFullVersion) override;
46 
47     DeviceImpl *createDevice() override;
48 
49     egl::Error waitClient(const gl::Context *context) override;
50     egl::Error waitNative(const gl::Context *context, EGLint engine) override;
51     gl::Version getMaxSupportedESVersion() const override;
52     gl::Version getMaxConformantESVersion() const override;
53 
54     SurfaceImpl *createWindowSurface(const egl::SurfaceState &state,
55                                      EGLNativeWindowType window,
56                                      const egl::AttributeMap &attribs) override;
57     SurfaceImpl *createPbufferSurface(const egl::SurfaceState &state,
58                                       const egl::AttributeMap &attribs) override;
59     SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
60                                                EGLenum buftype,
61                                                EGLClientBuffer buffer,
62                                                const egl::AttributeMap &attribs) override;
63     SurfaceImpl *createPixmapSurface(const egl::SurfaceState &state,
64                                      NativePixmapType nativePixmap,
65                                      const egl::AttributeMap &attribs) override;
66 
67     ImageImpl *createImage(const egl::ImageState &state,
68                            const gl::Context *context,
69                            EGLenum target,
70                            const egl::AttributeMap &attribs) override;
71 
72     ContextImpl *createContext(const gl::State &state,
73                                gl::ErrorSet *errorSet,
74                                const egl::Config *configuration,
75                                const gl::Context *shareContext,
76                                const egl::AttributeMap &attribs) override;
77 
78     StreamProducerImpl *createStreamProducerD3DTexture(egl::Stream::ConsumerType consumerType,
79                                                        const egl::AttributeMap &attribs) override;
80 
81     ShareGroupImpl *createShareGroup() override;
82 
populateFeatureList(angle::FeatureList * features)83     void populateFeatureList(angle::FeatureList *features) override {}
84 
85   private:
86     void generateExtensions(egl::DisplayExtensions *outExtensions) const override;
87     void generateCaps(egl::Caps *outCaps) const override;
88 
89     std::unique_ptr<AllocationTrackerNULL> mAllocationTracker;
90 };
91 
92 }  // namespace rx
93 
94 #endif  // LIBANGLE_RENDERER_NULL_DISPLAYNULL_H_
95