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:
1
AUTHORS
1
AUTHORS
@ -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);
|
||||
|
Reference in New Issue
Block a user