| Index: ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc
|
| diff --git a/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc b/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc
|
| index 59cd6a02bdb3d68cea76154074a9cb85558de305..f39d5f6af5d518c4cc23f70876c5ee085f549388 100644
|
| --- a/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc
|
| +++ b/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc
|
| @@ -51,6 +51,18 @@ class DrmOverlayValidatorTest : public testing::Test {
|
| last_swap_buffers_result_ = result;
|
| }
|
|
|
| + scoped_refptr<ui::ScanoutBuffer> ProcessBuffer(const gfx::Size& size,
|
| + uint32_t format) {
|
| + gfx::BufferFormat buffer_format =
|
| + ui::GetBufferFormatFromFourCCFormat(format);
|
| + return buffer_generator_->Create(drm_, buffer_format, size);
|
| + }
|
| +
|
| + scoped_refptr<ui::ScanoutBuffer> ReturnNullBuffer(const gfx::Size& size,
|
| + uint32_t format) {
|
| + return nullptr;
|
| + }
|
| +
|
| protected:
|
| scoped_ptr<base::MessageLoop> message_loop_;
|
| scoped_refptr<ui::MockDrmDevice> drm_;
|
| @@ -62,6 +74,7 @@ class DrmOverlayValidatorTest : public testing::Test {
|
| scoped_ptr<ui::DrmOverlayValidator> overlay_validator_;
|
| std::vector<ui::OverlayCheck_Params> overlay_params_;
|
| ui::OverlayPlaneList plane_list_;
|
| + ui::OverlayPlane::ProcessBufferCallback process_buffer_handler_;
|
|
|
| int on_swap_buffers_count_;
|
| gfx::SwapResult last_swap_buffers_result_;
|
| @@ -75,6 +88,8 @@ class DrmOverlayValidatorTest : public testing::Test {
|
| void DrmOverlayValidatorTest::SetUp() {
|
| on_swap_buffers_count_ = 0;
|
| last_swap_buffers_result_ = gfx::SwapResult::SWAP_FAILED;
|
| + process_buffer_handler_ = base::Bind(&DrmOverlayValidatorTest::ProcessBuffer,
|
| + base::Unretained(this));
|
|
|
| message_loop_.reset(new base::MessageLoopForUI);
|
| std::vector<uint32_t> crtcs;
|
| @@ -90,14 +105,15 @@ void DrmOverlayValidatorTest::SetUp() {
|
|
|
| scoped_ptr<ui::DrmWindow> window(new ui::DrmWindow(
|
| kDefaultWidgetHandle, drm_device_manager_.get(), screen_manager_.get()));
|
| - window->Initialize();
|
| + window->Initialize(buffer_generator_.get());
|
| window->SetBounds(
|
| gfx::Rect(gfx::Size(kDefaultMode.hdisplay, kDefaultMode.vdisplay)));
|
| screen_manager_->AddWindow(kDefaultWidgetHandle, std::move(window));
|
| plane_manager_ =
|
| static_cast<ui::MockHardwareDisplayPlaneManager*>(drm_->plane_manager());
|
| window_ = screen_manager_->GetWindow(kDefaultWidgetHandle);
|
| - overlay_validator_.reset(new ui::DrmOverlayValidator(window_));
|
| + overlay_validator_.reset(
|
| + new ui::DrmOverlayValidator(window_, buffer_generator_.get()));
|
|
|
| overlay_rect_ =
|
| gfx::Rect(0, 0, kDefaultMode.hdisplay / 2, kDefaultMode.vdisplay / 2);
|
| @@ -115,9 +131,14 @@ void DrmOverlayValidatorTest::SetUp() {
|
| overlay_candidate.plane_z_order = 1;
|
| overlay_params_.push_back(overlay_candidate);
|
|
|
| + scoped_refptr<ui::DrmDevice> drm =
|
| + window_->GetController()->GetAllocationDrmDevice();
|
| for (const auto& param : overlay_params_) {
|
| - ui::OverlayPlane plane(nullptr, param.plane_z_order, param.transform,
|
| - param.display_rect, param.crop_rect);
|
| + scoped_refptr<ui::ScanoutBuffer> scanout_buffer =
|
| + buffer_generator_->Create(drm, param.format, param.buffer_size);
|
| + ui::OverlayPlane plane(std::move(scanout_buffer), param.plane_z_order,
|
| + param.transform, param.display_rect, param.crop_rect,
|
| + process_buffer_handler_);
|
| plane_list_.push_back(plane);
|
| }
|
| }
|
| @@ -135,8 +156,7 @@ TEST_F(DrmOverlayValidatorTest, WindowWithNoController) {
|
| ui::HardwareDisplayController* controller = window_->GetController();
|
| window_->SetController(nullptr);
|
| std::vector<ui::OverlayCheck_Params> validated_params =
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| EXPECT_EQ(false, validated_params.front().is_overlay_candidate);
|
| EXPECT_EQ(false, validated_params.back().is_overlay_candidate);
|
| window_->SetController(controller);
|
| @@ -144,8 +164,7 @@ TEST_F(DrmOverlayValidatorTest, WindowWithNoController) {
|
|
|
| TEST_F(DrmOverlayValidatorTest, DontPromoteMoreLayersThanAvailablePlanes) {
|
| std::vector<ui::OverlayCheck_Params> validated_params =
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| EXPECT_EQ(true, validated_params.front().is_overlay_candidate);
|
| EXPECT_EQ(false, validated_params.back().is_overlay_candidate);
|
| }
|
| @@ -157,8 +176,7 @@ TEST_F(DrmOverlayValidatorTest, DontCollapseOverlayToPrimaryInFullScreen) {
|
| plane_list_.back().display_bounds = primary_rect_;
|
|
|
| std::vector<ui::OverlayCheck_Params> validated_params =
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| // Second candidate should be marked as Invalid as we have only one plane
|
| // per CRTC.
|
| EXPECT_EQ(true, validated_params.front().is_overlay_candidate);
|
| @@ -180,19 +198,19 @@ TEST_F(DrmOverlayValidatorTest, ClearCacheOnReset) {
|
| plane_manager_->SetPlaneProperties(planes_info);
|
| overlay_validator_->ClearCache();
|
|
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
|
|
| - uint32_t optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| - EXPECT_EQ(DRM_FORMAT_UYVY, optimal_format);
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_UYVY,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| // Check if ClearCache actually clears the cache.
|
| overlay_validator_->ClearCache();
|
| - optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| + plane_list = overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| // There should be no entry in cache for this configuration and should return
|
| // default value of DRM_FORMAT_XRGB8888.
|
| - EXPECT_EQ(DRM_FORMAT_XRGB8888, optimal_format);
|
| + EXPECT_EQ(DRM_FORMAT_XRGB8888,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| }
|
|
|
| TEST_F(DrmOverlayValidatorTest, OptimalFormatForOverlayInFullScreen_XRGB) {
|
| @@ -213,11 +231,11 @@ TEST_F(DrmOverlayValidatorTest, OptimalFormatForOverlayInFullScreen_XRGB) {
|
| plane_manager_->SetPlaneProperties(planes);
|
| overlay_validator_->ClearCache();
|
|
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| - uint32_t optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| - EXPECT_EQ(DRM_FORMAT_XRGB8888, optimal_format);
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_XRGB8888,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| }
|
|
|
| TEST_F(DrmOverlayValidatorTest, OptimalFormatForOverlayInFullScreen_YUV) {
|
| @@ -235,16 +253,17 @@ TEST_F(DrmOverlayValidatorTest, OptimalFormatForOverlayInFullScreen_YUV) {
|
| plane_manager_->SetPlaneProperties(planes);
|
| overlay_validator_->ClearCache();
|
|
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| - uint32_t optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| #if defined(USE_DRM_ATOMIC)
|
| - EXPECT_EQ(DRM_FORMAT_UYVY, optimal_format);
|
| + EXPECT_EQ(DRM_FORMAT_UYVY,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| #else
|
| // If Atomic support is disabled, ensure we choose DRM_FORMAT_XRGB8888 as the
|
| // optimal format even if other packed formats are supported by Primary.
|
| - EXPECT_EQ(DRM_FORMAT_XRGB8888, optimal_format);
|
| + EXPECT_EQ(DRM_FORMAT_XRGB8888,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| #endif
|
| }
|
|
|
| @@ -266,17 +285,17 @@ TEST_F(DrmOverlayValidatorTest, OverlayPreferredFormat_YUV) {
|
| overlay_validator_->ClearCache();
|
|
|
| std::vector<ui::OverlayCheck_Params> validated_params =
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
|
|
| for (const auto& param : validated_params)
|
| EXPECT_EQ(true, param.is_overlay_candidate);
|
|
|
| EXPECT_EQ(5, plane_manager_->plane_count());
|
|
|
| - uint32_t optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| - EXPECT_EQ(DRM_FORMAT_UYVY, optimal_format);
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_UYVY,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| }
|
|
|
| TEST_F(DrmOverlayValidatorTest, OverlayPreferredFormat_XRGB) {
|
| @@ -297,12 +316,11 @@ TEST_F(DrmOverlayValidatorTest, OverlayPreferredFormat_XRGB) {
|
| overlay_validator_->ClearCache();
|
|
|
| std::vector<ui::OverlayCheck_Params> validated_params =
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| - uint32_t optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| -
|
| - EXPECT_EQ(DRM_FORMAT_XRGB8888, optimal_format);
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_XRGB8888,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| EXPECT_EQ(3, plane_manager_->plane_count());
|
| for (const auto& param : validated_params)
|
| EXPECT_EQ(true, param.is_overlay_candidate);
|
| @@ -328,8 +346,8 @@ TEST_F(DrmOverlayValidatorTest, RejectYUVBuffersIfNotSupported) {
|
| std::vector<ui::OverlayCheck_Params> validated_params = overlay_params_;
|
| validated_params.back().format = gfx::BufferFormat::UYVY_422;
|
| plane_manager_->ResetPlaneCount();
|
| - validated_params = overlay_validator_->TestPageFlip(
|
| - validated_params, ui::OverlayPlaneList(), buffer_generator_.get());
|
| + validated_params = overlay_validator_->TestPageFlip(validated_params,
|
| + ui::OverlayPlaneList());
|
|
|
| EXPECT_EQ(false, validated_params.back().is_overlay_candidate);
|
| }
|
| @@ -368,16 +386,17 @@ TEST_F(DrmOverlayValidatorTest,
|
| std::vector<ui::OverlayCheck_Params> validated_params = overlay_params_;
|
| validated_params.back().format = gfx::BufferFormat::UYVY_422;
|
| plane_manager_->ResetPlaneCount();
|
| - validated_params = overlay_validator_->TestPageFlip(
|
| - validated_params, ui::OverlayPlaneList(), buffer_generator_.get());
|
| + validated_params = overlay_validator_->TestPageFlip(validated_params,
|
| + ui::OverlayPlaneList());
|
|
|
| EXPECT_EQ(true, validated_params.back().is_overlay_candidate);
|
|
|
| // Both controllers have Overlay which support DRM_FORMAT_UYVY, hence this
|
| // should be picked as the optimal format.
|
| - uint32_t optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| - EXPECT_EQ(DRM_FORMAT_UYVY, optimal_format);
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_UYVY,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
|
|
| // This configuration should not be promoted to Overlay when either of the
|
| // controllers dont support UYVY format.
|
| @@ -387,8 +406,8 @@ TEST_F(DrmOverlayValidatorTest,
|
| plane_manager_->SetPlaneProperties(planes_info);
|
| overlay_validator_->ClearCache();
|
|
|
| - validated_params = overlay_validator_->TestPageFlip(
|
| - validated_params, ui::OverlayPlaneList(), buffer_generator_.get());
|
| + validated_params = overlay_validator_->TestPageFlip(validated_params,
|
| + ui::OverlayPlaneList());
|
| EXPECT_EQ(false, validated_params.back().is_overlay_candidate);
|
|
|
| // Check case where we dont have support for packed formats in primary
|
| @@ -398,8 +417,8 @@ TEST_F(DrmOverlayValidatorTest,
|
| plane_manager_->SetPlaneProperties(planes_info);
|
| overlay_validator_->ClearCache();
|
|
|
| - validated_params = overlay_validator_->TestPageFlip(
|
| - validated_params, ui::OverlayPlaneList(), buffer_generator_.get());
|
| + validated_params = overlay_validator_->TestPageFlip(validated_params,
|
| + ui::OverlayPlaneList());
|
| EXPECT_EQ(false, validated_params.back().is_overlay_candidate);
|
| controller->RemoveCrtc(drm_, kSecondaryCrtc);
|
| }
|
| @@ -437,15 +456,15 @@ TEST_F(DrmOverlayValidatorTest, OptimalFormatYUV_MirroredControllers) {
|
|
|
| plane_manager_->ResetPlaneCount();
|
| std::vector<ui::OverlayCheck_Params> validated_params =
|
| - overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList(),
|
| - buffer_generator_.get());
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
|
|
| EXPECT_EQ(true, validated_params.back().is_overlay_candidate);
|
| // Both controllers have Overlay which support DRM_FORMAT_UYVY, hence this
|
| // should be picked as the optimal format.
|
| - uint32_t optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| - EXPECT_EQ(DRM_FORMAT_UYVY, optimal_format);
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_UYVY,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
|
|
| // DRM_FORMAT_XRGB8888 should be the preferred format when either of the
|
| // controllers dont support UYVY format.
|
| @@ -455,13 +474,13 @@ TEST_F(DrmOverlayValidatorTest, OptimalFormatYUV_MirroredControllers) {
|
| plane_manager_->SetPlaneProperties(planes_info);
|
| overlay_validator_->ClearCache();
|
|
|
| - validated_params = overlay_validator_->TestPageFlip(
|
| - overlay_params_, ui::OverlayPlaneList(), buffer_generator_.get());
|
| + validated_params =
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| EXPECT_EQ(true, validated_params.back().is_overlay_candidate);
|
|
|
| - optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| - EXPECT_EQ(DRM_FORMAT_XRGB8888, optimal_format);
|
| + plane_list = overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_XRGB8888,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
|
|
| // Check case where we dont have support for packed formats in primary
|
| // display.
|
| @@ -470,12 +489,73 @@ TEST_F(DrmOverlayValidatorTest, OptimalFormatYUV_MirroredControllers) {
|
| plane_manager_->SetPlaneProperties(planes_info);
|
| overlay_validator_->ClearCache();
|
|
|
| - validated_params = overlay_validator_->TestPageFlip(
|
| - overlay_params_, ui::OverlayPlaneList(), buffer_generator_.get());
|
| + validated_params =
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| EXPECT_EQ(true, validated_params.back().is_overlay_candidate);
|
|
|
| - optimal_format = overlay_validator_->GetOptimalBufferFormat(
|
| - plane_list_.back(), plane_list_);
|
| - EXPECT_EQ(DRM_FORMAT_XRGB8888, optimal_format);
|
| + plane_list = overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_XRGB8888,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| controller->RemoveCrtc(drm_, kSecondaryCrtc);
|
| }
|
| +
|
| +TEST_F(DrmOverlayValidatorTest, OptimizeOnlyIfProcessingCallbackPresent) {
|
| + // This test checks that we dont manipulate overlay buffers in case Processing
|
| + // callback is not present.
|
| + overlay_params_.back().buffer_size = overlay_rect_.size();
|
| + overlay_params_.back().display_rect = overlay_rect_;
|
| + plane_list_.back().display_bounds = overlay_rect_;
|
| + std::vector<uint32_t> xrgb_yuv_packed_formats = {DRM_FORMAT_XRGB8888,
|
| + DRM_FORMAT_UYVY};
|
| +
|
| + ui::FakePlaneInfo primary_plane_info(
|
| + 100, 1 << 0, std::vector<uint32_t>(1, DRM_FORMAT_XRGB8888));
|
| + ui::FakePlaneInfo overlay_info(101, 1 << 0, xrgb_yuv_packed_formats);
|
| + std::vector<ui::FakePlaneInfo> planes_info{primary_plane_info, overlay_info};
|
| + plane_manager_->SetPlaneProperties(planes_info);
|
| + overlay_validator_->ClearCache();
|
| +
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| +
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_UYVY,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| + plane_list_.back().processing_callback.Reset();
|
| + plane_list = overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(plane_list_.back().buffer->GetFramebufferPixelFormat(),
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| + plane_list_.back().processing_callback = process_buffer_handler_;
|
| +}
|
| +
|
| +TEST_F(DrmOverlayValidatorTest, DontResetOriginalBufferIfProcessedIsInvalid) {
|
| + // This test checks that we dont manipulate overlay buffers in case Processing
|
| + // callback is not present.
|
| + overlay_params_.back().buffer_size = overlay_rect_.size();
|
| + overlay_params_.back().display_rect = overlay_rect_;
|
| + plane_list_.back().display_bounds = overlay_rect_;
|
| + std::vector<uint32_t> xrgb_yuv_packed_formats = {DRM_FORMAT_XRGB8888,
|
| + DRM_FORMAT_UYVY};
|
| +
|
| + ui::FakePlaneInfo primary_plane_info(
|
| + 100, 1 << 0, std::vector<uint32_t>(1, DRM_FORMAT_XRGB8888));
|
| + ui::FakePlaneInfo overlay_info(101, 1 << 0, xrgb_yuv_packed_formats);
|
| + std::vector<ui::FakePlaneInfo> planes_info{primary_plane_info, overlay_info};
|
| + plane_manager_->SetPlaneProperties(planes_info);
|
| + overlay_validator_->ClearCache();
|
| +
|
| + overlay_validator_->TestPageFlip(overlay_params_, ui::OverlayPlaneList());
|
| +
|
| + ui::OverlayPlaneList plane_list =
|
| + overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(DRM_FORMAT_UYVY,
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| + plane_list_.back().processing_callback = base::Bind(
|
| + &DrmOverlayValidatorTest::ReturnNullBuffer, base::Unretained(this));
|
| +
|
| + plane_list = overlay_validator_->PrepareBuffersForPageFlip(plane_list_);
|
| + EXPECT_EQ(plane_list_.back().buffer->GetFramebufferPixelFormat(),
|
| + plane_list.back().buffer->GetFramebufferPixelFormat());
|
| + plane_list_.back().processing_callback = base::Bind(
|
| + &DrmOverlayValidatorTest::ProcessBuffer, base::Unretained(this));
|
| +}
|
|
|