diff options
author | Robert Phillips <robertphillips@google.com> | 2023-08-23 15:18:27 -0400 |
---|---|---|
committer | Leon Scroggins <scroggo@google.com> | 2023-09-05 20:21:34 +0000 |
commit | a0c7cca5769008d02e0ce227feb3efd7471813a4 (patch) | |
tree | b5bfc159444241b5bf88717cb760b5c979120244 | |
parent | d80fdc48244e1769a84c46448477754a4cd3b883 (diff) | |
download | native-a0c7cca5769008d02e0ce227feb3efd7471813a4.tar.gz |
Don't look through the buffer cache in protected contexts
Test: manual - protected content in Netflix apk, even without blurring
Without this change getOrCreateBackendTexture can return an
un-Protected backend texture when a Protected one is required.
This causes the Protected content draw to be dropped.
Note: This CL originally landed in main as part of a broader fix for
blurring protected content, but it has been discovered to fix other
issues with protected content that were otherwise still visible in
this branch.
Bug: 242266174
Bug: 294357792
Change-Id: I9d7bab890ae8d88656e77dede962b40e926580c8
(cherry picked from commit 59f71734258e3959d2d3d8937d689b1bb88941db)
Merged-In: I9d7bab890ae8d88656e77dede962b40e926580c8
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/libs/renderengine/skia/SkiaRenderEngine.cpp b/libs/renderengine/skia/SkiaRenderEngine.cpp index 9e9df5216f..edf734271a 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaRenderEngine.cpp @@ -397,12 +397,10 @@ void SkiaRenderEngine::mapExternalTextureBuffer(const sp<GraphicBuffer>& buffer, } // We don't attempt to map a buffer if the buffer contains protected content. In GL this is // important because GPU resources for protected buffers are much more limited. (In Vk we - // simply match the existing behavior for protected buffers.) In Vk, we never cache any - // buffers while in a protected context, since Vk cannot share across contexts, and protected - // is less common. + // simply match the existing behavior for protected buffers.) We also never cache any + // buffers while in a protected context. const bool isProtectedBuffer = buffer->getUsage() & GRALLOC_USAGE_PROTECTED; - if (isProtectedBuffer || - (mRenderEngineType == RenderEngineType::SKIA_VK_THREADED && isProtected())) { + if (isProtectedBuffer || isProtected()) { return; } ATRACE_CALL(); @@ -467,9 +465,8 @@ void SkiaRenderEngine::unmapExternalTextureBuffer(sp<GraphicBuffer>&& buffer) { std::shared_ptr<AutoBackendTexture::LocalRef> SkiaRenderEngine::getOrCreateBackendTexture( const sp<GraphicBuffer>& buffer, bool isOutputBuffer) { - // Do not lookup the buffer in the cache for protected contexts with the SkiaVk back-end - if (mRenderEngineType == RenderEngineType::SKIA_GL_THREADED || - (mRenderEngineType == RenderEngineType::SKIA_VK_THREADED && !isProtected())) { + // Do not lookup the buffer in the cache for protected contexts + if (!isProtected()) { if (const auto& it = mTextureCache.find(buffer->getId()); it != mTextureCache.end()) { return it->second; } |