Check if mGrContext exists when requiring a vk context.

Vulkan context is shared with HardwareBitmapUploader and the
RenderThread, meaning if the upload thread runs prior to the render
thread then some configuration is skipped such as recording the max
texture size and cache setup, which affects benchmark tools. So we need
to check whether the GrContext exists in addition to checking if the
shared VkManager has been properly intialized.

Bug: 175913056
Test: hwuimacro works for benchmarks that upload HW bitmaps prior to
benchmark execution. For example: tvapp_norcEglImage

Change-Id: I149c294b39f1e88226fc5d8d72c30bc4fb3d8404
This commit is contained in:
Alec Mouri
2021-01-06 17:46:22 -08:00
parent 852446ad48
commit 7e7c3d72bc

View File

@@ -199,7 +199,10 @@ void RenderThread::requireGlContext() {
void RenderThread::requireVkContext() {
// the getter creates the context in the event it had been destroyed by destroyRenderingContext
if (vulkanManager().hasVkContext()) {
// Also check if we have a GrContext before returning fast. VulkanManager may be shared with
// the HardwareBitmapUploader which initializes the Vk context without persisting the GrContext
// in the rendering thread.
if (vulkanManager().hasVkContext() && mGrContext) {
return;
}
mVkManager->initialize();