summaryrefslogtreecommitdiff
path: root/libs/renderengine/tests/RenderEngineThreadedTest.cpp
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2021-06-16 15:11:27 -0400
committerDerek Sollenberger <djsollen@google.com>2021-07-01 16:12:51 -0400
commit1ec2fb56c51853898f64346adca218b7dd38a0fc (patch)
tree20b0ae9ba9d2fe2a16931fbb73124cdb39367367 /libs/renderengine/tests/RenderEngineThreadedTest.cpp
parent61cfde719b9dac7d718a0af72c3a8748d0f7ffe7 (diff)
Enable RenderEngine context switching to be async.
Also in the case of a threaded RenderEngine we can avoid the thread hop entirely by quickly returning if the GPU is already in the correct state. Bug: 192099706 Test: atest librenderengine_test Change-Id: I316096ffd89960a1d3742edacdeb442626e9ee3e
Diffstat (limited to 'libs/renderengine/tests/RenderEngineThreadedTest.cpp')
-rw-r--r--libs/renderengine/tests/RenderEngineThreadedTest.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/libs/renderengine/tests/RenderEngineThreadedTest.cpp b/libs/renderengine/tests/RenderEngineThreadedTest.cpp
index c65e731230..830f4630e5 100644
--- a/libs/renderengine/tests/RenderEngineThreadedTest.cpp
+++ b/libs/renderengine/tests/RenderEngineThreadedTest.cpp
@@ -118,16 +118,26 @@ TEST_F(RenderEngineThreadedTest, supportsProtectedContent_returnsTrue) {
ASSERT_EQ(true, result);
}
-TEST_F(RenderEngineThreadedTest, useProtectedContext_returnsFalse) {
- EXPECT_CALL(*mRenderEngine, useProtectedContext(false)).WillOnce(Return(false));
- status_t result = mThreadedRE->useProtectedContext(false);
- ASSERT_EQ(false, result);
+TEST_F(RenderEngineThreadedTest, useProtectedContext) {
+ EXPECT_CALL(*mRenderEngine, useProtectedContext(true));
+ auto& ipExpect = EXPECT_CALL(*mRenderEngine, isProtected()).WillOnce(Return(false));
+ EXPECT_CALL(*mRenderEngine, supportsProtectedContent()).WillOnce(Return(true));
+ EXPECT_CALL(*mRenderEngine, isProtected()).After(ipExpect).WillOnce(Return(true));
+
+ mThreadedRE->useProtectedContext(true);
+ ASSERT_EQ(true, mThreadedRE->isProtected());
+
+ // call ANY synchronous function to ensure that useProtectedContext has completed.
+ mThreadedRE->getContextPriority();
+ ASSERT_EQ(true, mThreadedRE->isProtected());
}
-TEST_F(RenderEngineThreadedTest, useProtectedContext_returnsTrue) {
- EXPECT_CALL(*mRenderEngine, useProtectedContext(false)).WillOnce(Return(true));
- status_t result = mThreadedRE->useProtectedContext(false);
- ASSERT_EQ(true, result);
+TEST_F(RenderEngineThreadedTest, useProtectedContext_quickReject) {
+ EXPECT_CALL(*mRenderEngine, useProtectedContext(false)).Times(0);
+ EXPECT_CALL(*mRenderEngine, isProtected()).WillOnce(Return(false));
+ mThreadedRE->useProtectedContext(false);
+ // call ANY synchronous function to ensure that useProtectedContext has completed.
+ mThreadedRE->getContextPriority();
}
TEST_F(RenderEngineThreadedTest, PostRenderCleanup_skipped) {