0

Select BackingStrategy based on GpuPreferences.

BUG=

Review URL: https://codereview.chromium.org/1809943002

Cr-Commit-Position: refs/heads/master@{#382780}
This commit is contained in:
william.xie
2016-03-22 20:16:54 -07:00
committed by Commit bot
parent 115c46f7f7
commit c27b5e8077
4 changed files with 17 additions and 10 deletions

@ -633,6 +633,7 @@ Wesley Wigham <t-weswig@microsoft.com>
Wesley Wigham <wwigham@gmail.com>
Will Hirsch <chromium@willhirsch.co.uk>
Will Shackleton <w.shackleton@gmail.com>
William Xie <william.xie@chromium.com>
William Xie <william.xie@intel.com>
Xiang Long <xiang.long@intel.com>
Xiangze Zhang <xiangze.zhang@intel.com>

@ -22,7 +22,6 @@
#include "content/common/gpu/media/avda_return_on_failure.h"
#include "content/common/gpu/media/shared_memory_region.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
#include "gpu/command_buffer/service/gpu_switches.h"
#include "gpu/command_buffer/service/mailbox_manager.h"
#include "media/base/android/media_codec_bridge.h"
#include "media/base/android/media_codec_util.h"
@ -268,7 +267,9 @@ AndroidVideoDecodeAccelerator::AndroidVideoDecodeAccelerator(
error_sequence_token_(0),
defer_errors_(false),
weak_this_factory_(this) {
if (UseDeferredRenderingStrategy()) {
const gpu::GpuPreferences& gpu_preferences =
gl_decoder_->GetContextGroup()->gpu_preferences();
if (UseDeferredRenderingStrategy(gpu_preferences)) {
// TODO(liberato, watk): Figure out what we want to do about zero copy for
// fullscreen external SurfaceView in WebView. http://crbug.com/582170.
DCHECK(!gl_decoder_->GetContextGroup()->mailbox_manager()->UsesSync());
@ -1153,16 +1154,17 @@ void AndroidVideoDecodeAccelerator::ManageTimer(bool did_work) {
}
// static
bool AndroidVideoDecodeAccelerator::UseDeferredRenderingStrategy() {
const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
bool AndroidVideoDecodeAccelerator::UseDeferredRenderingStrategy(
const gpu::GpuPreferences& gpu_preferences) {
// TODO(liberato, watk): Figure out what we want to do about zero copy for
// fullscreen external SurfaceView in WebView. http://crbug.com/582170.
return !cmd_line->HasSwitch(switches::kEnableThreadedTextureMailboxes);
return !gpu_preferences.enable_threaded_texture_mailboxes;
}
// static
media::VideoDecodeAccelerator::Capabilities
AndroidVideoDecodeAccelerator::GetCapabilities() {
AndroidVideoDecodeAccelerator::GetCapabilities(
const gpu::GpuPreferences& gpu_preferences) {
Capabilities capabilities;
SupportedProfiles& profiles = capabilities.supported_profiles;
@ -1207,7 +1209,7 @@ AndroidVideoDecodeAccelerator::GetCapabilities() {
profiles.push_back(profile);
}
if (UseDeferredRenderingStrategy()) {
if (UseDeferredRenderingStrategy(gpu_preferences)) {
capabilities.flags = media::VideoDecodeAccelerator::Capabilities::
NEEDS_ALL_PICTURE_BUFFERS_TO_DECODE |
media::VideoDecodeAccelerator::Capabilities::

@ -19,6 +19,7 @@
#include "content/common/content_export.h"
#include "content/common/gpu/media/avda_state_provider.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
#include "gpu/command_buffer/service/gpu_preferences.h"
#include "media/base/android/media_drm_bridge_cdm_context.h"
#include "media/base/android/sdk_media_codec_bridge.h"
#include "media/base/media_keys.h"
@ -135,7 +136,8 @@ class CONTENT_EXPORT AndroidVideoDecodeAccelerator
void PostError(const ::tracked_objects::Location& from_here,
media::VideoDecodeAccelerator::Error error) override;
static media::VideoDecodeAccelerator::Capabilities GetCapabilities();
static media::VideoDecodeAccelerator::Capabilities GetCapabilities(
const gpu::GpuPreferences& gpu_preferences);
// Notifies about SurfaceTexture::OnFrameAvailable. This can happen on any
// thread at any time!
@ -229,7 +231,8 @@ class CONTENT_EXPORT AndroidVideoDecodeAccelerator
void DismissPictureBuffers();
// Return true if and only if we should use deferred rendering.
static bool UseDeferredRenderingStrategy();
static bool UseDeferredRenderingStrategy(
const gpu::GpuPreferences& gpu_preferences);
// Used to DCHECK that we are called on the correct thread.
base::ThreadChecker thread_checker_;

@ -183,7 +183,8 @@ GpuVideoDecodeAccelerator::GetCapabilities(
capabilities.supported_profiles =
VTVideoDecodeAccelerator::GetSupportedProfiles();
#elif defined(OS_ANDROID)
capabilities = AndroidVideoDecodeAccelerator::GetCapabilities();
capabilities =
AndroidVideoDecodeAccelerator::GetCapabilities(gpu_preferences);
#endif
return GpuVideoAcceleratorUtil::ConvertMediaToGpuDecodeCapabilities(
capabilities);