From 362e6d600309ea070f10aac6c4edda2342fc3123 Mon Sep 17 00:00:00 2001 From: "jbauman@chromium.org" Date: Wed, 17 Oct 2012 16:55:06 +0000 Subject: Disable automatic flushes on compositor contexts. The compositor contexts handle flushes themselves, so they don't need the automatic flushes, which can hurt performance. BUG=152393 Review URL: https://chromiumcodereview.appspot.com/11099029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162434 0039d316-1c4b-4281-b951-d872f2087c98 --- gpu/command_buffer/client/cmd_buffer_helper.cc | 10 ++++++++-- gpu/command_buffer/client/cmd_buffer_helper.h | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'gpu') diff --git a/gpu/command_buffer/client/cmd_buffer_helper.cc b/gpu/command_buffer/client/cmd_buffer_helper.cc index d556b5e..54df89e 100644 --- a/gpu/command_buffer/client/cmd_buffer_helper.cc +++ b/gpu/command_buffer/client/cmd_buffer_helper.cc @@ -28,9 +28,14 @@ CommandBufferHelper::CommandBufferHelper(CommandBuffer* command_buffer) commands_issued_(0), usable_(true), context_lost_(false), + flush_automatically_(true), last_flush_time_(0) { } +void CommandBufferHelper::SetAutomaticFlushes(bool enabled) { + flush_automatically_ = enabled; +} + bool CommandBufferHelper::IsContextLost() { if (!context_lost_) { context_lost_ = error::IsError(command_buffer()->GetLastError()); @@ -241,8 +246,9 @@ void CommandBufferHelper::WaitForAvailableEntries(int32 count) { ((get_offset() == last_put_sent_) ? 16 : 2); if (pending > limit) { Flush(); - } else if (commands_issued_ % kCommandsPerFlushCheck == 0) { -#if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) + } else if (flush_automatically_ && + (commands_issued_ % kCommandsPerFlushCheck == 0)) { +#if !defined(OS_ANDROID) // Allow this command buffer to be pre-empted by another if a "reasonable" // amount of work has been done. On highend machines, this reduces the // latency of GPU commands. However, on Android, this can cause the diff --git a/gpu/command_buffer/client/cmd_buffer_helper.h b/gpu/command_buffer/client/cmd_buffer_helper.h index 9922794..8e7cd78 100644 --- a/gpu/command_buffer/client/cmd_buffer_helper.h +++ b/gpu/command_buffer/client/cmd_buffer_helper.h @@ -44,6 +44,10 @@ class GPU_EXPORT CommandBufferHelper { // buffer. bool Initialize(int32 ring_buffer_size); + // Sets whether the command buffer should automatically flush periodically + // to try to increase performance. Defaults to true. + void SetAutomaticFlushes(bool enabled); + // True if the context is lost. bool IsContextLost(); @@ -292,6 +296,7 @@ class GPU_EXPORT CommandBufferHelper { int commands_issued_; bool usable_; bool context_lost_; + bool flush_automatically_; // Using C runtime instead of base because this file cannot depend on base. clock_t last_flush_time_; -- cgit v1.1