Loading libs/hwui/DeferredLayerUpdater.cpp +11 −17 Original line number Diff line number Diff line Loading @@ -131,7 +131,7 @@ void DeferredLayerUpdater::doUpdateVkTexImage() { mLayer->getApi(), Layer::Api::OpenGL, Layer::Api::Vulkan); static const mat4 identityMatrix; updateLayer(false, identityMatrix.data); updateLayer(false, GL_NONE, identityMatrix.data); VkLayer* vkLayer = static_cast<VkLayer*>(mLayer); vkLayer->updateTexture(); Loading @@ -139,12 +139,12 @@ void DeferredLayerUpdater::doUpdateVkTexImage() { void DeferredLayerUpdater::updateLayer(bool forceFilter, GLenum renderTarget, const float* textureTransform) { LOG_ALWAYS_FATAL_IF(mLayer->getApi() != Layer::Api::OpenGL, "updateLayer non GL backend %x, GL %x, VK %x", mLayer->getApi(), Layer::Api::OpenGL, Layer::Api::Vulkan); updateLayer(forceFilter, textureTransform); mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform().load(textureTransform); if (mLayer->getApi() == Layer::Api::OpenGL) { GlLayer* glLayer = static_cast<GlLayer*>(mLayer); if (renderTarget != glLayer->getRenderTarget()) { glLayer->setRenderTarget(renderTarget); Loading @@ -153,12 +153,6 @@ void DeferredLayerUpdater::updateLayer(bool forceFilter, GLenum renderTarget, glLayer->setWrap(GL_CLAMP_TO_EDGE, false, true); } } void DeferredLayerUpdater::updateLayer(bool forceFilter, const float* textureTransform) { mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform().load(textureTransform); } void DeferredLayerUpdater::detachSurfaceTexture() { Loading libs/hwui/DeferredLayerUpdater.h +0 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ private: void doUpdateTexImage(); void doUpdateVkTexImage(); void updateLayer(bool forceFilter, const float* textureTransform); }; } /* namespace uirenderer */ Loading libs/hwui/Properties.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -222,6 +222,12 @@ RenderPipelineType Properties::getRenderPipelineType() { return sRenderPipelineType; } #ifdef HWUI_GLES_WRAP_ENABLED void Properties::overrideRenderPipelineType(RenderPipelineType type) { sRenderPipelineType = type; } #endif bool Properties::isSkiaEnabled() { auto renderType = getRenderPipelineType(); return RenderPipelineType::SkiaGL == renderType Loading libs/hwui/Properties.h +5 −1 Original line number Diff line number Diff line Loading @@ -318,11 +318,15 @@ public: // any overhead they add static bool filterOutTestOverhead; // Used for testing only to change the render pipeline. #ifdef HWUI_GLES_WRAP_ENABLED static void overrideRenderPipelineType(RenderPipelineType); #endif private: static ProfileType sProfileType; static bool sDisableProfileBars; static RenderPipelineType sRenderPipelineType; }; // class Caches }; // namespace uirenderer Loading libs/hwui/tests/common/TestUtils.cpp +30 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ #include <renderthread/EglManager.h> #include <renderthread/OpenGLPipeline.h> #include <pipeline/skia/SkiaOpenGLPipeline.h> #include <pipeline/skia/SkiaVulkanPipeline.h> #include <renderthread/VulkanManager.h> #include <utils/Unicode.h> #include <SkClipStack.h> Loading @@ -46,11 +49,25 @@ SkColor TestUtils::interpolateColor(float fraction, SkColor start, SkColor end) | (int)((startB + (int)(fraction * (endB - startB)))); } sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater( renderthread::RenderThread& renderThread) { android::uirenderer::renderthread::IRenderPipeline* pipeline; if (Properties::getRenderPipelineType() == RenderPipelineType::OpenGL) { pipeline = new renderthread::OpenGLPipeline(renderThread); } else if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaGL) { pipeline = new skiapipeline::SkiaOpenGLPipeline(renderThread); } else { pipeline = new skiapipeline::SkiaVulkanPipeline(renderThread); } sp<DeferredLayerUpdater> layerUpdater = pipeline->createTextureLayer(); delete pipeline; return layerUpdater; } sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater( renderthread::RenderThread& renderThread, uint32_t width, uint32_t height, const SkMatrix& transform) { renderthread::OpenGLPipeline pipeline(renderThread); sp<DeferredLayerUpdater> layerUpdater = pipeline.createTextureLayer(); sp<DeferredLayerUpdater> layerUpdater = createTextureLayerUpdater(renderThread); layerUpdater->backingLayer()->getTransform().load(transform); layerUpdater->setSize(width, height); layerUpdater->setTransform(&transform); Loading Loading @@ -111,13 +128,21 @@ void TestUtils::drawUtf8ToCanvas(Canvas* canvas, const char* text, void TestUtils::TestTask::run() { // RenderState only valid once RenderThread is running, so queried here renderthread::RenderThread& renderThread = renderthread::RenderThread::getInstance(); if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) { renderThread.vulkanManager().initialize(); } else { renderThread.eglManager().initialize(); } rtCallback(renderThread); if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) { renderThread.vulkanManager().destroy(); } else { renderThread.renderState().flush(Caches::FlushMode::Full); renderThread.eglManager().destroy(); } } std::unique_ptr<uint16_t[]> TestUtils::asciiToUtf16(const char* str) { const int length = strlen(str); Loading Loading
libs/hwui/DeferredLayerUpdater.cpp +11 −17 Original line number Diff line number Diff line Loading @@ -131,7 +131,7 @@ void DeferredLayerUpdater::doUpdateVkTexImage() { mLayer->getApi(), Layer::Api::OpenGL, Layer::Api::Vulkan); static const mat4 identityMatrix; updateLayer(false, identityMatrix.data); updateLayer(false, GL_NONE, identityMatrix.data); VkLayer* vkLayer = static_cast<VkLayer*>(mLayer); vkLayer->updateTexture(); Loading @@ -139,12 +139,12 @@ void DeferredLayerUpdater::doUpdateVkTexImage() { void DeferredLayerUpdater::updateLayer(bool forceFilter, GLenum renderTarget, const float* textureTransform) { LOG_ALWAYS_FATAL_IF(mLayer->getApi() != Layer::Api::OpenGL, "updateLayer non GL backend %x, GL %x, VK %x", mLayer->getApi(), Layer::Api::OpenGL, Layer::Api::Vulkan); updateLayer(forceFilter, textureTransform); mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform().load(textureTransform); if (mLayer->getApi() == Layer::Api::OpenGL) { GlLayer* glLayer = static_cast<GlLayer*>(mLayer); if (renderTarget != glLayer->getRenderTarget()) { glLayer->setRenderTarget(renderTarget); Loading @@ -153,12 +153,6 @@ void DeferredLayerUpdater::updateLayer(bool forceFilter, GLenum renderTarget, glLayer->setWrap(GL_CLAMP_TO_EDGE, false, true); } } void DeferredLayerUpdater::updateLayer(bool forceFilter, const float* textureTransform) { mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform().load(textureTransform); } void DeferredLayerUpdater::detachSurfaceTexture() { Loading
libs/hwui/DeferredLayerUpdater.h +0 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ private: void doUpdateTexImage(); void doUpdateVkTexImage(); void updateLayer(bool forceFilter, const float* textureTransform); }; } /* namespace uirenderer */ Loading
libs/hwui/Properties.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -222,6 +222,12 @@ RenderPipelineType Properties::getRenderPipelineType() { return sRenderPipelineType; } #ifdef HWUI_GLES_WRAP_ENABLED void Properties::overrideRenderPipelineType(RenderPipelineType type) { sRenderPipelineType = type; } #endif bool Properties::isSkiaEnabled() { auto renderType = getRenderPipelineType(); return RenderPipelineType::SkiaGL == renderType Loading
libs/hwui/Properties.h +5 −1 Original line number Diff line number Diff line Loading @@ -318,11 +318,15 @@ public: // any overhead they add static bool filterOutTestOverhead; // Used for testing only to change the render pipeline. #ifdef HWUI_GLES_WRAP_ENABLED static void overrideRenderPipelineType(RenderPipelineType); #endif private: static ProfileType sProfileType; static bool sDisableProfileBars; static RenderPipelineType sRenderPipelineType; }; // class Caches }; // namespace uirenderer Loading
libs/hwui/tests/common/TestUtils.cpp +30 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,9 @@ #include <renderthread/EglManager.h> #include <renderthread/OpenGLPipeline.h> #include <pipeline/skia/SkiaOpenGLPipeline.h> #include <pipeline/skia/SkiaVulkanPipeline.h> #include <renderthread/VulkanManager.h> #include <utils/Unicode.h> #include <SkClipStack.h> Loading @@ -46,11 +49,25 @@ SkColor TestUtils::interpolateColor(float fraction, SkColor start, SkColor end) | (int)((startB + (int)(fraction * (endB - startB)))); } sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater( renderthread::RenderThread& renderThread) { android::uirenderer::renderthread::IRenderPipeline* pipeline; if (Properties::getRenderPipelineType() == RenderPipelineType::OpenGL) { pipeline = new renderthread::OpenGLPipeline(renderThread); } else if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaGL) { pipeline = new skiapipeline::SkiaOpenGLPipeline(renderThread); } else { pipeline = new skiapipeline::SkiaVulkanPipeline(renderThread); } sp<DeferredLayerUpdater> layerUpdater = pipeline->createTextureLayer(); delete pipeline; return layerUpdater; } sp<DeferredLayerUpdater> TestUtils::createTextureLayerUpdater( renderthread::RenderThread& renderThread, uint32_t width, uint32_t height, const SkMatrix& transform) { renderthread::OpenGLPipeline pipeline(renderThread); sp<DeferredLayerUpdater> layerUpdater = pipeline.createTextureLayer(); sp<DeferredLayerUpdater> layerUpdater = createTextureLayerUpdater(renderThread); layerUpdater->backingLayer()->getTransform().load(transform); layerUpdater->setSize(width, height); layerUpdater->setTransform(&transform); Loading Loading @@ -111,13 +128,21 @@ void TestUtils::drawUtf8ToCanvas(Canvas* canvas, const char* text, void TestUtils::TestTask::run() { // RenderState only valid once RenderThread is running, so queried here renderthread::RenderThread& renderThread = renderthread::RenderThread::getInstance(); if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) { renderThread.vulkanManager().initialize(); } else { renderThread.eglManager().initialize(); } rtCallback(renderThread); if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) { renderThread.vulkanManager().destroy(); } else { renderThread.renderState().flush(Caches::FlushMode::Full); renderThread.eglManager().destroy(); } } std::unique_ptr<uint16_t[]> TestUtils::asciiToUtf16(const char* str) { const int length = strlen(str); Loading