Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Unified Diff: cc/raster/raster_buffer_provider_perftest.cc

Issue 1951193002: cc: Add mailbox support to ResourceProvider write locks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@worker_context_stream
Patch Set: ericrk's review Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/raster/raster_buffer_provider_perftest.cc
diff --git a/cc/raster/raster_buffer_provider_perftest.cc b/cc/raster/raster_buffer_provider_perftest.cc
index 43e35dacac06b12fb1fbe69b313c082a61d1a69d..5ebd47ac1bdc2ef6d08b5652548cfb37d0867cbe 100644
--- a/cc/raster/raster_buffer_provider_perftest.cc
+++ b/cc/raster/raster_buffer_provider_perftest.cc
@@ -13,11 +13,11 @@
#include "cc/output/context_provider.h"
#include "cc/raster/bitmap_raster_buffer_provider.h"
#include "cc/raster/gpu_raster_buffer_provider.h"
-#include "cc/raster/gpu_rasterizer.h"
#include "cc/raster/one_copy_raster_buffer_provider.h"
#include "cc/raster/raster_buffer_provider.h"
#include "cc/raster/synchronous_task_graph_runner.h"
#include "cc/raster/zero_copy_raster_buffer_provider.h"
+#include "cc/resources/platform_color.h"
#include "cc/resources/resource_pool.h"
#include "cc/resources/resource_provider.h"
#include "cc/resources/scoped_resource.h"
@@ -29,6 +29,7 @@
#include "cc/test/test_shared_bitmap_manager.h"
#include "cc/test/test_web_graphics_context_3d.h"
#include "cc/tiles/tile_task_manager.h"
+#include "gpu/command_buffer/common/sync_token.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/perf/perf_test.h"
#include "third_party/khronos/GLES2/gl2.h"
@@ -68,6 +69,13 @@ class PerfGLES2Interface : public gpu::gles2::GLES2InterfaceStub {
if (pname == GL_QUERY_RESULT_AVAILABLE_EXT)
*params = 1;
}
+ void GenUnverifiedSyncTokenCHROMIUM(GLuint64 fence_sync,
+ GLbyte* sync_token) override {
+ // Copy the data over after setting the data to ensure alignment.
+ gpu::SyncToken sync_token_data(gpu::CommandBufferNamespace::GPU_IO, 0,
+ gpu::CommandBufferId(), fence_sync);
+ memcpy(sync_token, &sync_token_data, sizeof(sync_token_data));
+ }
};
class PerfContextProvider : public ContextProvider {
@@ -311,43 +319,43 @@ class RasterBufferProviderPerfTest
public:
// Overridden from testing::Test:
void SetUp() override {
- std::unique_ptr<RasterBufferProvider> raster_buffer_provider;
switch (GetParam()) {
case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY:
Create3dOutputSurfaceAndResourceProvider();
- raster_buffer_provider = ZeroCopyRasterBufferProvider::Create(
+ raster_buffer_provider_ = ZeroCopyRasterBufferProvider::Create(
resource_provider_.get(), PlatformColor::BestTextureFormat());
break;
case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY:
Create3dOutputSurfaceAndResourceProvider();
- raster_buffer_provider = base::MakeUnique<OneCopyRasterBufferProvider>(
+ raster_buffer_provider_ = base::MakeUnique<OneCopyRasterBufferProvider>(
task_runner_.get(), compositor_context_provider_.get(),
worker_context_provider_.get(), resource_provider_.get(),
std::numeric_limits<int>::max(), false,
- std::numeric_limits<int>::max(),
- PlatformColor::BestTextureFormat());
+ std::numeric_limits<int>::max(), PlatformColor::BestTextureFormat(),
+ false);
break;
case RASTER_BUFFER_PROVIDER_TYPE_GPU:
Create3dOutputSurfaceAndResourceProvider();
- raster_buffer_provider = base::MakeUnique<GpuRasterBufferProvider>(
+ raster_buffer_provider_ = base::MakeUnique<GpuRasterBufferProvider>(
compositor_context_provider_.get(), worker_context_provider_.get(),
- resource_provider_.get(), false, 0);
+ resource_provider_.get(), false, 0, false);
break;
case RASTER_BUFFER_PROVIDER_TYPE_BITMAP:
CreateSoftwareOutputSurfaceAndResourceProvider();
- raster_buffer_provider =
+ raster_buffer_provider_ =
BitmapRasterBufferProvider::Create(resource_provider_.get());
break;
}
- DCHECK(raster_buffer_provider);
+ DCHECK(raster_buffer_provider_);
- tile_task_manager_ = TileTaskManagerImpl::Create(
- std::move(raster_buffer_provider), task_graph_runner_.get());
+ tile_task_manager_ = TileTaskManagerImpl::Create(task_graph_runner_.get());
}
void TearDown() override {
tile_task_manager_->Shutdown();
tile_task_manager_->CheckForCompletedTasks();
+
+ raster_buffer_provider_->Shutdown();
}
// Overridden from PerfRasterBufferProviderHelper:
@@ -355,13 +363,11 @@ class RasterBufferProviderPerfTest
const Resource* resource,
uint64_t resource_content_id,
uint64_t previous_content_id) override {
- return tile_task_manager_->GetRasterBufferProvider()
- ->AcquireBufferForRaster(resource, resource_content_id,
- previous_content_id);
+ return raster_buffer_provider_->AcquireBufferForRaster(
+ resource, resource_content_id, previous_content_id);
}
void ReleaseBufferForRaster(std::unique_ptr<RasterBuffer> buffer) override {
- tile_task_manager_->GetRasterBufferProvider()->ReleaseBufferForRaster(
- std::move(buffer));
+ raster_buffer_provider_->ReleaseBufferForRaster(std::move(buffer));
}
void RunMessageLoopUntilAllTasksHaveCompleted() {
@@ -386,12 +392,14 @@ class RasterBufferProviderPerfTest
graph.Reset();
ResetRasterTasks(raster_tasks);
BuildTileTaskGraph(&graph, raster_tasks);
+ raster_buffer_provider_->OrderingBarrier();
tile_task_manager_->ScheduleTasks(&graph);
tile_task_manager_->CheckForCompletedTasks();
timer_.NextLap();
} while (!timer_.HasTimeLimitExpired());
TaskGraph empty;
+ raster_buffer_provider_->OrderingBarrier();
tile_task_manager_->ScheduleTasks(&empty);
RunMessageLoopUntilAllTasksHaveCompleted();
tile_task_manager_->CheckForCompletedTasks();
@@ -422,6 +430,7 @@ class RasterBufferProviderPerfTest
// Reset the tasks as for scheduling new state tasks are needed.
ResetRasterTasks(raster_tasks[count % kNumVersions]);
BuildTileTaskGraph(&graph, raster_tasks[count % kNumVersions]);
+ raster_buffer_provider_->OrderingBarrier();
tile_task_manager_->ScheduleTasks(&graph);
tile_task_manager_->CheckForCompletedTasks();
++count;
@@ -429,6 +438,7 @@ class RasterBufferProviderPerfTest
} while (!timer_.HasTimeLimitExpired());
TaskGraph empty;
+ raster_buffer_provider_->OrderingBarrier();
tile_task_manager_->ScheduleTasks(&empty);
RunMessageLoopUntilAllTasksHaveCompleted();
tile_task_manager_->CheckForCompletedTasks();
@@ -453,12 +463,14 @@ class RasterBufferProviderPerfTest
do {
graph.Reset();
BuildTileTaskGraph(&graph, raster_tasks);
+ raster_buffer_provider_->OrderingBarrier();
tile_task_manager_->ScheduleTasks(&graph);
RunMessageLoopUntilAllTasksHaveCompleted();
timer_.NextLap();
} while (!timer_.HasTimeLimitExpired());
TaskGraph empty;
+ raster_buffer_provider_->OrderingBarrier();
tile_task_manager_->ScheduleTasks(&empty);
RunMessageLoopUntilAllTasksHaveCompleted();
@@ -499,6 +511,7 @@ class RasterBufferProviderPerfTest
}
std::unique_ptr<TileTaskManager> tile_task_manager_;
+ std::unique_ptr<RasterBufferProvider> raster_buffer_provider_;
TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
TestSharedBitmapManager shared_bitmap_manager_;
};

Powered by Google App Engine
This is Rietveld 408576698