return false;
}
- // We don't allow writing to a color space tagged destination if the source isn't tagged
- if (dstColorSpace && !srcColorSpace) {
- return false;
- }
-
GrGpu::DrawPreference drawPreference = GrGpu::kNoDraw_DrawPreference;
// Don't prefer to draw for the conversion (and thereby access a texture from the cache) when
// we've already determined that there isn't a roundtrip preserving conversion processor pair.
return false;
}
- // We don't allow reading to a color space tagged destination if the source isn't tagged
- if (dstColorSpace && !srcColorSpace) {
- return false;
- }
-
GrGpu::DrawPreference drawPreference = GrGpu::kNoDraw_DrawPreference;
// Don't prefer to draw for the conversion (and thereby access a texture from the cache) when
// we've already determined that there isn't a roundtrip preserving conversion processor pair.
// see https://bug.skia.org/3965
//REPORTER_ASSERT(reporter, a->isOpaque() == b->isOpaque());
- SkImageInfo info = SkImageInfo::MakeN32(widthA, heightA, a->alphaType());
+ // The codecs may have given us back F16, we can't read from F16 raster to N32, only S32.
+ SkImageInfo info = SkImageInfo::MakeS32(widthA, heightA, a->alphaType());
SkAutoPixmapStorage pmapA, pmapB;
pmapA.alloc(info);
pmapB.alloc(info);
}
}
#endif
-
-#if SK_SUPPORT_GPU
-DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ReadPixelsColorSpaceVariants_Gpu, reporter, ctxInfo) {
- // Create surfaces with and without an attached color space
- sk_sp<SkColorSpace> srgbColorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named);
- SkImageInfo srgbInfo = SkImageInfo::MakeS32(DEV_W, DEV_H, kPremul_SkAlphaType);
- SkImageInfo legacyInfo = srgbInfo.makeColorSpace(nullptr);
-
- sk_sp<SkSurface> srgbSurface = SkSurface::MakeRenderTarget(ctxInfo.grContext(), SkBudgeted::kNo,
- srgbInfo);
- sk_sp<SkSurface> legacySurface = SkSurface::MakeRenderTarget(ctxInfo.grContext(),
- SkBudgeted::kNo, legacyInfo);
- SkCanvas* srgbCanvas = srgbSurface->getCanvas();
- SkCanvas* legacyCanvas = legacySurface->getCanvas();
-
- struct {
- SkCanvas* fCanvas;
- const SkImageInfo& fBmpInfo;
- bool fExpectSuccess;
- } kTestConfigs[] ={
- // Both kinds of surface should be able to read into a legacy destination
- { srgbCanvas, legacyInfo, true },
- { legacyCanvas, legacyInfo, true },
- // Tagged surface should be able to read into tagged destination
- { srgbCanvas, srgbInfo, true },
- // Legacy surface shouldn't read into tagged destination
- { legacyCanvas, srgbInfo, false },
- };
-
- for (auto testConfig : kTestConfigs) {
- SkBitmap bmp;
- bmp.setInfo(testConfig.fBmpInfo);
- bool result = testConfig.fCanvas->readPixels(&bmp, 0, 0);
- REPORTER_ASSERT(reporter, result == testConfig.fExpectSuccess);
- }
-}
-#endif