Support Surface and Layer Readback in the SkiaPipelines.
Test: CTS TextureViewTests and UIRendering Change-Id: I2969c8f5a975bfd9aebcbb585c64d1fcbb2487c2
This commit is contained in:
@@ -17,8 +17,10 @@
|
||||
#include "RenderThread.h"
|
||||
|
||||
#include "../renderstate/RenderState.h"
|
||||
#include "../pipeline/skia/SkiaOpenGLReadback.h"
|
||||
#include "CanvasContext.h"
|
||||
#include "EglManager.h"
|
||||
#include "OpenGLReadback.h"
|
||||
#include "RenderProxy.h"
|
||||
#include "VulkanManager.h"
|
||||
|
||||
@@ -196,6 +198,30 @@ void RenderThread::initThreadLocals() {
|
||||
mVkManager = new VulkanManager(*this);
|
||||
}
|
||||
|
||||
Readback& RenderThread::readback() {
|
||||
|
||||
if (!mReadback) {
|
||||
auto renderType = Properties::getRenderPipelineType();
|
||||
switch (renderType) {
|
||||
case RenderPipelineType::OpenGL:
|
||||
mReadback = new OpenGLReadbackImpl(*this);
|
||||
break;
|
||||
case RenderPipelineType::SkiaGL:
|
||||
case RenderPipelineType::SkiaVulkan:
|
||||
// It works to use the OpenGL pipeline for Vulkan but this is not
|
||||
// ideal as it causes us to create an OpenGL context in addition
|
||||
// to the Vulkan one.
|
||||
mReadback = new skiapipeline::SkiaOpenGLReadback(*this);
|
||||
break;
|
||||
default:
|
||||
LOG_ALWAYS_FATAL("canvas context type %d not supported", (int32_t) renderType);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return *mReadback;
|
||||
}
|
||||
|
||||
int RenderThread::displayEventReceiverCallback(int fd, int events, void* data) {
|
||||
if (events & (Looper::EVENT_ERROR | Looper::EVENT_HANGUP)) {
|
||||
ALOGE("Display event receiver pipe was closed or an error occurred. "
|
||||
|
||||
Reference in New Issue
Block a user