• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
7 // HardwareBufferImageSiblingVkAndroid.h: Defines the HardwareBufferImageSiblingVkAndroid to wrap
8 // EGL images created from AHardwareBuffer objects
9 
10 #ifndef LIBANGLE_RENDERER_VULKAN_ANDROID_HARDWAREBUFFERIMAGESIBLINGVKANDROID_H_
11 #define LIBANGLE_RENDERER_VULKAN_ANDROID_HARDWAREBUFFERIMAGESIBLINGVKANDROID_H_
12 
13 #include "libANGLE/renderer/vulkan/ImageVk.h"
14 
15 namespace rx
16 {
17 
18 class HardwareBufferImageSiblingVkAndroid : public ExternalImageSiblingVk
19 {
20   public:
21     HardwareBufferImageSiblingVkAndroid(EGLClientBuffer buffer);
22     ~HardwareBufferImageSiblingVkAndroid() override;
23 
24     static egl::Error ValidateHardwareBuffer(RendererVk *renderer,
25                                              EGLClientBuffer buffer,
26                                              const egl::AttributeMap &attribs);
27 
28     egl::Error initialize(const egl::Display *display) override;
29     void onDestroy(const egl::Display *display) override;
30 
31     // ExternalImageSiblingImpl interface
32     gl::Format getFormat() const override;
33     bool isRenderable(const gl::Context *context) const override;
34     bool isTexturable(const gl::Context *context) const override;
35     bool isYUV() const override;
36     bool isCubeMap() const override;
37     bool hasProtectedContent() const override;
38     gl::Extents getSize() const override;
39     size_t getSamples() const override;
40     uint32_t getLevelCount() const override;
41 
42     // ExternalImageSiblingVk interface
43     vk::ImageHelper *getImage() const override;
44 
45     void release(RendererVk *renderer) override;
46 
47   private:
48     angle::Result initImpl(DisplayVk *displayVk);
49 
50     EGLClientBuffer mBuffer;
51     gl::Extents mSize;
52     gl::Format mFormat;
53 
54     bool mRenderable;
55     bool mTextureable;
56     bool mYUV;
57     uint32_t mLevelCount;
58     uint64_t mUsage;
59     size_t mSamples;
60 
61     vk::ImageHelper *mImage;
62 };
63 
64 }  // namespace rx
65 
66 #endif  // LIBANGLE_RENDERER_VULKAN_ANDROID_HARDWAREBUFFERIMAGESIBLINGVKANDROID_H_
67