diff options
author | Stan Iliev <stani@google.com> | 2018-12-04 10:07:21 -0500 |
---|---|---|
committer | Stan Iliev <stani@google.com> | 2018-12-04 11:23:21 -0500 |
commit | 987a80c0cac883f571d3015d0a49cfdea0808d09 (patch) | |
tree | c7341e9deb452e1b5aaf4276f0dc164832c60d7f /libs/hwui/renderthread/VulkanManager.cpp | |
parent | 17646e2235e090a71518a018ac861b27ad07052a (diff) |
Set color space on Vulkan render target surface
Test: Pass UiRendering tests with Vulkan pipeline
Bug: 116117654
Bug: 111436479
Change-Id: Id58a8a93c6f311402273b1a9e3606c9732f55aec
Diffstat (limited to 'libs/hwui/renderthread/VulkanManager.cpp')
-rw-r--r-- | libs/hwui/renderthread/VulkanManager.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp index 9a6df75fedd9..e1f8307343a7 100644 --- a/libs/hwui/renderthread/VulkanManager.cpp +++ b/libs/hwui/renderthread/VulkanManager.cpp @@ -472,8 +472,9 @@ SkSurface* VulkanManager::getBackbufferSurface(VulkanSurface** surfaceOut) { window->query(window, NATIVE_WINDOW_HEIGHT, &windowHeight); if (windowWidth != surface->mWindowWidth || windowHeight != surface->mWindowHeight) { ColorMode colorMode = surface->mColorMode; + sk_sp<SkColorSpace> colorSpace = surface->mColorSpace; destroySurface(surface); - *surfaceOut = createSurface(window, colorMode); + *surfaceOut = createSurface(window, colorMode, colorSpace); surface = *surfaceOut; } @@ -647,7 +648,7 @@ void VulkanManager::createBuffers(VulkanSurface* surface, VkFormat format, VkExt imageInfo.mSurface = SkSurface::MakeFromBackendRenderTarget( mRenderThread.getGrContext(), backendRT, kTopLeft_GrSurfaceOrigin, surface->mColorMode == ColorMode::WideColorGamut ? kRGBA_F16_SkColorType - : kRGBA_8888_SkColorType, nullptr, &props); + : kRGBA_8888_SkColorType, surface->mColorSpace, &props); } SkASSERT(mCommandPool != VK_NULL_HANDLE); @@ -833,14 +834,15 @@ bool VulkanManager::createSwapchain(VulkanSurface* surface) { return true; } -VulkanSurface* VulkanManager::createSurface(ANativeWindow* window, ColorMode colorMode) { +VulkanSurface* VulkanManager::createSurface(ANativeWindow* window, ColorMode colorMode, + sk_sp<SkColorSpace> surfaceColorSpace) { initialize(); if (!window) { return nullptr; } - VulkanSurface* surface = new VulkanSurface(colorMode, window); + VulkanSurface* surface = new VulkanSurface(colorMode, window, surfaceColorSpace); VkAndroidSurfaceCreateInfoKHR surfaceCreateInfo; memset(&surfaceCreateInfo, 0, sizeof(VkAndroidSurfaceCreateInfoKHR)); |