Loading libs/hwui/pipeline/skia/LayerDrawable.cpp +5 −7 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include "LayerDrawable.h" #include "VkLayer.h" #include "GrBackendSurface.h" #include "SkColorFilter.h" #include "SkSurface.h" #include "gl/GrGLTypes.h" Loading Loading @@ -46,13 +47,10 @@ bool LayerDrawable::DrawLayer(GrContext* context, SkCanvas* canvas, Layer* layer GrGLTextureInfo externalTexture; externalTexture.fTarget = glLayer->getRenderTarget(); externalTexture.fID = glLayer->getTextureId(); GrBackendTextureDesc textureDescription; textureDescription.fWidth = glLayer->getWidth(); textureDescription.fHeight = glLayer->getHeight(); textureDescription.fConfig = kRGBA_8888_GrPixelConfig; textureDescription.fOrigin = kTopLeft_GrSurfaceOrigin; textureDescription.fTextureHandle = reinterpret_cast<GrBackendObject>(&externalTexture); layerImage = SkImage::MakeFromTexture(context, textureDescription); GrBackendTexture backendTexture(glLayer->getWidth(), glLayer->getHeight(), kRGBA_8888_GrPixelConfig, externalTexture); layerImage = SkImage::MakeFromTexture(context, backendTexture, kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, nullptr); } else { SkASSERT(layer->getApi() == Layer::Api::Vulkan); VkLayer* vkLayer = static_cast<VkLayer*>(layer); Loading libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #include "SkiaProfileRenderer.h" #include "utils/TraceUtils.h" #include <GrBackendSurface.h> #include <cutils/properties.h> #include <strings.h> Loading Loading @@ -69,20 +71,17 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty, mEglManager.damageFrame(frame, dirty); // setup surface for fbo0 GrBackendRenderTargetDesc renderTargetDesc; renderTargetDesc.fWidth = frame.width(); renderTargetDesc.fHeight = frame.height(); renderTargetDesc.fConfig = kRGBA_8888_GrPixelConfig; renderTargetDesc.fOrigin = kBottomLeft_GrSurfaceOrigin; renderTargetDesc.fSampleCnt = 0; renderTargetDesc.fStencilBits = STENCIL_BUFFER_SIZE; renderTargetDesc.fRenderTargetHandle = 0; GrGLFramebufferInfo fboInfo; fboInfo.fFBOID = 0; GrBackendRenderTarget backendRT(frame.width(), frame.height(), 0, STENCIL_BUFFER_SIZE, kRGBA_8888_GrPixelConfig, fboInfo); SkSurfaceProps props(0, kUnknown_SkPixelGeometry); SkASSERT(mRenderThread.getGrContext() != nullptr); sk_sp<SkSurface> surface(SkSurface::MakeFromBackendRenderTarget( mRenderThread.getGrContext(), renderTargetDesc, &props)); mRenderThread.getGrContext(), backendRT, kBottomLeft_GrSurfaceOrigin, nullptr, &props)); SkiaPipeline::updateLighting(lightGeometry, lightInfo); renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, wideColorGamut, Loading libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp +4 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "Properties.h" #include <SkCanvas.h> #include <SkSurface.h> #include <GrBackendSurface.h> #include <gl/GrGLInterface.h> #include <gl/GrGLTypes.h> #include <GLES2/gl2.h> Loading Loading @@ -53,15 +54,11 @@ CopyResult SkiaOpenGLReadback::copyImageInto(EGLImageKHR eglImage, const Matrix4 externalTexture.fTarget = GL_TEXTURE_EXTERNAL_OES; externalTexture.fID = sourceTexId; GrBackendTextureDesc textureDescription; textureDescription.fWidth = imgWidth; textureDescription.fHeight = imgHeight; textureDescription.fConfig = kRGBA_8888_GrPixelConfig; textureDescription.fOrigin = kTopLeft_GrSurfaceOrigin; textureDescription.fTextureHandle = reinterpret_cast<GrBackendObject>(&externalTexture); GrBackendTexture backendTexture(imgWidth, imgHeight, kRGBA_8888_GrPixelConfig, externalTexture); CopyResult copyResult = CopyResult::UnknownError; sk_sp<SkImage> image(SkImage::MakeFromAdoptedTexture(grContext.get(), textureDescription)); sk_sp<SkImage> image(SkImage::MakeFromAdoptedTexture(grContext.get(), backendTexture, kTopLeft_GrSurfaceOrigin)); if (image) { // convert to Skia data structures const SkRect bufferRect = SkRect::MakeIWH(imgWidth, imgHeight); Loading libs/hwui/renderthread/VulkanManager.cpp +3 −12 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include "renderstate/RenderState.h" #include "utils/FatVector.h" #include <GrBackendSurface.h> #include <GrContext.h> #include <GrTypes.h> #include <vk/GrVkTypes.h> Loading Loading @@ -297,13 +298,9 @@ void VulkanManager::createBuffers(VulkanSurface* surface, VkFormat format, VkExt SkSurfaceProps props(0, kUnknown_SkPixelGeometry); bool wantSRGB = VK_FORMAT_R8G8B8A8_SRGB == format; GrPixelConfig config = wantSRGB ? kSRGBA_8888_GrPixelConfig : kRGBA_8888_GrPixelConfig; // set up initial image layouts and create surfaces surface->mImageInfos = new VulkanSurface::ImageInfo[surface->mImageCount]; for (uint32_t i = 0; i < surface->mImageCount; ++i) { GrBackendRenderTargetDesc desc; GrVkImageInfo info; info.fImage = surface->mImages[i]; info.fAlloc = { VK_NULL_HANDLE, 0, 0, 0 }; Loading @@ -312,17 +309,11 @@ void VulkanManager::createBuffers(VulkanSurface* surface, VkFormat format, VkExt info.fFormat = format; info.fLevelCount = 1; desc.fWidth = extent.width; desc.fHeight = extent.height; desc.fConfig = config; desc.fOrigin = kTopLeft_GrSurfaceOrigin; desc.fSampleCnt = 0; desc.fStencilBits = 0; desc.fRenderTargetHandle = (GrBackendObject) &info; GrBackendRenderTarget backendRT(extent.width, extent.height, 0, 0, info); VulkanSurface::ImageInfo& imageInfo = surface->mImageInfos[i]; imageInfo.mSurface = SkSurface::MakeFromBackendRenderTarget(mRenderThread.getGrContext(), desc, &props); backendRT, kTopLeft_GrSurfaceOrigin, nullptr, &props); } SkASSERT(mCommandPool != VK_NULL_HANDLE); Loading Loading
libs/hwui/pipeline/skia/LayerDrawable.cpp +5 −7 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include "LayerDrawable.h" #include "VkLayer.h" #include "GrBackendSurface.h" #include "SkColorFilter.h" #include "SkSurface.h" #include "gl/GrGLTypes.h" Loading Loading @@ -46,13 +47,10 @@ bool LayerDrawable::DrawLayer(GrContext* context, SkCanvas* canvas, Layer* layer GrGLTextureInfo externalTexture; externalTexture.fTarget = glLayer->getRenderTarget(); externalTexture.fID = glLayer->getTextureId(); GrBackendTextureDesc textureDescription; textureDescription.fWidth = glLayer->getWidth(); textureDescription.fHeight = glLayer->getHeight(); textureDescription.fConfig = kRGBA_8888_GrPixelConfig; textureDescription.fOrigin = kTopLeft_GrSurfaceOrigin; textureDescription.fTextureHandle = reinterpret_cast<GrBackendObject>(&externalTexture); layerImage = SkImage::MakeFromTexture(context, textureDescription); GrBackendTexture backendTexture(glLayer->getWidth(), glLayer->getHeight(), kRGBA_8888_GrPixelConfig, externalTexture); layerImage = SkImage::MakeFromTexture(context, backendTexture, kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, nullptr); } else { SkASSERT(layer->getApi() == Layer::Api::Vulkan); VkLayer* vkLayer = static_cast<VkLayer*>(layer); Loading
libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #include "SkiaProfileRenderer.h" #include "utils/TraceUtils.h" #include <GrBackendSurface.h> #include <cutils/properties.h> #include <strings.h> Loading Loading @@ -69,20 +71,17 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty, mEglManager.damageFrame(frame, dirty); // setup surface for fbo0 GrBackendRenderTargetDesc renderTargetDesc; renderTargetDesc.fWidth = frame.width(); renderTargetDesc.fHeight = frame.height(); renderTargetDesc.fConfig = kRGBA_8888_GrPixelConfig; renderTargetDesc.fOrigin = kBottomLeft_GrSurfaceOrigin; renderTargetDesc.fSampleCnt = 0; renderTargetDesc.fStencilBits = STENCIL_BUFFER_SIZE; renderTargetDesc.fRenderTargetHandle = 0; GrGLFramebufferInfo fboInfo; fboInfo.fFBOID = 0; GrBackendRenderTarget backendRT(frame.width(), frame.height(), 0, STENCIL_BUFFER_SIZE, kRGBA_8888_GrPixelConfig, fboInfo); SkSurfaceProps props(0, kUnknown_SkPixelGeometry); SkASSERT(mRenderThread.getGrContext() != nullptr); sk_sp<SkSurface> surface(SkSurface::MakeFromBackendRenderTarget( mRenderThread.getGrContext(), renderTargetDesc, &props)); mRenderThread.getGrContext(), backendRT, kBottomLeft_GrSurfaceOrigin, nullptr, &props)); SkiaPipeline::updateLighting(lightGeometry, lightInfo); renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, wideColorGamut, Loading
libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp +4 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "Properties.h" #include <SkCanvas.h> #include <SkSurface.h> #include <GrBackendSurface.h> #include <gl/GrGLInterface.h> #include <gl/GrGLTypes.h> #include <GLES2/gl2.h> Loading Loading @@ -53,15 +54,11 @@ CopyResult SkiaOpenGLReadback::copyImageInto(EGLImageKHR eglImage, const Matrix4 externalTexture.fTarget = GL_TEXTURE_EXTERNAL_OES; externalTexture.fID = sourceTexId; GrBackendTextureDesc textureDescription; textureDescription.fWidth = imgWidth; textureDescription.fHeight = imgHeight; textureDescription.fConfig = kRGBA_8888_GrPixelConfig; textureDescription.fOrigin = kTopLeft_GrSurfaceOrigin; textureDescription.fTextureHandle = reinterpret_cast<GrBackendObject>(&externalTexture); GrBackendTexture backendTexture(imgWidth, imgHeight, kRGBA_8888_GrPixelConfig, externalTexture); CopyResult copyResult = CopyResult::UnknownError; sk_sp<SkImage> image(SkImage::MakeFromAdoptedTexture(grContext.get(), textureDescription)); sk_sp<SkImage> image(SkImage::MakeFromAdoptedTexture(grContext.get(), backendTexture, kTopLeft_GrSurfaceOrigin)); if (image) { // convert to Skia data structures const SkRect bufferRect = SkRect::MakeIWH(imgWidth, imgHeight); Loading
libs/hwui/renderthread/VulkanManager.cpp +3 −12 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include "renderstate/RenderState.h" #include "utils/FatVector.h" #include <GrBackendSurface.h> #include <GrContext.h> #include <GrTypes.h> #include <vk/GrVkTypes.h> Loading Loading @@ -297,13 +298,9 @@ void VulkanManager::createBuffers(VulkanSurface* surface, VkFormat format, VkExt SkSurfaceProps props(0, kUnknown_SkPixelGeometry); bool wantSRGB = VK_FORMAT_R8G8B8A8_SRGB == format; GrPixelConfig config = wantSRGB ? kSRGBA_8888_GrPixelConfig : kRGBA_8888_GrPixelConfig; // set up initial image layouts and create surfaces surface->mImageInfos = new VulkanSurface::ImageInfo[surface->mImageCount]; for (uint32_t i = 0; i < surface->mImageCount; ++i) { GrBackendRenderTargetDesc desc; GrVkImageInfo info; info.fImage = surface->mImages[i]; info.fAlloc = { VK_NULL_HANDLE, 0, 0, 0 }; Loading @@ -312,17 +309,11 @@ void VulkanManager::createBuffers(VulkanSurface* surface, VkFormat format, VkExt info.fFormat = format; info.fLevelCount = 1; desc.fWidth = extent.width; desc.fHeight = extent.height; desc.fConfig = config; desc.fOrigin = kTopLeft_GrSurfaceOrigin; desc.fSampleCnt = 0; desc.fStencilBits = 0; desc.fRenderTargetHandle = (GrBackendObject) &info; GrBackendRenderTarget backendRT(extent.width, extent.height, 0, 0, info); VulkanSurface::ImageInfo& imageInfo = surface->mImageInfos[i]; imageInfo.mSurface = SkSurface::MakeFromBackendRenderTarget(mRenderThread.getGrContext(), desc, &props); backendRT, kTopLeft_GrSurfaceOrigin, nullptr, &props); } SkASSERT(mCommandPool != VK_NULL_HANDLE); Loading