gl_image_ahardwarebuffer.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef UI_GL_GL_IMAGE_AHARDWAREBUFFER_H_
  5. #define UI_GL_GL_IMAGE_AHARDWAREBUFFER_H_
  6. #include <memory>
  7. #include "base/android/scoped_hardware_buffer_handle.h"
  8. #include "ui/gl/gl_bindings.h"
  9. #include "ui/gl/gl_export.h"
  10. #include "ui/gl/gl_image_egl.h"
  11. namespace base {
  12. namespace android {
  13. class ScopedHardwareBufferFenceSync;
  14. } // namespace android
  15. } // namespace base
  16. namespace gl {
  17. class GL_EXPORT GLImageAHardwareBuffer : public GLImageEGL {
  18. public:
  19. explicit GLImageAHardwareBuffer(const gfx::Size& size);
  20. GLImageAHardwareBuffer(const GLImageAHardwareBuffer&) = delete;
  21. GLImageAHardwareBuffer& operator=(const GLImageAHardwareBuffer&) = delete;
  22. // Create an EGLImage from a given Android hardware buffer.
  23. bool Initialize(AHardwareBuffer* buffer, bool preserved);
  24. // Overridden from GLImage:
  25. unsigned GetInternalFormat() override;
  26. unsigned GetDataType() override;
  27. bool BindTexImage(unsigned target) override;
  28. bool CopyTexImage(unsigned target) override;
  29. bool CopyTexSubImage(unsigned target,
  30. const gfx::Point& offset,
  31. const gfx::Rect& rect) override;
  32. void Flush() override;
  33. void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
  34. uint64_t process_tracing_id,
  35. const std::string& dump_name) override;
  36. std::unique_ptr<base::android::ScopedHardwareBufferFenceSync>
  37. GetAHardwareBuffer() override;
  38. protected:
  39. ~GLImageAHardwareBuffer() override;
  40. private:
  41. class ScopedHardwareBufferFenceSyncImpl;
  42. base::android::ScopedHardwareBufferHandle handle_;
  43. unsigned internal_format_ = GL_RGBA;
  44. unsigned data_type_ = GL_UNSIGNED_BYTE;
  45. };
  46. } // namespace gl
  47. #endif // UI_GL_GL_IMAGE_AHARDWAREBUFFER_H_