Loading libs/hwui/pipeline/skia/SkiaVulkanReadback.h 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include "Readback.h" namespace android { namespace uirenderer { namespace skiapipeline { class SkiaVulkanReadback : public Readback { public: SkiaVulkanReadback(renderthread::RenderThread& thread) : Readback(thread) {} virtual CopyResult copySurfaceInto(Surface& surface, const Rect& srcRect, SkBitmap* bitmap) override { //TODO: implement Vulkan readback. return CopyResult::UnknownError; } virtual CopyResult copyGraphicBufferInto(GraphicBuffer* graphicBuffer, SkBitmap* bitmap) override { //TODO: implement Vulkan readback. return CopyResult::UnknownError; } }; } /* namespace skiapipeline */ } /* namespace uirenderer */ } /* namespace android */ libs/hwui/renderthread/RenderThread.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "hwui/Bitmap.h" #include "pipeline/skia/SkiaOpenGLPipeline.h" #include "pipeline/skia/SkiaOpenGLReadback.h" #include "pipeline/skia/SkiaVulkanReadback.h" #include "pipeline/skia/SkiaVulkanPipeline.h" #include "renderstate/RenderState.h" #include "renderthread/OpenGLPipeline.h" Loading Loading @@ -158,12 +159,11 @@ Readback& RenderThread::readback() { 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; case RenderPipelineType::SkiaVulkan: mReadback = new skiapipeline::SkiaVulkanReadback(*this); break; default: LOG_ALWAYS_FATAL("canvas context type %d not supported", (int32_t)renderType); break; Loading Loading
libs/hwui/pipeline/skia/SkiaVulkanReadback.h 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include "Readback.h" namespace android { namespace uirenderer { namespace skiapipeline { class SkiaVulkanReadback : public Readback { public: SkiaVulkanReadback(renderthread::RenderThread& thread) : Readback(thread) {} virtual CopyResult copySurfaceInto(Surface& surface, const Rect& srcRect, SkBitmap* bitmap) override { //TODO: implement Vulkan readback. return CopyResult::UnknownError; } virtual CopyResult copyGraphicBufferInto(GraphicBuffer* graphicBuffer, SkBitmap* bitmap) override { //TODO: implement Vulkan readback. return CopyResult::UnknownError; } }; } /* namespace skiapipeline */ } /* namespace uirenderer */ } /* namespace android */
libs/hwui/renderthread/RenderThread.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "hwui/Bitmap.h" #include "pipeline/skia/SkiaOpenGLPipeline.h" #include "pipeline/skia/SkiaOpenGLReadback.h" #include "pipeline/skia/SkiaVulkanReadback.h" #include "pipeline/skia/SkiaVulkanPipeline.h" #include "renderstate/RenderState.h" #include "renderthread/OpenGLPipeline.h" Loading Loading @@ -158,12 +159,11 @@ Readback& RenderThread::readback() { 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; case RenderPipelineType::SkiaVulkan: mReadback = new skiapipeline::SkiaVulkanReadback(*this); break; default: LOG_ALWAYS_FATAL("canvas context type %d not supported", (int32_t)renderType); break; Loading