vaapi_picture_native_pixmap.cc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2018 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. #include "media/gpu/vaapi/vaapi_picture_native_pixmap.h"
  5. #include "media/gpu/vaapi/va_surface.h"
  6. #include "media/gpu/vaapi/vaapi_wrapper.h"
  7. #include "ui/gfx/buffer_format_util.h"
  8. #include "ui/gfx/gpu_memory_buffer.h"
  9. #include "ui/gfx/linux/native_pixmap_dmabuf.h"
  10. #include "ui/gfx/native_pixmap.h"
  11. #include "ui/gl/gl_bindings.h"
  12. #include "ui/gl/gl_image_native_pixmap.h"
  13. namespace media {
  14. VaapiPictureNativePixmap::VaapiPictureNativePixmap(
  15. scoped_refptr<VaapiWrapper> vaapi_wrapper,
  16. const MakeGLContextCurrentCallback& make_context_current_cb,
  17. const BindGLImageCallback& bind_image_cb,
  18. int32_t picture_buffer_id,
  19. const gfx::Size& size,
  20. const gfx::Size& visible_size,
  21. uint32_t texture_id,
  22. uint32_t client_texture_id,
  23. uint32_t texture_target)
  24. : VaapiPicture(std::move(vaapi_wrapper),
  25. make_context_current_cb,
  26. bind_image_cb,
  27. picture_buffer_id,
  28. size,
  29. visible_size,
  30. texture_id,
  31. client_texture_id,
  32. texture_target) {}
  33. VaapiPictureNativePixmap::~VaapiPictureNativePixmap() = default;
  34. bool VaapiPictureNativePixmap::DownloadFromSurface(
  35. scoped_refptr<VASurface> va_surface) {
  36. DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
  37. return vaapi_wrapper_->BlitSurface(*va_surface, *va_surface_);
  38. }
  39. bool VaapiPictureNativePixmap::AllowOverlay() const {
  40. DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
  41. return true;
  42. }
  43. VASurfaceID VaapiPictureNativePixmap::va_surface_id() const {
  44. return va_surface_->id();
  45. }
  46. } // namespace media