aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/sk_app
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-12-19 13:15:02 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-19 18:41:36 +0000
commitfaa095e9842b924c20de84dce1bcc1adad7fe2e4 (patch)
tree9651cd2720ae39bad1c364338540902b7910655c /tools/sk_app
parent040238bded7b932b916c84912cbaec1207aa29c0 (diff)
Update SkSurface MakeFromBackend* factories to take an SkColorType.
Bug: skia: Change-Id: Ib1b03b1181ec937843eac2e8d8cb03ebe53e32c1 Reviewed-on: https://skia-review.googlesource.com/86760 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tools/sk_app')
-rw-r--r--tools/sk_app/GLWindowContext.cpp13
-rw-r--r--tools/sk_app/VulkanWindowContext.cpp22
-rw-r--r--tools/sk_app/VulkanWindowContext.h2
-rw-r--r--tools/sk_app/WindowContext.h1
4 files changed, 21 insertions, 17 deletions
diff --git a/tools/sk_app/GLWindowContext.cpp b/tools/sk_app/GLWindowContext.cpp
index d928a7bf43..9ef5141fee 100644
--- a/tools/sk_app/GLWindowContext.cpp
+++ b/tools/sk_app/GLWindowContext.cpp
@@ -39,15 +39,6 @@ void GLWindowContext::initializeContext() {
this->initializeContext();
return;
}
-
- if (fContext) {
- // We may not have real sRGB support (ANGLE, in particular), so check for
- // that, and fall back to L32:
- fPixelConfig = fContext->caps()->srgbSupport() && fDisplayParams.fColorSpace
- ? kSRGBA_8888_GrPixelConfig : kRGBA_8888_GrPixelConfig;
- } else {
- fPixelConfig = kUnknown_GrPixelConfig;
- }
}
void GLWindowContext::destroyContext() {
@@ -72,16 +63,18 @@ sk_sp<SkSurface> GLWindowContext::getBackbufferSurface() {
GR_GL_CALL(fBackendContext.get(), GetIntegerv(GR_GL_FRAMEBUFFER_BINDING,
&buffer));
fbInfo.fFBOID = buffer;
+ fbInfo.fFormat = fContext->caps()->srgbSupport() && fDisplayParams.fColorSpace
+ ? GR_GL_SRGB8_ALPHA8 : GR_GL_RGBA8;
GrBackendRenderTarget backendRT(fWidth,
fHeight,
fSampleCount,
fStencilBits,
- fPixelConfig,
fbInfo);
fSurface = SkSurface::MakeFromBackendRenderTarget(fContext.get(), backendRT,
kBottomLeft_GrSurfaceOrigin,
+ kRGBA_8888_SkColorType,
fDisplayParams.fColorSpace,
&fSurfaceProps);
}
diff --git a/tools/sk_app/VulkanWindowContext.cpp b/tools/sk_app/VulkanWindowContext.cpp
index 711791df18..6237ee09ae 100644
--- a/tools/sk_app/VulkanWindowContext.cpp
+++ b/tools/sk_app/VulkanWindowContext.cpp
@@ -201,6 +201,20 @@ bool VulkanWindowContext::createSwapchain(int width, int height,
return false;
}
+ SkColorType colorType;
+ switch (surfaceFormat) {
+ case VK_FORMAT_R8G8B8A8_UNORM: // fall through
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ colorType = kRGBA_8888_SkColorType;
+ break;
+ case VK_FORMAT_B8G8R8A8_UNORM: // fall through
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ colorType = kBGRA_8888_SkColorType;
+ break;
+ default:
+ return false;
+ }
+
// If mailbox mode is available, use it, as it is the lowest-latency non-
// tearing mode. If not, fall back to FIFO which is always available.
VkPresentModeKHR mode = VK_PRESENT_MODE_FIFO_KHR;
@@ -254,15 +268,12 @@ bool VulkanWindowContext::createSwapchain(int width, int height,
fDestroySwapchainKHR(fBackendContext->fDevice, swapchainCreateInfo.oldSwapchain, nullptr);
}
- this->createBuffers(swapchainCreateInfo.imageFormat);
+ this->createBuffers(swapchainCreateInfo.imageFormat, colorType);
return true;
}
-void VulkanWindowContext::createBuffers(VkFormat format) {
- fPixelConfig = GrVkFormatToPixelConfig(format);
- SkASSERT(kUnknown_GrPixelConfig != fPixelConfig);
-
+void VulkanWindowContext::createBuffers(VkFormat format, SkColorType colorType) {
fGetSwapchainImagesKHR(fBackendContext->fDevice, fSwapchain, &fImageCount, nullptr);
SkASSERT(fImageCount);
fImages = new VkImage[fImageCount];
@@ -287,6 +298,7 @@ void VulkanWindowContext::createBuffers(VkFormat format) {
fSurfaces[i] = SkSurface::MakeFromBackendTextureAsRenderTarget(fContext.get(), backendTex,
kTopLeft_GrSurfaceOrigin,
fSampleCount,
+ colorType,
fDisplayParams.fColorSpace,
&fSurfaceProps);
}
diff --git a/tools/sk_app/VulkanWindowContext.h b/tools/sk_app/VulkanWindowContext.h
index d02b11428e..df6ef33959 100644
--- a/tools/sk_app/VulkanWindowContext.h
+++ b/tools/sk_app/VulkanWindowContext.h
@@ -64,7 +64,7 @@ private:
BackbufferInfo* getAvailableBackbuffer();
bool createSwapchain(int width, int height, const DisplayParams& params);
- void createBuffers(VkFormat format);
+ void createBuffers(VkFormat format, SkColorType colorType);
void destroyBuffers();
sk_sp<const GrVkBackendContext> fBackendContext;
diff --git a/tools/sk_app/WindowContext.h b/tools/sk_app/WindowContext.h
index cd4c357e20..5e7d76d4ba 100644
--- a/tools/sk_app/WindowContext.h
+++ b/tools/sk_app/WindowContext.h
@@ -61,7 +61,6 @@ protected:
int fWidth;
int fHeight;
DisplayParams fDisplayParams;
- GrPixelConfig fPixelConfig;
SkSurfaceProps fSurfaceProps;
// parameters obtained from the native window