1// Copyright 2014 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 5#include "content/browser/compositor/overlay_candidate_validator_ozone.h" 6 7#include "ui/ozone/public/overlay_candidates_ozone.h" 8 9namespace content { 10 11static ui::SurfaceFactoryOzone::BufferFormat GetOzoneFormat( 12 cc::ResourceFormat overlay_format) { 13 switch (overlay_format) { 14 case cc::RGBA_8888: 15 return ui::SurfaceFactoryOzone::RGBA_8888; 16 case cc::RGBA_4444: 17 case cc::BGRA_8888: 18 case cc::ALPHA_8: 19 case cc::LUMINANCE_8: 20 case cc::RGB_565: 21 case cc::ETC1: 22 break; 23 } 24 NOTREACHED(); 25 return ui::SurfaceFactoryOzone::UNKNOWN; 26} 27 28OverlayCandidateValidatorOzone::OverlayCandidateValidatorOzone( 29 gfx::AcceleratedWidget widget, 30 ui::OverlayCandidatesOzone* overlay_candidates) 31 : widget_(widget), overlay_candidates_(overlay_candidates) { 32} 33 34OverlayCandidateValidatorOzone::~OverlayCandidateValidatorOzone() {} 35 36void OverlayCandidateValidatorOzone::CheckOverlaySupport( 37 cc::OverlayCandidateList* surfaces) { 38 DCHECK_GE(2U, surfaces->size()); 39 ui::OverlayCandidatesOzone::OverlaySurfaceCandidateList ozone_surface_list; 40 ozone_surface_list.resize(surfaces->size()); 41 42 for (size_t i = 0; i < surfaces->size(); i++) { 43 ozone_surface_list.at(i).transform = surfaces->at(i).transform; 44 ozone_surface_list.at(i).format = GetOzoneFormat(surfaces->at(i).format); 45 ozone_surface_list.at(i).display_rect = surfaces->at(i).display_rect; 46 ozone_surface_list.at(i).crop_rect = surfaces->at(i).uv_rect; 47 ozone_surface_list.at(i).plane_z_order = surfaces->at(i).plane_z_order; 48 } 49 50 overlay_candidates_->CheckOverlaySupport(&ozone_surface_list); 51 DCHECK_EQ(surfaces->size(), ozone_surface_list.size()); 52 53 for (size_t i = 0; i < surfaces->size(); i++) { 54 surfaces->at(i).overlay_handled = ozone_surface_list.at(i).overlay_handled; 55 } 56} 57 58} // namespace content 59