diff options
| author | 2023-10-10 21:51:33 +0000 | |
|---|---|---|
| committer | 2023-10-10 21:51:33 +0000 | |
| commit | ab68d2c732ff9b71efe62c80f2a017d5cdb4a8e8 (patch) | |
| tree | 4cb31db0c640d46032b51226a51606b3242345b0 /libs | |
| parent | 95f6fc6b3e69052ca2a03d0881d66fbeb4f9663a (diff) | |
| parent | cbcbb113765ce722d098b25fca838c6b665c74e8 (diff) | |
nativewindow: Add more benchmarks to evaluate FFI costs am: ba294d7d80 am: cbcbb11376
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2776853
Change-Id: I2d39b30e7ac759301501855924c6741da284ea12
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/nativewindow/tests/benchmark/buffer_benchmarks.cc | 52 | ||||
| -rw-r--r-- | libs/nativewindow/tests/benchmark/buffer_benchmarks.rs | 30 |
2 files changed, 69 insertions, 13 deletions
diff --git a/libs/nativewindow/tests/benchmark/buffer_benchmarks.cc b/libs/nativewindow/tests/benchmark/buffer_benchmarks.cc index 0ead1a2926..9b31993809 100644 --- a/libs/nativewindow/tests/benchmark/buffer_benchmarks.cc +++ b/libs/nativewindow/tests/benchmark/buffer_benchmarks.cc @@ -16,16 +16,17 @@ #include <android/hardware_buffer.h> #include <benchmark/benchmark.h> +constexpr AHardwareBuffer_Desc k720pDesc = {.width = 1280, + .height = 720, + .layers = 1, + .format = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM, + .usage = AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, + .stride = 0}; + static void BM_BufferAllocationDeallocation(benchmark::State& state) { - AHardwareBuffer_Desc buffer_desc = {.width = 1280, - .height = 720, - .layers = 1, - .format = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM, - .usage = AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, - .stride = 0}; AHardwareBuffer* buffer = nullptr; for (auto _ : state) { - int status = AHardwareBuffer_allocate(&buffer_desc, &buffer); + int status = AHardwareBuffer_allocate(&k720pDesc, &buffer); if (UNLIKELY(status != 0)) { state.SkipWithError("Unable to allocate buffer."); } @@ -35,4 +36,39 @@ static void BM_BufferAllocationDeallocation(benchmark::State& state) { } BENCHMARK(BM_BufferAllocationDeallocation); -BENCHMARK_MAIN();
\ No newline at end of file +static void BM_AHardwareBuffer_Id(benchmark::State& state) { + AHardwareBuffer* buffer = nullptr; + int status = AHardwareBuffer_allocate(&k720pDesc, &buffer); + if (UNLIKELY(status != 0)) { + state.SkipWithError("Unable to allocate buffer."); + } + + for (auto _ : state) { + uint64_t id = 0; + int status = AHardwareBuffer_getId(buffer, &id); + if (UNLIKELY(status != 0)) { + state.SkipWithError("Unable to get ID."); + } + } + + AHardwareBuffer_release(buffer); +} +BENCHMARK(BM_AHardwareBuffer_Id); + +static void BM_AHardwareBuffer_Desc(benchmark::State& state) { + AHardwareBuffer* buffer = nullptr; + int status = AHardwareBuffer_allocate(&k720pDesc, &buffer); + if (UNLIKELY(status != 0)) { + state.SkipWithError("Unable to allocate buffer."); + } + + for (auto _ : state) { + AHardwareBuffer_Desc desc = {}; + AHardwareBuffer_describe(buffer, &desc); + } + + AHardwareBuffer_release(buffer); +} +BENCHMARK(BM_AHardwareBuffer_Desc); + +BENCHMARK_MAIN(); diff --git a/libs/nativewindow/tests/benchmark/buffer_benchmarks.rs b/libs/nativewindow/tests/benchmark/buffer_benchmarks.rs index 3ef0f5e8c7..fbd49c0b50 100644 --- a/libs/nativewindow/tests/benchmark/buffer_benchmarks.rs +++ b/libs/nativewindow/tests/benchmark/buffer_benchmarks.rs @@ -20,20 +20,40 @@ use criterion::*; use nativewindow::*; -fn allocate_deallocate() { - let buffer = AHardwareBuffer::new( +#[inline] +fn create_720p_buffer() -> AHardwareBuffer { + AHardwareBuffer::new( 1280, 720, 1, AHardwareBuffer_Format::AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM, AHardwareBuffer_UsageFlags::AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN, ) - .unwrap(); - drop(buffer); + .unwrap() } fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("allocate_deallocate", |b| b.iter(allocate_deallocate)); + c.bench_function("allocate_deallocate", |b| { + b.iter(|| { + let buffer = create_720p_buffer(); + drop(buffer); + }) + }); + + let buffer = create_720p_buffer(); + c.bench_with_input(BenchmarkId::new("id", "buffer"), &buffer, |b, buffer| { + b.iter(|| { + buffer.id(); + }) + }); + + // This benchmark exercises getters that need to fetch data via an + // underlying call to AHardwareBuffer_describe. + c.bench_with_input(BenchmarkId::new("desc", "buffer"), &buffer, |b, buffer| { + b.iter(|| { + buffer.width(); + }) + }); } criterion_group!(benches, criterion_benchmark); |