| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkGpuDevice.h" | 8 #include "SkGpuDevice.h" |
| 9 | 9 |
| 10 #include "GrBlurUtils.h" | 10 #include "GrBlurUtils.h" |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 default: // If it is unpremul or unknown don't try to render | 119 default: // If it is unpremul or unknown don't try to render |
| 120 return false; | 120 return false; |
| 121 } | 121 } |
| 122 } | 122 } |
| 123 if (kClear_InitContents == init) { | 123 if (kClear_InitContents == init) { |
| 124 *flags |= kNeedClear_Flag; | 124 *flags |= kNeedClear_Flag; |
| 125 } | 125 } |
| 126 return true; | 126 return true; |
| 127 } | 127 } |
| 128 | 128 |
| 129 sk_sp<SkGpuDevice> SkGpuDevice::Make(sk_sp<GrRenderTarget> rt, const SkSurfacePr
ops* props, | 129 sk_sp<SkGpuDevice> SkGpuDevice::Make(sk_sp<GrRenderTarget> rt, sk_sp<SkColorSpac
e> colorSpace, |
| 130 InitContents init) { | 130 const SkSurfaceProps* props, InitContents i
nit) { |
| 131 if (!rt || rt->wasDestroyed() || !rt->getContext()) { | 131 if (!rt || rt->wasDestroyed() || !rt->getContext()) { |
| 132 return nullptr; | 132 return nullptr; |
| 133 } | 133 } |
| 134 unsigned flags; | 134 unsigned flags; |
| 135 if (!CheckAlphaTypeAndGetFlags(nullptr, init, &flags)) { | 135 if (!CheckAlphaTypeAndGetFlags(nullptr, init, &flags)) { |
| 136 return nullptr; | 136 return nullptr; |
| 137 } | 137 } |
| 138 | 138 |
| 139 const int width = rt->width(); | 139 const int width = rt->width(); |
| 140 const int height = rt->height(); | 140 const int height = rt->height(); |
| 141 | 141 |
| 142 GrContext* context = rt->getContext(); | 142 GrContext* context = rt->getContext(); |
| 143 | 143 |
| 144 sk_sp<GrDrawContext> drawContext(context->drawContext(std::move(rt), props))
; | 144 sk_sp<GrDrawContext> drawContext(context->drawContext(std::move(rt), std::mo
ve(colorSpace), |
| 145 props)); |
| 145 return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext), width, hei
ght, flags)); | 146 return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext), width, hei
ght, flags)); |
| 146 } | 147 } |
| 147 | 148 |
| 148 sk_sp<SkBaseDevice> SkGpuDevice::Make(sk_sp<GrDrawContext> drawContext, | 149 sk_sp<SkBaseDevice> SkGpuDevice::Make(sk_sp<GrDrawContext> drawContext, |
| 149 int width, int height, | 150 int width, int height, |
| 150 InitContents init) { | 151 InitContents init) { |
| 151 if (!drawContext || drawContext->wasAbandoned()) { | 152 if (!drawContext || drawContext->wasAbandoned()) { |
| 152 return nullptr; | 153 return nullptr; |
| 153 } | 154 } |
| 154 unsigned flags; | 155 unsigned flags; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 GrPixelConfig origConfig = SkImageInfo2GrPixelConfig(ct, at, cs, *context->c
aps()); | 217 GrPixelConfig origConfig = SkImageInfo2GrPixelConfig(ct, at, cs, *context->c
aps()); |
| 217 if (!context->caps()->isConfigRenderable(origConfig, sampleCount > 0)) { | 218 if (!context->caps()->isConfigRenderable(origConfig, sampleCount > 0)) { |
| 218 // Fall back from whatever ct was to default of kRGBA or kBGRA which is
aliased as kN32 | 219 // Fall back from whatever ct was to default of kRGBA or kBGRA which is
aliased as kN32 |
| 219 ct = kN32_SkColorType; | 220 ct = kN32_SkColorType; |
| 220 } | 221 } |
| 221 | 222 |
| 222 GrPixelConfig config = SkImageInfo2GrPixelConfig(ct, at, cs, *context->caps(
)); | 223 GrPixelConfig config = SkImageInfo2GrPixelConfig(ct, at, cs, *context->caps(
)); |
| 223 | 224 |
| 224 return context->newDrawContext(SkBackingFit::kExact, // Why ex
act? | 225 return context->newDrawContext(SkBackingFit::kExact, // Why ex
act? |
| 225 origInfo.width(), origInfo.height(), | 226 origInfo.width(), origInfo.height(), |
| 226 config, sampleCount, | 227 config, sk_ref_sp(cs), sampleCount, |
| 227 kDefault_GrSurfaceOrigin, surfaceProps, budge
ted); | 228 kDefault_GrSurfaceOrigin, surfaceProps, budge
ted); |
| 228 } | 229 } |
| 229 | 230 |
| 230 sk_sp<SkSpecialImage> SkGpuDevice::filterTexture(const SkDraw& draw, | 231 sk_sp<SkSpecialImage> SkGpuDevice::filterTexture(const SkDraw& draw, |
| 231 SkSpecialImage* srcImg, | 232 SkSpecialImage* srcImg, |
| 232 int left, int top, | 233 int left, int top, |
| 233 SkIPoint* offset, | 234 SkIPoint* offset, |
| 234 const SkImageFilter* filter) { | 235 const SkImageFilter* filter) { |
| 235 SkASSERT(srcImg->isTextureBacked()); | 236 SkASSERT(srcImg->isTextureBacked()); |
| 236 SkASSERT(filter); | 237 SkASSERT(filter); |
| (...skipping 1598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1835 SkSurfaceProps props(this->surfaceProps().flags(), cinfo.fPixelGeometry); | 1836 SkSurfaceProps props(this->surfaceProps().flags(), cinfo.fPixelGeometry); |
| 1836 | 1837 |
| 1837 // layers are never drawn in repeat modes, so we can request an approx | 1838 // layers are never drawn in repeat modes, so we can request an approx |
| 1838 // match and ignore any padding. | 1839 // match and ignore any padding. |
| 1839 SkBackingFit fit = kNever_TileUsage == cinfo.fTileUsage ? SkBackingFit::kApp
rox | 1840 SkBackingFit fit = kNever_TileUsage == cinfo.fTileUsage ? SkBackingFit::kApp
rox |
| 1840 : SkBackingFit::kExa
ct; | 1841 : SkBackingFit::kExa
ct; |
| 1841 | 1842 |
| 1842 sk_sp<GrDrawContext> dc(fContext->newDrawContext(fit, | 1843 sk_sp<GrDrawContext> dc(fContext->newDrawContext(fit, |
| 1843 cinfo.fInfo.width(), cinfo.
fInfo.height(), | 1844 cinfo.fInfo.width(), cinfo.
fInfo.height(), |
| 1844 fDrawContext->config(), | 1845 fDrawContext->config(), |
| 1846 sk_ref_sp(fDrawContext->get
ColorSpace()), |
| 1845 fDrawContext->desc().fSampl
eCnt, | 1847 fDrawContext->desc().fSampl
eCnt, |
| 1846 kDefault_GrSurfaceOrigin, | 1848 kDefault_GrSurfaceOrigin, |
| 1847 &props)); | 1849 &props)); |
| 1848 if (!dc) { | 1850 if (!dc) { |
| 1849 SkErrorInternals::SetError( kInternalError_SkError, | 1851 SkErrorInternals::SetError( kInternalError_SkError, |
| 1850 "---- failed to create gpu device texture [%
d %d]\n", | 1852 "---- failed to create gpu device texture [%
d %d]\n", |
| 1851 cinfo.fInfo.width(), cinfo.fInfo.height()); | 1853 cinfo.fInfo.width(), cinfo.fInfo.height()); |
| 1852 return nullptr; | 1854 return nullptr; |
| 1853 } | 1855 } |
| 1854 | 1856 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1869 } | 1871 } |
| 1870 | 1872 |
| 1871 SkImageFilterCache* SkGpuDevice::getImageFilterCache() { | 1873 SkImageFilterCache* SkGpuDevice::getImageFilterCache() { |
| 1872 ASSERT_SINGLE_OWNER | 1874 ASSERT_SINGLE_OWNER |
| 1873 // We always return a transient cache, so it is freed after each | 1875 // We always return a transient cache, so it is freed after each |
| 1874 // filter traversal. | 1876 // filter traversal. |
| 1875 return SkImageFilterCache::Create(kDefaultImageFilterCacheSize); | 1877 return SkImageFilterCache::Create(kDefaultImageFilterCacheSize); |
| 1876 } | 1878 } |
| 1877 | 1879 |
| 1878 #endif | 1880 #endif |
| OLD | NEW |