diff options
| author | 2021-03-09 16:16:38 -0800 | |
|---|---|---|
| committer | 2021-03-09 16:16:38 -0800 | |
| commit | 3afbfad181fde57223cc4a15ed3402d4f11cc58d (patch) | |
| tree | 7e8e498f56f6af06b6939b5ccab680f8669fc04b /tests/SurfaceViewBufferTests/cpp | |
| parent | cebc56614505e9cd40ef240171b8f2553dc23be8 (diff) | |
Add async mode tests for BLAST
Add some tests to validate dequeue blocking behavior when the IGBP
is configured in async mode. We want to validate that in this mode,
with or without blast, the client will not be blocked when dequeuing
a buffer. Instead, when the client tries to queue a buffer, the
bufferqueue will drop the queued buffer if it exists.
In async mode, the bufferqueue in the will have an additional buffer
so for blast: one buffer will be acquired and presented, one buffer
will be acquired in the queue, and the client will have two buffers
left for non blocking dequeue. When queuing a buffer, the BQ in the
adapter will drop the last queued buffer if available.
Test: atest BufferPresentationTests
Bug: 176916466
Change-Id: I6ff45c24d6529cc7cd4169f962eb2ca9cbc09943
Diffstat (limited to 'tests/SurfaceViewBufferTests/cpp')
| -rw-r--r-- | tests/SurfaceViewBufferTests/cpp/SurfaceProxy.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/SurfaceViewBufferTests/cpp/SurfaceProxy.cpp b/tests/SurfaceViewBufferTests/cpp/SurfaceProxy.cpp index ce226fdce320..926ff4d5793c 100644 --- a/tests/SurfaceViewBufferTests/cpp/SurfaceProxy.cpp +++ b/tests/SurfaceViewBufferTests/cpp/SurfaceProxy.cpp @@ -130,6 +130,9 @@ JNIEXPORT jint JNICALL Java_com_android_test_SurfaceProxy_SurfaceDequeueBuffer(J return result; } sBuffers[slot] = anb; + if (timeoutMs == 0) { + return android::OK; + } android::sp<android::Fence> fence(new android::Fence(fenceFd)); int waitResult = fence->wait(timeoutMs); if (waitResult != android::OK) { @@ -197,6 +200,28 @@ JNIEXPORT jint JNICALL Java_com_android_test_SurfaceProxy_SurfaceQueueBuffer(JNI return result; } +JNIEXPORT jint JNICALL Java_com_android_test_SurfaceProxy_SurfaceSetAsyncMode(JNIEnv* /* env */, + jclass /* clazz */, + jboolean async) { + assert(sAnw); + android::sp<android::Surface> surface = static_cast<android::Surface*>(sAnw); + return surface->setAsyncMode(async); +} + +JNIEXPORT jint JNICALL Java_com_android_test_SurfaceProxy_SurfaceSetDequeueTimeout( + JNIEnv* /* env */, jclass /* clazz */, jlong timeoutMs) { + assert(sAnw); + android::sp<android::Surface> surface = static_cast<android::Surface*>(sAnw); + return surface->setDequeueTimeout(timeoutMs); +} + +JNIEXPORT jint JNICALL Java_com_android_test_SurfaceProxy_SurfaceSetMaxDequeuedBufferCount( + JNIEnv* /* env */, jclass /* clazz */, jint maxDequeuedBuffers) { + assert(sAnw); + android::sp<android::Surface> surface = static_cast<android::Surface*>(sAnw); + return surface->setMaxDequeuedBufferCount(maxDequeuedBuffers); +} + JNIEXPORT jint JNICALL Java_com_android_test_SurfaceProxy_NativeWindowSetBufferCount( JNIEnv* /* env */, jclass /* clazz */, jint count) { assert(sAnw); |