1 //
2 // Copyright 2019 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 // DisplayVkMac.h:
7 //    Subclasses DisplayVk for the Mac platform.
8 //
9 
10 #ifndef LIBANGLE_RENDERER_VULKAN_MAC_DISPLAYVKMAC_H_
11 #define LIBANGLE_RENDERER_VULKAN_MAC_DISPLAYVKMAC_H_
12 
13 #include "libANGLE/renderer/vulkan/DisplayVk.h"
14 
15 namespace rx
16 {
17 
18 class DisplayVkMac : public DisplayVk
19 {
20   public:
21     DisplayVkMac(const egl::DisplayState &state);
22 
23     bool isValidNativeWindow(EGLNativeWindowType window) const override;
24 
25     SurfaceImpl *createWindowSurfaceVk(const egl::SurfaceState &state,
26                                        EGLNativeWindowType window) override;
27 
28     SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
29                                                EGLenum buftype,
30                                                EGLClientBuffer clientBuffer,
31                                                const egl::AttributeMap &attribs) override;
32 
33     egl::ConfigSet generateConfigs() override;
34     void checkConfigSupport(egl::Config *config) override;
35 
36     void generateExtensions(egl::DisplayExtensions *outExtensions) const override;
37 
38     egl::Error validateClientBuffer(const egl::Config *configuration,
39                                     EGLenum buftype,
40                                     EGLClientBuffer clientBuffer,
41                                     const egl::AttributeMap &attribs) const override;
42 
43     const char *getWSIExtension() const override;
44 };
45 
46 }  // namespace rx
47 
48 #endif  // LIBANGLE_RENDERER_VULKAN_MAC_DISPLAYVKMAC_H_
49