1cb93a386Sopenharmony_ciSkia Graphics Release Notes 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_ciThis file includes a list of high level updates for each milestone release. 4cb93a386Sopenharmony_ci 5cb93a386Sopenharmony_ciMilestone 98 6cb93a386Sopenharmony_ci------------ 7cb93a386Sopenharmony_ci * The following functions and methods are not defined in SkSurface when SK_SUPPORT_GPU is 0: 8cb93a386Sopenharmony_ci MakeFromBackendTexture, MakeFromBackendRenderTarget, MakeRenderTarget, 9cb93a386Sopenharmony_ci getBackendTexture, getBackendRenderTarget, replaceBackendTexture. flush() with parameters 10cb93a386Sopenharmony_ci was removed as well. These were all no-ops anyway when just the CPU backend was compiled in 11cb93a386Sopenharmony_ci (noting that flush() and flushAndSubmit() are still no-ops on the CPU backend). 12cb93a386Sopenharmony_ci * GrBackendSemaphore only includes methods that match the GPU backend that Skia was compiled for. 13cb93a386Sopenharmony_ci For example, initVulkan and vkSemaphore are not defined unless the Vulkan backend is compiled 14cb93a386Sopenharmony_ci into Skia. 15cb93a386Sopenharmony_ci * Surfaces and images are now limited to just under 2GB of total size. Previously, larger images 16cb93a386Sopenharmony_ci could be created, but the CPU backend would fail to index them correctly. 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ciMilestone 97 20cb93a386Sopenharmony_ci------------ 21cb93a386Sopenharmony_ci * Added basic support for vulkan DRM modifiers. All of these are treated as read only textures 22cb93a386Sopenharmony_ci internally (versus querying specific modifier support). Clients can either pass a flag to Vulkan 23cb93a386Sopenharmony_ci GrBackendFormat to say it uses modifiers or pass the VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT 24cb93a386Sopenharmony_ci to a GrBackendTexture via the GrVkImageInfo struct. 25cb93a386Sopenharmony_ci * The following functions and methods are not defined in SkImage when SK_SUPPORT_GPU is 0: 26cb93a386Sopenharmony_ci MakeTextureFromCompressed, MakeFromTexture, MakeFromCompressedTexture, 27cb93a386Sopenharmony_ci MakeCrossContextFromPixmap, MakeFromAdoptedTexture, MakeFromYUVATextures, 28cb93a386Sopenharmony_ci MakeFromYUVAPixmaps, MakePromiseTexture, MakePromiseYUVATexture, MakeBackendTextureFromSkImage, 29cb93a386Sopenharmony_ci flush, flushAndSubmit, getBackendTexture, makeTextureImage. 30cb93a386Sopenharmony_ci These were all no-ops anyway when just the CPU backend was compiled in. 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci* * * 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ciMilestone 96 35cb93a386Sopenharmony_ci------------ 36cb93a386Sopenharmony_ci * SkRuntimeEffect no longer clamps the RGB values of an effect's output to the range 0..A. 37cb93a386Sopenharmony_ci This makes it easier to use a hierarchy of SkSL shaders where intermediate values do not 38cb93a386Sopenharmony_ci represent colors but are, for example, non-color inputs to a lighting model. 39cb93a386Sopenharmony_ci http://review.skia.org/452558 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci* * * 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ciMilestone 95 44cb93a386Sopenharmony_ci------------ 45cb93a386Sopenharmony_ci * Minimum supported iOS raised from 8 to 11. Skia may build back to iOS 9 but versions older 46cb93a386Sopenharmony_ci than 11 are not tested. Community contributions to support versions 9 and 10 of iOS may be 47cb93a386Sopenharmony_ci considered, but they may not be complex as they cannot be tested. 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ci* * * 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_ciMilestone 94 52cb93a386Sopenharmony_ci------------ 53cb93a386Sopenharmony_ci * Metal backend has been changed to track command buffer resources manually 54cb93a386Sopenharmony_ci rather than using retained resources. 55cb93a386Sopenharmony_ci https://review.skia.org/432878 56cb93a386Sopenharmony_ci 57cb93a386Sopenharmony_ci * Added virtual onResetClip() to SkCanvas for Android Framework, to emulate the soon-to-be-removed 58cb93a386Sopenharmony_ci expanding clip ops guarded by SK_SUPPORT_DEPRECATED_CLIPOPS. 59cb93a386Sopenharmony_ci https://review.skia.org/430897 60cb93a386Sopenharmony_ci 61cb93a386Sopenharmony_ci * Removed SK_SUPPORT_DEPRECATED_CLIPOPS build flag. Clips can only be intersect and difference. 62cb93a386Sopenharmony_ci https://review.skia.org/436565 63cb93a386Sopenharmony_ci 64cb93a386Sopenharmony_ci * There is a new syntax for invoking (sampling) child effects in SkSL. Previously, children 65cb93a386Sopenharmony_ci (shaders, colorFilters, blenders) were invoked using different overloads of `sample`. That 66cb93a386Sopenharmony_ci syntax is deprecated (but still supported). Now, the child behaves like an object, with a method 67cb93a386Sopenharmony_ci name `eval`. The arguments to these `eval` methods are the same as the arguments in the old 68cb93a386Sopenharmony_ci `sample` intrinsics. For example: 69cb93a386Sopenharmony_ci // Old syntax: 70cb93a386Sopenharmony_ci sample(shader, xy) 71cb93a386Sopenharmony_ci sample(colorFilter, color) 72cb93a386Sopenharmony_ci sample(blender, srcColor, dstColor) 73cb93a386Sopenharmony_ci // New syntax: 74cb93a386Sopenharmony_ci shader.eval(xy) 75cb93a386Sopenharmony_ci colorFilter.eval(color) 76cb93a386Sopenharmony_ci blender.eval(srcColor, dstColor) 77cb93a386Sopenharmony_ci https://review.skia.org/444735 78cb93a386Sopenharmony_ci 79cb93a386Sopenharmony_ci* * * 80cb93a386Sopenharmony_ci 81cb93a386Sopenharmony_ciMilestone 93 82cb93a386Sopenharmony_ci------------ 83cb93a386Sopenharmony_ci * Removed SkPaint::getHash 84cb93a386Sopenharmony_ci https://review.skia.org/419336 85cb93a386Sopenharmony_ci 86cb93a386Sopenharmony_ci * Removed SkShaders::Lerp. It was unused (and easy to replicate with SkRuntimeEffect). 87cb93a386Sopenharmony_ci https://review.skia.org/419796 88cb93a386Sopenharmony_ci 89cb93a386Sopenharmony_ci * The default value of GrContextOptions::fReduceOpsTaskSplitting is now enabled. 90cb93a386Sopenharmony_ci https://review.skia.org/419836 91cb93a386Sopenharmony_ci 92cb93a386Sopenharmony_ci * Removed SkMatrix44 93cb93a386Sopenharmony_ci 94cb93a386Sopenharmony_ci* * * 95cb93a386Sopenharmony_ci 96cb93a386Sopenharmony_ciMilestone 92 97cb93a386Sopenharmony_ci------------ 98cb93a386Sopenharmony_ci * Hides SkPathEffect::computeFastBounds() from public API; external subclasses of SkPathEffect 99cb93a386Sopenharmony_ci must implement onComputeFastBounds() but can return false to signal it's not computable. 100cb93a386Sopenharmony_ci https://review.skia.org/406140 101cb93a386Sopenharmony_ci 102cb93a386Sopenharmony_ci * Add SkM44::RectToRect constructor (SkM44's equivalent to SkMatrix::RectToRect) 103cb93a386Sopenharmony_ci https://review.skia.org/402957 104cb93a386Sopenharmony_ci 105cb93a386Sopenharmony_ci * Metal support has been removed for versions of iOS older than 10.0 and MacOS older than 10.14. 106cb93a386Sopenharmony_ci https://review.skia.org/401816 107cb93a386Sopenharmony_ci 108cb93a386Sopenharmony_ci * Removed custom attributes from SkVertices and the corresponding `varying` feature from 109cb93a386Sopenharmony_ci SkRuntimeEffect. 110cb93a386Sopenharmony_ci https://review.skia.org/398222 111cb93a386Sopenharmony_ci 112cb93a386Sopenharmony_ci * Dropped support for mixed samples. Mixed samples is no longer relevant for Ganesh. DMSAA and the 113cb93a386Sopenharmony_ci new Ganesh architecture both rely on full MSAA, and any platform where mixed samples is 114cb93a386Sopenharmony_ci supported will ultimately not use the old architecture. 115cb93a386Sopenharmony_ci 116cb93a386Sopenharmony_ci * SkRuntimeEffect::Make has been removed. It is replaced by MakeForShader and MakeForColorFilter. 117cb93a386Sopenharmony_ci These functions do stricter error checking on the SkSL, to ensure it is valid for a particular 118cb93a386Sopenharmony_ci stage of the Skia pipeline. 119cb93a386Sopenharmony_ci https://review.skia.org/402156 120cb93a386Sopenharmony_ci 121cb93a386Sopenharmony_ci* * * 122cb93a386Sopenharmony_ci 123cb93a386Sopenharmony_ciMilestone 91 124cb93a386Sopenharmony_ci------------ 125cb93a386Sopenharmony_ci * The SkSL DSL API has been moved into public headers, although it is still under active 126cb93a386Sopenharmony_ci development and isn't quite ready for prime time yet. 127cb93a386Sopenharmony_ci https://review.skia.org/378496 128cb93a386Sopenharmony_ci 129cb93a386Sopenharmony_ci * Skia's GPU backend no longer supports NVPR. Our more recent path renderers are more 130cb93a386Sopenharmony_ci performant and are not limited to nVidia hardware. 131cb93a386Sopenharmony_ci 132cb93a386Sopenharmony_ci * SkRuntimeEffect now supports uniforms of type int, int2, int3, and int4. Per the OpenGL ES 133cb93a386Sopenharmony_ci Shading Language Version 1.00 specification, there are few guarantees about the representation 134cb93a386Sopenharmony_ci or range of integral types, and operations that assume integral representation (eg, bitwise), 135cb93a386Sopenharmony_ci are not supported. 136cb93a386Sopenharmony_ci https://review.skia.org/391856 137cb93a386Sopenharmony_ci 138cb93a386Sopenharmony_ci * SkRuntimeEffect requires that 'shader' variables be declared as 'uniform'. The deprecated 139cb93a386Sopenharmony_ci syntax of 'in shader' is no longer supported. 140cb93a386Sopenharmony_ci https://review.skia.org/393081 141cb93a386Sopenharmony_ci 142cb93a386Sopenharmony_ci* * * 143cb93a386Sopenharmony_ci 144cb93a386Sopenharmony_ciMilestone 90 145cb93a386Sopenharmony_ci------------ 146cb93a386Sopenharmony_ci * Renamed use of sk_cf_obj in external Metal types to sk_cfp. 147cb93a386Sopenharmony_ci https://review.skia.org/372556 148cb93a386Sopenharmony_ci 149cb93a386Sopenharmony_ci * GrDirectContext::ComputeImageSize() is removed. Use SkImage::textureSize() instead. 150cb93a386Sopenharmony_ci https://review.skia.org/368621 151cb93a386Sopenharmony_ci https://review.skia.org/369317 152cb93a386Sopenharmony_ci https://review.skia.org/371958 153cb93a386Sopenharmony_ci 154cb93a386Sopenharmony_ci * Remove SkImageFilter::MakeMatrixFilter as it was unused and replaced with 155cb93a386Sopenharmony_ci SkImageFilters::MatrixTransform. 156cb93a386Sopenharmony_ci https://review.skia.org/366318 157cb93a386Sopenharmony_ci 158cb93a386Sopenharmony_ci * Refactored particle system to use a single code string containing both Effect and Particle code. 159cb93a386Sopenharmony_ci Uniform APIs are now shared for all program entry points, and no longer prefixed with 'Effect' 160cb93a386Sopenharmony_ci or 'Particle'. For example, instead of `SkParticleEffect::effectUniformInfo` and 161cb93a386Sopenharmony_ci `SkParticleEffect::particleUniformInfo`, there is just `SkParticleEffect::uniformInfo`. 162cb93a386Sopenharmony_ci 163cb93a386Sopenharmony_ci * Remove SkImageFilter::CropRect from the public API as it's no longer usable. All factories 164cb93a386Sopenharmony_ci work with 'SkRect', 'SkIRect', or nullable pointers to 'Sk[I]Rect'. 165cb93a386Sopenharmony_ci https://review.skia.org/361496 166cb93a386Sopenharmony_ci 167cb93a386Sopenharmony_ci * Remove deprecated SkImageFilter factory functions and supporting types. All default-provided 168cb93a386Sopenharmony_ci SkImageFilters are now only constructed via 'include/effects/SkImageFilters.h' 169cb93a386Sopenharmony_ci https://review.skia.org/357285 170cb93a386Sopenharmony_ci 171cb93a386Sopenharmony_ci * Added SkRuntimeEffect::makeImage() to capture the output of an SkRuntimeEffect in an SkImage. 172cb93a386Sopenharmony_ci https://review.skia.org/357284 173cb93a386Sopenharmony_ci 174cb93a386Sopenharmony_ci * Updated SkRuntimeEffect::Make() to take an Options struct. It also now returns a Results struct 175cb93a386Sopenharmony_ci instead of a tuple. 176cb93a386Sopenharmony_ci https://review.skia.org/363785 177cb93a386Sopenharmony_ci https://review.skia.org/367060 178cb93a386Sopenharmony_ci 179cb93a386Sopenharmony_ci * Changed SkRuntimeEffect::Varying to have lower-case member names, with no 'f' prefix. 180cb93a386Sopenharmony_ci https://review.skia.org/365656 181cb93a386Sopenharmony_ci 182cb93a386Sopenharmony_ci * Changed SkRuntimeEffect::Uniform to have lower-case member names, with no 'f' prefix. 183cb93a386Sopenharmony_ci https://review.skia.org/365696 184cb93a386Sopenharmony_ci 185cb93a386Sopenharmony_ci * Deprecate (and ignore) SkAndroidCodec::ExifOrientation 186cb93a386Sopenharmony_ci https://review.skia.org/344763 187cb93a386Sopenharmony_ci 188cb93a386Sopenharmony_ci * Fix several minor issues in lighting image filters: 189cb93a386Sopenharmony_ci - The spotlight falloff exponent is no longer clamped to [1, 128]. SVG 1.1 requires the specular 190cb93a386Sopenharmony_ci lighting effect's exponent (shininess) to be clamped; not the spotlight's falloff. Any such 191cb93a386Sopenharmony_ci parameter clamping is the client's responisibility, which makes Skia's lighting effect easily 192cb93a386Sopenharmony_ci adaptable to SVG 1.1 (clamp exponent) or SVG 2 (no clamp). 193cb93a386Sopenharmony_ci - Fix spotlight incorrectly scaling light within the cone angle. 194cb93a386Sopenharmony_ci - Move saturation of RGBA to after multiplying lighting intensity with the lighting color, which 195cb93a386Sopenharmony_ci improves rendering when diffuse and specular constants are greater than 1. 196cb93a386Sopenharmony_ci https://review.skia.org/355496 197cb93a386Sopenharmony_ci 198cb93a386Sopenharmony_ci * SkDeferredDisplayListRecorder::makePromiseTexture has moved to SkImage::MakePromiseTexture. 199cb93a386Sopenharmony_ci New code should use the new entry point – migration CLs will be coming soon. 200cb93a386Sopenharmony_ci https://review.skia.org/373716 201cb93a386Sopenharmony_ci 202cb93a386Sopenharmony_ciMilestone 89 203cb93a386Sopenharmony_ci------------ 204cb93a386Sopenharmony_ci * Removed SkYUVAIndex and SkYUVASizeInfo. These were no longer used in any 205cb93a386Sopenharmony_ci public APIs. 206cb93a386Sopenharmony_ci https://review.skia.org/352497 207cb93a386Sopenharmony_ci 208cb93a386Sopenharmony_ci * Numerous changes to SkRuntimeEffect, aligning the capabilities and restrictions with 209cb93a386Sopenharmony_ci The OpenGL ES Shading Language 1.00 (aka, the shading language of OpenGL ES2 and WebGL 1.0). 210cb93a386Sopenharmony_ci All built-in functions from sections 8.1 through 8.6 implemented & tested on all backends. 211cb93a386Sopenharmony_ci Removed types and features that require newer versions of GLSL: 212cb93a386Sopenharmony_ci https://review.skia.org/346657 [Non-square matrices] 213cb93a386Sopenharmony_ci https://review.skia.org/347046 [uint, short, ushort, byte, ubyte] 214cb93a386Sopenharmony_ci https://review.skia.org/349056 [while and do-while loops] 215cb93a386Sopenharmony_ci https://review.skia.org/350030 [Bitwise operators and integer remainder] 216cb93a386Sopenharmony_ci 217cb93a386Sopenharmony_ci * Add SkShadowUtils::GetLocalBounds. Generates bounding box for shadows 218cb93a386Sopenharmony_ci relative to path. 219cb93a386Sopenharmony_ci https://review.skia.org/351922 220cb93a386Sopenharmony_ci 221cb93a386Sopenharmony_ci * Removed SkPerlinNoiseShader::MakeImprovedNoise. 222cb93a386Sopenharmony_ci https://review.skia.org/352057 223cb93a386Sopenharmony_ci 224cb93a386Sopenharmony_ci * Removed deprecated version of MakeFromYUVATextures. Use the version 225cb93a386Sopenharmony_ci that takes GrYUVABackendTextures instead. 226cb93a386Sopenharmony_ci https://review.skia.org/345174 227cb93a386Sopenharmony_ci 228cb93a386Sopenharmony_ci * SkAnimatedImage: Always respect exif orientation 229cb93a386Sopenharmony_ci Replace SkPixmapPriv::ShouldSwapWidthHeight with 230cb93a386Sopenharmony_ci SkEncodedOriginSwapsWidthHeight. 231cb93a386Sopenharmony_ci https://review.skia.org/344762 232cb93a386Sopenharmony_ci 233cb93a386Sopenharmony_ci * Add kDirectionalLight_ShadowFlag support. If enabled, light position represents 234cb93a386Sopenharmony_ci a vector pointing towards the light, and light radius is blur radius at elevation 1. 235cb93a386Sopenharmony_ci https://review.skia.org/321792 236cb93a386Sopenharmony_ci 237cb93a386Sopenharmony_ci * Support GL_LUMINANCE8_ALPHA8 textures. These can be used with GrBackendTexture APIs 238cb93a386Sopenharmony_ci on GrDirectContext and as planes of YUVA images via GrYUVABackendTextures. 239cb93a386Sopenharmony_ci https://review.skia.org/344761 240cb93a386Sopenharmony_ci 241cb93a386Sopenharmony_ci * Removed previously deprecated SkImage::MakeFromYUVATexturesCopyToExternal. 242cb93a386Sopenharmony_ci https://review.skia.org/342077 243cb93a386Sopenharmony_ci 244cb93a386Sopenharmony_ci * Add versions of GrDirectContext::createBackendTexture and updateBackendTexture 245cb93a386Sopenharmony_ci that take a GrSurfaceOrigin. The previous versions are deprecated. 246cb93a386Sopenharmony_ci https://review.skia.org/341005 247cb93a386Sopenharmony_ci 248cb93a386Sopenharmony_ci * Remove support for deprecated kDontClipToLayer_SaveLayerFlag in SkCanvas::SaveLayerRec 249cb93a386Sopenharmony_ci https://review.skia.org/339988 250cb93a386Sopenharmony_ci 251cb93a386Sopenharmony_ci * Expose more info in SkCodec::FrameInfo 252cb93a386Sopenharmony_ci https://review.skia.org/339857 253cb93a386Sopenharmony_ci 254cb93a386Sopenharmony_ci * Added dither control to the SkImageFilters::Shader factory. 255cb93a386Sopenharmony_ci https://review.skia.org/338156 256cb93a386Sopenharmony_ci 257cb93a386Sopenharmony_ci * Add MTLBinaryArchive parameter to GrMtlBackendContext. This allows 258cb93a386Sopenharmony_ci Skia to cache PipelineStates in the given archive for faster 259cb93a386Sopenharmony_ci shader compiles on future runs. The client must handle loading and 260cb93a386Sopenharmony_ci saving of the archive. 261cb93a386Sopenharmony_ci https://review.skia.org/333758 262cb93a386Sopenharmony_ci 263cb93a386Sopenharmony_ci * Deprecated enum SkYUVAInfo::PlanarConfig has been removed. 264cb93a386Sopenharmony_ci https://review.skia.org/334161 265cb93a386Sopenharmony_ci 266cb93a386Sopenharmony_ci * Deprecated SkImage factories have been removed from 267cb93a386Sopenharmony_ci SkDeferredDisplayListRecorder. 268cb93a386Sopenharmony_ci 269cb93a386Sopenharmony_ci * The following YUV image factories have been removed: 270cb93a386Sopenharmony_ci SkImage::MakeFromYUVTexturesCopyWithExternalBackend 271cb93a386Sopenharmony_ci SkImage::MakeFromNV12TexturesCopyWithExternalBackend 272cb93a386Sopenharmony_ci Replacement pattern outlined below. 273cb93a386Sopenharmony_ci 1) Make image using MakeFromYUVATextures 274cb93a386Sopenharmony_ci 2) Make a SkSurface around result texture using SkSurface::MakeFromBackendTexture 275cb93a386Sopenharmony_ci 3) surface->getCanvas()->drawImage(image, 0, 0); 276cb93a386Sopenharmony_ci 4) surface->flushAndSubmit() 277cb93a386Sopenharmony_ci 5) Optional: SkImage::MakeFromBackendTexture() to use as SkImage. 278cb93a386Sopenharmony_ci https://review.skia.org/334596 279cb93a386Sopenharmony_ci 280cb93a386Sopenharmony_ci * Added a new interface for GrDirectContext creation in Metal, using 281cb93a386Sopenharmony_ci a new struct called GrMtlBackendContext. The previous interface taking 282cb93a386Sopenharmony_ci a MTLDevice and MTLCommandQueue is deprecated. 283cb93a386Sopenharmony_ci https://review.skia.org/334426 284cb93a386Sopenharmony_ci 285cb93a386Sopenharmony_ci * SkCanvas::flush has been deprecated. 286cb93a386Sopenharmony_ci 287cb93a386Sopenharmony_ci* * * 288cb93a386Sopenharmony_ci 289cb93a386Sopenharmony_ciMilestone 88 290cb93a386Sopenharmony_ci------------ 291cb93a386Sopenharmony_ci 292cb93a386Sopenharmony_ci * SkYUVAInfo now has separate enums for division of channels among planes and 293cb93a386Sopenharmony_ci the subsampling. The previous combined enum, PlanarConfig, is deprecated. 294cb93a386Sopenharmony_ci https://review.skia.org/334102 295cb93a386Sopenharmony_ci 296cb93a386Sopenharmony_ci * Simplified SkDeferredDisplayListRecorder promise image API. Removed "release" 297cb93a386Sopenharmony_ci callback and renamed "done" callback to "release". The new "release" proc can 298cb93a386Sopenharmony_ci be null. Added a new SkYUVAInfo-based factory for YUVA promise texture images 299cb93a386Sopenharmony_ci and deprecated the old SkYUVAIndex-based one. 300cb93a386Sopenharmony_ci https://review.skia.org/331836 301cb93a386Sopenharmony_ci https://review.skia.org/333519 302cb93a386Sopenharmony_ci 303cb93a386Sopenharmony_ci * Limit the types and intrinsics supported in SkRuntimeEffect to GLSL ES 1.00 304cb93a386Sopenharmony_ci https://review.skia.org/332597 305cb93a386Sopenharmony_ci 306cb93a386Sopenharmony_ci * Add AVIF support to SkHeifCodec. 307cb93a386Sopenharmony_ci 308cb93a386Sopenharmony_ci * Add support for creating SkSurfaceCharacterizations directly for use by a 309cb93a386Sopenharmony_ci GrVkSecondaryCBDrawContext. 310cb93a386Sopenharmony_ci https://review.skia.org/331877 311cb93a386Sopenharmony_ci 312cb93a386Sopenharmony_ci * Removed SkSurfaceProps::kLegacyFontHost_InitType, SkFontLCDConfig, and related code. 313cb93a386Sopenharmony_ci The default pixel geometry for SkSurfaceProps is now kUnknown instead of kRGB_H. 314cb93a386Sopenharmony_ci The removal was guarded by the SK_LEGACY_SURFACE_PROPS build flag which was later removed. 315cb93a386Sopenharmony_ci https://review.skia.org/322490 316cb93a386Sopenharmony_ci https://review.skia.org/329364 317cb93a386Sopenharmony_ci 318cb93a386Sopenharmony_ci * Legacy 8-bit YUV interface removed from SkImageGenerator. Use more flexible SkYUVAPixmaps- 319cb93a386Sopenharmony_ci based interface instead. 320cb93a386Sopenharmony_ci https://review.skia.org/327917 321cb93a386Sopenharmony_ci 322cb93a386Sopenharmony_ci * New variant of SkImage::MakeFromYUVATextures. Takes a new type GrYUVATextures 323cb93a386Sopenharmony_ci which wraps an SkYUVAInfo and compatible set of GrBackendTextures. The provides 324cb93a386Sopenharmony_ci a more complete and structured specification of the planar configuration. Previous 325cb93a386Sopenharmony_ci version is deprecated. 326cb93a386Sopenharmony_ci Already deprecated MakeFromYUVATexturesCopyToExternal added to replace other deprecated 327cb93a386Sopenharmony_ci APIs. It's not recommended that clients use this and instead use the pattern described 328cb93a386Sopenharmony_ci in the API comment. 329cb93a386Sopenharmony_ci https://review.skia.org/317762 330cb93a386Sopenharmony_ci https://review.skia.org/329956 331cb93a386Sopenharmony_ci 332cb93a386Sopenharmony_ci * Add field to GrContextOptions to disable mipmap support even if the backend 333cb93a386Sopenharmony_ci supports it. 334cb93a386Sopenharmony_ci 335cb93a386Sopenharmony_ci * SkTPin() removed from public API. 336cb93a386Sopenharmony_ci 337cb93a386Sopenharmony_ci * Add new SkImageFilters::Blend factory function, in place of the now deprecated 338cb93a386Sopenharmony_ci SkImageFilters::Xfermode factory function. Behavior is identical, but name better matches 339cb93a386Sopenharmony_ci conventions in SkShader and SkColorFilter. 340cb93a386Sopenharmony_ci https://review.skia.org/324623 341cb93a386Sopenharmony_ci 342cb93a386Sopenharmony_ci * SkImageFilters::Foo() factory functions now accept SkIRect, SkRect, and optional SkIRect* or 343cb93a386Sopenharmony_ci SkRect*, instead of previously just the optional SkIRect*. Internally, the crop rects are stored 344cb93a386Sopenharmony_ci as floats to allow for fractional crops to be defined in the local coordinate system (before 345cb93a386Sopenharmony_ci transformation by the canvas matrix). 346cb93a386Sopenharmony_ci https://review.skia.org/324622 347cb93a386Sopenharmony_ci 348cb93a386Sopenharmony_ci * Add new SkImageFilters::Shader factory and deprecate SkImageFilters::Paint factory. All 349cb93a386Sopenharmony_ci supported/valid Paint() filters can be represented more cleanly as a Shader image filter. 350cb93a386Sopenharmony_ci https://review.skia.org/323680 351cb93a386Sopenharmony_ci 352cb93a386Sopenharmony_ci * GrContext has been replaced by two separate classes: GrDirectContext which is 353cb93a386Sopenharmony_ci the traditional notion of GrContext, and GrRecordingContext which is a context 354cb93a386Sopenharmony_ci that is recording an SkDeferredDisplayList and therefore has reduced functionality. 355cb93a386Sopenharmony_ci Unless you are using SkDeferredDisplayList, migrate directly to GrDirectContext in 356cb93a386Sopenharmony_ci all cases. 357cb93a386Sopenharmony_ci 358cb93a386Sopenharmony_ci * CPU sync bool added to SkSurface::flushAndSubmit() and GrContext::flushAndSubmit() 359cb93a386Sopenharmony_ci 360cb93a386Sopenharmony_ci * Removed legacy variant of SkImage::MakeFromYUVAPixmaps. Use the version that 361cb93a386Sopenharmony_ci takes SkYUVAPixmaps instead. It has a more structured description of the 362cb93a386Sopenharmony_ci planar configuration. 363cb93a386Sopenharmony_ci https://review.skia.org/322480 364cb93a386Sopenharmony_ci 365cb93a386Sopenharmony_ci * Some SkImage YUV image factories have been removed. Replacement patterns 366cb93a386Sopenharmony_ci outlined below. 367cb93a386Sopenharmony_ci SkImage::MakeFromYUVATexturesCopy 368cb93a386Sopenharmony_ci 1) Make SkImage from YUVA planes using SkImage::MakeFromYUVATextures 369cb93a386Sopenharmony_ci 2) Use Skia to allocate a surface using SkSurface::MakeRenderTarget 370cb93a386Sopenharmony_ci 3) surface->getCanvas()->drawImage(image, 0, 0); 371cb93a386Sopenharmony_ci 4) surface->makeImageSnapShot() produces RGBA image. 372cb93a386Sopenharmony_ci SkImage::MakeFromYUVATexturesCopyWithExternalBackend 373cb93a386Sopenharmony_ci 1) Make image using MakeFromYUVATextures 374cb93a386Sopenharmony_ci 2) Make a SkSurface around result texture using SkSurface::MakeFromBackendTexture 375cb93a386Sopenharmony_ci 3) surface->getCanvas()->drawImage(image, 0, 0); 376cb93a386Sopenharmony_ci 4) surface->flushAndSubmit() 377cb93a386Sopenharmony_ci 5) Optional: SkImage::MakeFromBackendTexture() to use as SkImage. 378cb93a386Sopenharmony_ci SkImage::MakeFromNV12TexturesCopy 379cb93a386Sopenharmony_ci Same as SkImage::MakeFromYUVATexturesCopy 380cb93a386Sopenharmony_ci https://review.skia.org/321537 381cb93a386Sopenharmony_ci 382cb93a386Sopenharmony_ci * GrBackendRenderTargets which are created with a stencilBits param, now require 383cb93a386Sopenharmony_ci the stencilBits to be 0, 8, or 16. 384cb93a386Sopenharmony_ci https://review.skia.org/321545 385cb93a386Sopenharmony_ci 386cb93a386Sopenharmony_ci* * * 387cb93a386Sopenharmony_ci 388cb93a386Sopenharmony_ciMilestone 87 389cb93a386Sopenharmony_ci------------ 390cb93a386Sopenharmony_ci 391cb93a386Sopenharmony_ci * GrVkImageInfo now has a field for sample count. GrBackendRenderTarget constructor 392cb93a386Sopenharmony_ci that took both a GrVkImageInfo and separate sample count is deprecated. Use the 393cb93a386Sopenharmony_ci version without sample count instead. Similarly, GrD3DTextureResourceInfo now 394cb93a386Sopenharmony_ci has a sample count field and GrBackendRenderTarget no longer takes a separate 395cb93a386Sopenharmony_ci sample count for Direct3D. The sample count for GrBackendRenderTarget is now 396cb93a386Sopenharmony_ci directly queried from MtlTexture rather than passed separately. The version that 397cb93a386Sopenharmony_ci takes a separate sample count is deprecated and the parameter is ignored. 398cb93a386Sopenharmony_ci https://review.skia.org/320262 399cb93a386Sopenharmony_ci https://review.skia.org/320757 400cb93a386Sopenharmony_ci https://review.skia.org/320956 401cb93a386Sopenharmony_ci 402cb93a386Sopenharmony_ci * Added deprecation warning for Metal support on MacOS 10.13, iOS 8.3, and older. 403cb93a386Sopenharmony_ci https://review.skia.org/320260 404cb93a386Sopenharmony_ci 405cb93a386Sopenharmony_ci * GrVkImageInfo now has a field for sample count. GrBackendRenderTarget constructor 406cb93a386Sopenharmony_ci that took both a GrVkImageInfo and separate sample count is deprecated. Use the 407cb93a386Sopenharmony_ci version without sample count instead. 408cb93a386Sopenharmony_ci 409cb93a386Sopenharmony_ci * Update SkClipOp::kMax_EnumValue to include only intersect and difference when 410cb93a386Sopenharmony_ci SK_SUPPORT_DEPRECATED_CLIPOPS is not defined. 411cb93a386Sopenharmony_ci https://review.skia.org/320064 412cb93a386Sopenharmony_ci 413cb93a386Sopenharmony_ci * Add support for external allocator for Direct3D 12 backend. 414cb93a386Sopenharmony_ci Defines base classes for an allocation associated with a backend texture and a 415cb93a386Sopenharmony_ci a memory allocator to create such allocations. 416cb93a386Sopenharmony_ci Adds memory allocator to backend context. 417cb93a386Sopenharmony_ci https://review.skia.org/317243 418cb93a386Sopenharmony_ci 419cb93a386Sopenharmony_ci * Add new optional parameter to GrContext::setBackend[Texture/RenderTarget]State which can 420cb93a386Sopenharmony_ci be used to return the previous GrBackendSurfaceMutableState before the requested change. 421cb93a386Sopenharmony_ci https://review.skia.org/318698 422cb93a386Sopenharmony_ci 423cb93a386Sopenharmony_ci * New optimized clip stack for GPU backends. Enabled by default but old behavior based on 424cb93a386Sopenharmony_ci SkClipStack can be restored by defining SK_DISABLE_NEW_GR_CLIP_STACK when building. It is not 425cb93a386Sopenharmony_ci compatible with SK_SUPPORT_DEPRECATED_CLIPOPS and we are targeting the removal of support for 426cb93a386Sopenharmony_ci the deprecated, expanding clip ops. 427cb93a386Sopenharmony_ci https://review.skia.org/317209 428cb93a386Sopenharmony_ci 429cb93a386Sopenharmony_ci * GPU backends now properly honor the SkFilterQuality when calling drawAtlas. 430cb93a386Sopenharmony_ci https://review.skia.org/313081 431cb93a386Sopenharmony_ci 432cb93a386Sopenharmony_ci * The signature of 'main' used with SkRuntimeEffect SkSL has changed. There is no longer an 433cb93a386Sopenharmony_ci 'inout half4 color' parameter, effects must return their color instead. 434cb93a386Sopenharmony_ci Valid signatures are now 'half4 main()' or 'half4 main(float2 coord)'. 435cb93a386Sopenharmony_ci https://review.skia.org/310756 436cb93a386Sopenharmony_ci 437cb93a386Sopenharmony_ci * New YUVA planar specifications for SkCodec, SkImageGenerator, SkImage::MakeFromYUVAPixmaps. 438cb93a386Sopenharmony_ci Chroma subsampling is specified in more structured way. SkCodec and SkImageGenerator 439cb93a386Sopenharmony_ci don't assume 3 planes with 8bit planar values. Old APIs are deprecated. 440cb93a386Sopenharmony_ci https://review.skia.org/309658 441cb93a386Sopenharmony_ci https://review.skia.org/312886 442cb93a386Sopenharmony_ci https://review.skia.org/314276 443cb93a386Sopenharmony_ci https://review.skia.org/316837 444cb93a386Sopenharmony_ci https://review.skia.org/317097 445cb93a386Sopenharmony_ci 446cb93a386Sopenharmony_ci * Added VkImageUsageFlags to GrVkImageInfo struct. 447cb93a386Sopenharmony_ci 448cb93a386Sopenharmony_ci* * * 449cb93a386Sopenharmony_ci 450cb93a386Sopenharmony_ciMilestone 86 451cb93a386Sopenharmony_ci------------ 452cb93a386Sopenharmony_ci 453cb93a386Sopenharmony_ci * Remove support for 'in' variables from SkRuntimeEffect. API now exclusively refers to inputs 454cb93a386Sopenharmony_ci as 'uniforms'. 455cb93a386Sopenharmony_ci https://review.skia.org/309050 456cb93a386Sopenharmony_ci 457cb93a386Sopenharmony_ci * Add SkImageGeneratorNDK and SkEncodeImageWithNDK for using Android's NDK APIs to decode and 458cb93a386Sopenharmony_ci encode. 459cb93a386Sopenharmony_ci https://review.skia.org/308185 460cb93a386Sopenharmony_ci https://review.skia.org/308800 461cb93a386Sopenharmony_ci 462cb93a386Sopenharmony_ci * SkImage:remove DecodeToRaster, DecodeToTexture 463cb93a386Sopenharmony_ci https://review.skia.org/306331 464cb93a386Sopenharmony_ci 465cb93a386Sopenharmony_ci * Add GrContext api to update compressed backend textures. 466cb93a386Sopenharmony_ci https://review.skia.org/302265 467cb93a386Sopenharmony_ci 468cb93a386Sopenharmony_ci * Rename GrMipMapped to GrMipmapped for consistency with new APIs. 469cb93a386Sopenharmony_ci Also rename GrBackendTexture::hasMipMaps() to GrBackendTexture::hasMipmaps() 470cb93a386Sopenharmony_ci https://review.skia.org/304576 471cb93a386Sopenharmony_ci https://review.skia.org/304598 472cb93a386Sopenharmony_ci 473cb93a386Sopenharmony_ci * Add option for clients to own semaphores after wait calls. 474cb93a386Sopenharmony_ci https://review.skia.org/301216 475cb93a386Sopenharmony_ci 476cb93a386Sopenharmony_ci * Remove obsolete GrFlushFlags. 477cb93a386Sopenharmony_ci https://review.skia.org/298818 478cb93a386Sopenharmony_ci 479cb93a386Sopenharmony_ci * Adds default flush() calls to SkSurface, SkImage, and GrContext. These calls do 480cb93a386Sopenharmony_ci a basic flush without a submit. If you haven't updated Skia in a couple releases 481cb93a386Sopenharmony_ci and still have flush() calls in your code that you expect to do a flush and 482cb93a386Sopenharmony_ci submit, you should update all those to the previously added flushAndSubmit() calls 483cb93a386Sopenharmony_ci instead. 484cb93a386Sopenharmony_ci https://review.skia.org/299141 485cb93a386Sopenharmony_ci 486cb93a386Sopenharmony_ci * Enable BackendSemaphores for the Direct3D backend. 487cb93a386Sopenharmony_ci https://review.skia.org/298752 488cb93a386Sopenharmony_ci 489cb93a386Sopenharmony_ci * Added SkImage:asyncRescaleAndReadPixels and SkImage::asyncRescaleAndReadPixelsYUV420 490cb93a386Sopenharmony_ci https://review.skia.org/299281 491cb93a386Sopenharmony_ci 492cb93a386Sopenharmony_ci * Ganesh is moving towards replacing GrContext with the GrDirectContext/GrRecordingContext 493cb93a386Sopenharmony_ci pair. GrDirectContexts have _direct_ access to the GPU and are very similar to the old 494cb93a386Sopenharmony_ci GrContext. GrRecordingContexts are less powerful contexts that lack GPU access but provided 495cb93a386Sopenharmony_ci context-like utilities during DDL recording. SkSurfaces and SkCanvas will now only return 496cb93a386Sopenharmony_ci GrRecordingContexts. Clients requiring context features that need GPU access can then 497cb93a386Sopenharmony_ci check (via GrRecordingContext::asDirectContext) if the available recording context is actually 498cb93a386Sopenharmony_ci a direct context. 499cb93a386Sopenharmony_ci 500cb93a386Sopenharmony_ci * Replace #defined values in SkString with equivalent constexprs. 501cb93a386Sopenharmony_ci http://review.skia.org/306160 502cb93a386Sopenharmony_ci 503cb93a386Sopenharmony_ci* * * 504cb93a386Sopenharmony_ci 505cb93a386Sopenharmony_ciMilestone 85 506cb93a386Sopenharmony_ci------------ 507cb93a386Sopenharmony_ci 508cb93a386Sopenharmony_ci * Added GrContext::oomed() which reports whether Skia has seen a GL_OUT_OF_MEMORY 509cb93a386Sopenharmony_ci error from Open GL [ES] or VK_ERROR_OUT_OF_*_MEMORY from Vulkan. 510cb93a386Sopenharmony_ci https://review.skia.org/298216 511cb93a386Sopenharmony_ci 512cb93a386Sopenharmony_ci * Add option on SkSurface::flush to pass in a GrBackendSurfaceMutableState which 513cb93a386Sopenharmony_ci we will set the gpu backend surface to be at the end of the flush. 514cb93a386Sopenharmony_ci https://review.skia.org/295567 515cb93a386Sopenharmony_ci 516cb93a386Sopenharmony_ci * Add GrContext function to set mutable state on a backend surface. Currently this 517cb93a386Sopenharmony_ci is only used for setting vulkan VkImage layout and queue family. 518cb93a386Sopenharmony_ci https://review.skia.org/293844 519cb93a386Sopenharmony_ci 520cb93a386Sopenharmony_ci * SkSurface factores that take GrBackendTexture or GrBackendRenderTarget now always 521cb93a386Sopenharmony_ci call the release proc (if provided) on failure. SkSurface::replaceBackendTexture 522cb93a386Sopenharmony_ci also calls the release proc on failure. 523cb93a386Sopenharmony_ci https://review.skia.org/293762 524cb93a386Sopenharmony_ci 525cb93a386Sopenharmony_ci * SkSurface::asyncRescaleAndReadPixels and SkSurfaceasyncRescaleAndReadPixelsYUV420 526cb93a386Sopenharmony_ci now require explicit GrContext submit to guarantee finite time before callback 527cb93a386Sopenharmony_ci is invoked. 528cb93a386Sopenharmony_ci https://review.skia.org/292840 529cb93a386Sopenharmony_ci 530cb93a386Sopenharmony_ci * Add VkSharingMode field to GrVkImageInfo. 531cb93a386Sopenharmony_ci https://review.skia.org/293559 532cb93a386Sopenharmony_ci 533cb93a386Sopenharmony_ci * Move SkBitmapRegionDecoder into client_utils/android. 534cb93a386Sopenharmony_ci 535cb93a386Sopenharmony_ci * SkCanvas.clear and SkCanvas.drawColor now accept SkColor4f in addition to SkColor. 536cb93a386Sopenharmony_ci 537cb93a386Sopenharmony_ci * Remove SkSurface::MakeFromBackendTextureAsRenderTarget. 538cb93a386Sopenharmony_ci This factory existed to work around issues with GL_TEXTURE_RECTANGLE that existed 539cb93a386Sopenharmony_ci in Chrome's command buffer. Those issues have since been resolved. Use 540cb93a386Sopenharmony_ci SkSurface::MakeFromBackendTexutre or SkSurface::MakeFromBackendRenderTarget instead. 541cb93a386Sopenharmony_ci https://review.skia.org/292719 542cb93a386Sopenharmony_ci 543cb93a386Sopenharmony_ci * Adds submittedProc callback to GrFlushInfo which will be called when the work 544cb93a386Sopenharmony_ci from the flush call is submitted to the GPU. This is specifically useful for knowing 545cb93a386Sopenharmony_ci when semahpores sent with the flush have been submitted and can be waiting on. 546cb93a386Sopenharmony_ci https://review.skia.org/291078 547cb93a386Sopenharmony_ci 548cb93a386Sopenharmony_ci * GrContext submit is now required to be called in order to send GPU work to the 549cb93a386Sopenharmony_ci actual GPU. The flush calls simply produces 3D API specific objects that are ready 550cb93a386Sopenharmony_ci to be submitted (e.g. command buffers). For the GL backend, the flush will still 551cb93a386Sopenharmony_ci send commands to the driver. However, clients should still assume the must call 552cb93a386Sopenharmony_ci submit which is where any glFlush that is need for sync objects will be called. There, 553cb93a386Sopenharmony_ci are flushAndSubmit() functions of GrContext, SkSurface, and SkImage that will act 554cb93a386Sopenharmony_ci like the previous flush() functions. This will flush the work and immediately call 555cb93a386Sopenharmony_ci submit. 556cb93a386Sopenharmony_ci https://review.skia.org/289033 557cb93a386Sopenharmony_ci 558cb93a386Sopenharmony_ci * Remove deprecated version of flush calls on GrContext and SkSurface. 559cb93a386Sopenharmony_ci https://review.skia.org/2290540 560cb93a386Sopenharmony_ci 561cb93a386Sopenharmony_ci * SkCanvas::drawVertices and drawPatch now support mapping an SkShader without explicit 562cb93a386Sopenharmony_ci texture coordinates. If they're not supplied, the local positions (vertex position or 563cb93a386Sopenharmony_ci patch cubic positions) will be directly used to sample the SkShader. 564cb93a386Sopenharmony_ci https://review.skia.org/290130 565cb93a386Sopenharmony_ci 566cb93a386Sopenharmony_ci* * * 567cb93a386Sopenharmony_ci 568cb93a386Sopenharmony_ciMilestone 84 569cb93a386Sopenharmony_ci------------ 570cb93a386Sopenharmony_ci 571cb93a386Sopenharmony_ci * Add api on GrContext, updateBackendTexture that will upload new data to a 572cb93a386Sopenharmony_ci GrBackendTexture. 573cb93a386Sopenharmony_ci https://review.skia.org/288909 574cb93a386Sopenharmony_ci 575cb93a386Sopenharmony_ci * Add GrContext getter to SkSurface. 576cb93a386Sopenharmony_ci https://review.skia.org/289479 577cb93a386Sopenharmony_ci 578cb93a386Sopenharmony_ci * Deprecate GrContext and SkSurface flush() call and replace ith with flushAndSubmit(). 579cb93a386Sopenharmony_ci This only effects the default flush call that takes no parameters. 580cb93a386Sopenharmony_ci https://review.skia.org/289478 581cb93a386Sopenharmony_ci 582cb93a386Sopenharmony_ci * GrContext::createBackendTexture functions that initialize the texture no longer 583cb93a386Sopenharmony_ci guarantee that all the data has been uploaded and the gpu is done with the texture. 584cb93a386Sopenharmony_ci Instead the client can assume the upload work has been submitted to the gpu and they 585cb93a386Sopenharmony_ci must wait for that work to finish before deleting the texture. This can be done via 586cb93a386Sopenharmony_ci their own synchronization or by passing in a finish proc into the create calls which 587cb93a386Sopenharmony_ci will be called when it is safe to delete the texture (at least in terms of work 588cb93a386Sopenharmony_ci done during the create). 589cb93a386Sopenharmony_ci https://review.skia.org/286517 590cb93a386Sopenharmony_ci 591cb93a386Sopenharmony_ci * Remove unused SkMaskFilter helpers: compbine, compose 592cb93a386Sopenharmony_ci Note: shadermaskfilter will likely be removed next (clipShader should serve) 593cb93a386Sopenharmony_ci 594cb93a386Sopenharmony_ci * Add back SkCanvas::kPreserveLCDText_SaveLayerFlag to indicate that saveLayer() 595cb93a386Sopenharmony_ci will preserve LCD-text. All text in the layer must be drawn on opaque background 596cb93a386Sopenharmony_ci to ensure correct rendering. 597cb93a386Sopenharmony_ci 598cb93a386Sopenharmony_ci * Add the new directory client_utils/ for code that is specific to a single client and 599cb93a386Sopenharmony_ci should be considered separate from Skia proper. Move SkFrontBufferedStream into the 600cb93a386Sopenharmony_ci subdir android/. 601cb93a386Sopenharmony_ci 602cb93a386Sopenharmony_ci * SkBitmap and SkPixmap's erase() methods now treat their color parameters 603cb93a386Sopenharmony_ci consistently with the rest of Skia, with all SkColors and any untagged 604cb93a386Sopenharmony_ci SkColor4fs interpreted as sRGB, not as a color in the bitmap's color space. 605cb93a386Sopenharmony_ci SkPixmap::erase(SkColor4f) now takes an SkColorSpace, so you can pass 606cb93a386Sopenharmony_ci pixmap.colorSpace() if you want the old behavior. 607cb93a386Sopenharmony_ci 608cb93a386Sopenharmony_ci * SkCamera.h and SkMatrix44.h are DEPRECATED. 609cb93a386Sopenharmony_ci Use SkM44 if you want to have 3d transformations. 610cb93a386Sopenharmony_ci 611cb93a386Sopenharmony_ci * Changed Dilate and Erode image filters to take SkScalar for radius instead of int. While 612cb93a386Sopenharmony_ci the image filters themselves are defined in terms of discrete pixels, the radii provided by 613cb93a386Sopenharmony_ci the user are mapped through the CTM so taking ints forced over discretization. After mapping 614cb93a386Sopenharmony_ci through the CTM the radii are now rounded to pixels. 615cb93a386Sopenharmony_ci https://review.skia.org/281731 616cb93a386Sopenharmony_ci https://review.skia.org/282636 617cb93a386Sopenharmony_ci 618cb93a386Sopenharmony_ci * Updated the contract of GrContext and SkSurface flush calls in regards to semaphores. Made it 619cb93a386Sopenharmony_ci clear that the caller is responsible for deleting any initialized semaphores after the flush 620cb93a386Sopenharmony_ci call regardless if we were able to submit them or not. Also, allows skia to only submit a 621cb93a386Sopenharmony_ci subset of the requested semaphores if we failed to create some. 622cb93a386Sopenharmony_ci https://review.skia.org/282265 623cb93a386Sopenharmony_ci 624cb93a386Sopenharmony_ci 625cb93a386Sopenharmony_ci * SkCanvas::drawVertices will now always fill the triangles specified by the vertices. Previously, 626cb93a386Sopenharmony_ci vertices with no colors and no (texture coordinates or shader) would be drawn in wireframe. 627cb93a386Sopenharmony_ci https://review.skia.org/282043 628cb93a386Sopenharmony_ci 629cb93a386Sopenharmony_ci* * * 630cb93a386Sopenharmony_ci 631cb93a386Sopenharmony_ciMilestone 83 632cb93a386Sopenharmony_ci------------ 633cb93a386Sopenharmony_ci 634cb93a386Sopenharmony_ci * Remove localmatrix option from SkShaders::[Blend, Lerp] 635cb93a386Sopenharmony_ci 636cb93a386Sopenharmony_ci * Fill out Direct3D parameters for backend textures and backend rendertargets. 637cb93a386Sopenharmony_ci 638cb93a386Sopenharmony_ci * SkImage::makeTextureImage() takes an optional SkBudgeted param 639cb93a386Sopenharmony_ci 640cb93a386Sopenharmony_ci * Made non-GL builds of GPU backend more robust. 641cb93a386Sopenharmony_ci https://review.skia.org/277456 642cb93a386Sopenharmony_ci 643cb93a386Sopenharmony_ci * MoltenVK support removed. Use Metal backend instead. 644cb93a386Sopenharmony_ci https://review.skia.org/277612 645cb93a386Sopenharmony_ci 646cb93a386Sopenharmony_ci* * * 647cb93a386Sopenharmony_ci 648cb93a386Sopenharmony_ciMilestone 82 649cb93a386Sopenharmony_ci------------ 650cb93a386Sopenharmony_ci 651cb93a386Sopenharmony_ci * Removed drawBitmap and related functions from SkDevice; all public drawBitmap functions on 652cb93a386Sopenharmony_ci SkCanvas automatically wrap the bitmap in an SkImage and call the equivalent drawImage function. 653cb93a386Sopenharmony_ci Drawing mutable SkBitmaps will now incur a mandatory copy. Switch to using SkImage directly or 654cb93a386Sopenharmony_ci mark the bitmap as immutable before drawing. 655cb93a386Sopenharmony_ci 656cb93a386Sopenharmony_ci * Removed "volatile" flag from SkVertices. All SkVertices objects are assumed to be 657cb93a386Sopenharmony_ci volatile (the previous default behavior). 658cb93a386Sopenharmony_ci 659cb93a386Sopenharmony_ci * Removed exotic legacy bitmap functions from SkCanvas (drawBitmapLattic, drawBitmapNine); the 660cb93a386Sopenharmony_ci exotic SkImage functions still exist. 661cb93a386Sopenharmony_ci 662cb93a386Sopenharmony_ci * Make it possible to selectively turn on/off individual encoders/decoders, 663cb93a386Sopenharmony_ci using skia_use_(libpng/libjpeg_turbo/libwebp)(decode/encode). 664cb93a386Sopenharmony_ci 665cb93a386Sopenharmony_ci * Removed GrGpuResource, GrSurface, and GrTexture from public api. These were not 666cb93a386Sopenharmony_ci meant to be public, and we now can move them into src. Also removed getTexture 667cb93a386Sopenharmony_ci function from SkImage.h 668cb93a386Sopenharmony_ci 669cb93a386Sopenharmony_ci * Removed Bones from SkVertices 670cb93a386Sopenharmony_ci 671cb93a386Sopenharmony_ci * Added a field to GrContextOptions that controls whether GL errors are checked after 672cb93a386Sopenharmony_ci GL calls that allocate textures, etc. It also controls checking for shader compile 673cb93a386Sopenharmony_ci success, and program linking success. 674cb93a386Sopenharmony_ci 675cb93a386Sopenharmony_ci * Made SkDeferredDisplayList.h officially part of the public API (i.e., moved it to 676cb93a386Sopenharmony_ci include/core). Also added a ProgramIterator to SkDeferredDisplayList which allows 677cb93a386Sopenharmony_ci clients to pre-compile some of the shaders the DDL requires. 678cb93a386Sopenharmony_ci 679cb93a386Sopenharmony_ci * Added two new helper methods to SkSurfaceCharacterization: createBackendFormat and 680cb93a386Sopenharmony_ci createFBO0. These make it easier for clients to create new surface characterizations that 681cb93a386Sopenharmony_ci differ only a little from an existing surface characterization. 682cb93a386Sopenharmony_ci 683cb93a386Sopenharmony_ci * Removed SkTMax and SkTMin. 684cb93a386Sopenharmony_ci * Removed SkTClamp and SkClampMax. 685cb93a386Sopenharmony_ci * Removed SkScalarClampMax and SkScalarPin. 686cb93a386Sopenharmony_ci * Removed SkMax32 and SkMin32. 687cb93a386Sopenharmony_ci * Removed SkMaxScalar and SkMinScalar. 688cb93a386Sopenharmony_ci 689cb93a386Sopenharmony_ci * SkColorSetA now warns if the result is unused. 690cb93a386Sopenharmony_ci 691cb93a386Sopenharmony_ci * An SkImageInfo with a null SkColorSpace passed to SkCodec::getPixels() and 692cb93a386Sopenharmony_ci related calls is treated as a request to do no color correction at decode 693cb93a386Sopenharmony_ci time. 694cb93a386Sopenharmony_ci 695cb93a386Sopenharmony_ci * Add new APIs to add attributes to document structure node when 696cb93a386Sopenharmony_ci creating a tagged PDF. 697cb93a386Sopenharmony_ci 698cb93a386Sopenharmony_ci * Remove CGFontRef parameter from SkCreateTypefaceFromCTFont. 699cb93a386Sopenharmony_ci Use CTFontManagerCreateFontDescriptorFromData instead of 700cb93a386Sopenharmony_ci CGFontCreateWithDataProvider to create CTFonts to avoid memory use issues. 701cb93a386Sopenharmony_ci 702cb93a386Sopenharmony_ci * Added SkCodec:: and SkAndroidCodec::getICCProfile for reporting the native 703cb93a386Sopenharmony_ci ICC profile of an encoded image, even if it doesn't map to an SkColorSpace. 704cb93a386Sopenharmony_ci 705cb93a386Sopenharmony_ci * SkSurface::ReplaceBackendTexture takes ContentChangeMode as a parameter, 706cb93a386Sopenharmony_ci which allow callers to specify whether retain a copy of the current content. 707cb93a386Sopenharmony_ci 708cb93a386Sopenharmony_ci * Enforce the existing documentation in SkCanvas::saveLayer that it ignores 709cb93a386Sopenharmony_ci any mask filter on the restore SkPaint. The 'coverage' of a layer is 710cb93a386Sopenharmony_ci ill-defined, and masking should be handled by pre-clipping or using the 711cb93a386Sopenharmony_ci auxiliary clip mask image of the SaveLayerRec. 712cb93a386Sopenharmony_ci 713cb93a386Sopenharmony_ci* * * 714cb93a386Sopenharmony_ci 715cb93a386Sopenharmony_ciMilestone 81 716cb93a386Sopenharmony_ci------------ 717cb93a386Sopenharmony_ci 718cb93a386Sopenharmony_ci * Added support for GL_NV_fence extension. 719cb93a386Sopenharmony_ci 720cb93a386Sopenharmony_ci * Make SkImageInfo::validRowBytes require rowBytes to be pixel aligned. This 721cb93a386Sopenharmony_ci makes SkBitmap match the behavior of raster SkSurfaces in rejecting 722cb93a386Sopenharmony_ci non-aligned rowBytes. 723cb93a386Sopenharmony_ci 724cb93a386Sopenharmony_ci * Added an SkImage::MakeRasterFromCompressed entry point. Also updated 725cb93a386Sopenharmony_ci SkImage::MakeFromCompressed to decompress the compressed image data if 726cb93a386Sopenharmony_ci the GPU doesn't support the specified compression type (i.e., macOS Metal 727cb93a386Sopenharmony_ci doesn't support BC1_RGB8_UNORM so such compressed images will always be 728cb93a386Sopenharmony_ci decompressed on that platform). 729cb93a386Sopenharmony_ci 730cb93a386Sopenharmony_ci * Added support for BC1 RGBA compressed textures 731cb93a386Sopenharmony_ci 732cb93a386Sopenharmony_ci * Added CachingHint to SkImage::makeRasterImage 733cb93a386Sopenharmony_ci 734cb93a386Sopenharmony_ci * Added SkAnimatedImage::getCurrentFrame() 735cb93a386Sopenharmony_ci 736cb93a386Sopenharmony_ci * Add support to create an SkSurface from an MTKView, with delayed acquisition of 737cb93a386Sopenharmony_ci the MTLDrawable. 738cb93a386Sopenharmony_ci Entry point: SkSurface::MakeFromMTKView 739cb93a386Sopenharmony_ci 740cb93a386Sopenharmony_ci * Removed SkIRect::EmptyIRect(). Use SkIRect::MakeEmpty() instead. 741cb93a386Sopenharmony_ci https://review.skia.org/262382/ 742cb93a386Sopenharmony_ci 743cb93a386Sopenharmony_ci * Moved SkRuntimeEffect to public API. This is the new (experimental) interface to custom SkSL 744cb93a386Sopenharmony_ci shaders and color filters. 745cb93a386Sopenharmony_ci 746cb93a386Sopenharmony_ci * Added BC1 compressed format support. Metal and Vulkan seem to only support the BC 747cb93a386Sopenharmony_ci formats on desktop machines. 748cb93a386Sopenharmony_ci 749cb93a386Sopenharmony_ci * Added compressed format support for backend texture creation API. 750cb93a386Sopenharmony_ci This adds the following new entry points: 751cb93a386Sopenharmony_ci GrContext::compressedBackendFormat 752cb93a386Sopenharmony_ci GrContext::createCompressedBackendTexture 753cb93a386Sopenharmony_ci The latter method comes in variants that allow color-initialized and 754cb93a386Sopenharmony_ci compressed texture data initialized. 755cb93a386Sopenharmony_ci 756cb93a386Sopenharmony_ci * Added SkMatrix::MakeTrans(SkIVector) 757cb93a386Sopenharmony_ci https://review.skia.org/259804 758cb93a386Sopenharmony_ci 759cb93a386Sopenharmony_ci* * * 760cb93a386Sopenharmony_ci 761cb93a386Sopenharmony_ciMilestone 80 762cb93a386Sopenharmony_ci------------ 763cb93a386Sopenharmony_ci 764cb93a386Sopenharmony_ci * For Vulkan backend, we now require that the VkDevice, Queue, and Instance outlive 765cb93a386Sopenharmony_ci either the destruction or abandoning of the GrContext. Additionally, all 766cb93a386Sopenharmony_ci GrBackendTextures created via GrContext::createBackendTexture calls must be deleted 767cb93a386Sopenharmony_ci before destroying or abandoning the GrContext. 768cb93a386Sopenharmony_ci https://review.skia.org/257921 769cb93a386Sopenharmony_ci 770cb93a386Sopenharmony_ci * Removed SkSize& SkSize::operator=(const SkISize&) 771cb93a386Sopenharmony_ci https://review.skia.org/257880 772cb93a386Sopenharmony_ci 773cb93a386Sopenharmony_ci * SkISize width() and height() now constexpr 774cb93a386Sopenharmony_ci https://review.skia.org/257680 775cb93a386Sopenharmony_ci 776cb93a386Sopenharmony_ci * Added SkMatrix::MakeTrans(SkVector) and SkRect::makeOffset(SkVector). 777cb93a386Sopenharmony_ci https://review.skia.org/255782 778cb93a386Sopenharmony_ci 779cb93a386Sopenharmony_ci * Added SkImageInfo::MakeA8(SkISize) and added optional color space parameter to 780cb93a386Sopenharmony_ci SkImageInfo::MakeN32Premul(SkISize). 781cb93a386Sopenharmony_ci 782cb93a386Sopenharmony_ci * Added dimensions() and getFrameCount() to SkAnimatedImage 783cb93a386Sopenharmony_ci https://review.skia.org/253542 784cb93a386Sopenharmony_ci 785cb93a386Sopenharmony_ci * Removed SkMatrix44 version of toXYZD50 from SkColorSpace. Switched to skcms types in 786cb93a386Sopenharmony_ci transferFn, invTrasnferFn, and gamutTransformTo functions. 787cb93a386Sopenharmony_ci https://review.skia.org/252596 788cb93a386Sopenharmony_ci 789cb93a386Sopenharmony_ci * Removed rotation and YUV support from SkColorMatrix 790cb93a386Sopenharmony_ci https://review.skia.org/252188 791cb93a386Sopenharmony_ci 792cb93a386Sopenharmony_ci * Added kBT2020_SkYUVColorSpace. This is BT.2020's YCbCr conversion (non-constant-luminance). 793cb93a386Sopenharmony_ci https://review.skia.org/252160 794cb93a386Sopenharmony_ci 795cb93a386Sopenharmony_ci * Remove old async read pixels APIs 796cb93a386Sopenharmony_ci https://review.skia.org/251198 797cb93a386Sopenharmony_ci 798cb93a386Sopenharmony_ci * Expose SkBlendModeCoeff and SkBlendMode_AsCoeff for Porter-Duff blend modes. 799cb93a386Sopenharmony_ci https://review.skia.org/252600 800cb93a386Sopenharmony_ci 801cb93a386Sopenharmony_ci* * * 802cb93a386Sopenharmony_ci 803cb93a386Sopenharmony_ciMilestone 79 804cb93a386Sopenharmony_ci------------ 805cb93a386Sopenharmony_ci 806cb93a386Sopenharmony_ci * SkTextBlob::Iter to discover the glyph indices and typefaces in each run 807cb93a386Sopenharmony_ci https://skia-review.googlesource.com/246296 808cb93a386Sopenharmony_ci 809cb93a386Sopenharmony_ci * Added support for PQ and HLG transfer functions to SkColorSpace. 810cb93a386Sopenharmony_ci https://skia-review.googlesource.com/c/skia/+/249000 811cb93a386Sopenharmony_ci 812cb93a386Sopenharmony_ci * Added new api on GrContext ComputeImageSize. This replaces the hold static helper 813cb93a386Sopenharmony_ci ComputeTextureSize. 814cb93a386Sopenharmony_ci https://skia-review.googlesource.com/c/skia/+/247337 815cb93a386Sopenharmony_ci 816cb93a386Sopenharmony_ci * New versions of SkSurface async-rescale-and read APIs that allow client to extend 817cb93a386Sopenharmony_ci the lifetime of the result data. Old versions are deprecated. 818cb93a386Sopenharmony_ci https://review.skia.org/245457 819cb93a386Sopenharmony_ci 820cb93a386Sopenharmony_ci * Add SkColorInfo. It's dimensionless SkImageInfo. 821cb93a386Sopenharmony_ci https://review.skia.org/245261 822cb93a386Sopenharmony_ci 823cb93a386Sopenharmony_ci * Added SkPixmap-based createBackendTexture method to GrContext. This allows clients to create 824cb93a386Sopenharmony_ci backend resources (initialized with texture data) that Skia/Ganesh doesn't know about/track. 825cb93a386Sopenharmony_ci https://review.skia.org/244676 826cb93a386Sopenharmony_ci 827cb93a386Sopenharmony_ci * Add explicit src and dst colorspace parameters to SkColorFilter::filterColor4f() 828cb93a386Sopenharmony_ci https://review.skia.org/244882 829cb93a386Sopenharmony_ci 830cb93a386Sopenharmony_ci * Remove Vulkan/Metal float32 RGBA texture support 831cb93a386Sopenharmony_ci https://review.skia.org/244881 832cb93a386Sopenharmony_ci 833cb93a386Sopenharmony_ci * Add SkSurface::MakeFromCAMetalLayer 834cb93a386Sopenharmony_ci https://review.skia.org/242563 835cb93a386Sopenharmony_ci 836cb93a386Sopenharmony_ci * Added kAlpha_F16_SkColorType, kRG_F16_SkColorType and kRGBA_16161616_SkColorType. 837cb93a386Sopenharmony_ci This is intended to help support HDR YUV uses case (e.g., P010 and P016). As such, 838cb93a386Sopenharmony_ci the addition is focused on allowing creation of SkPixmaps and SkImages and not 839cb93a386Sopenharmony_ci SkSurfaces (i.e., who wants to render to render to these?) 840cb93a386Sopenharmony_ci https://review.skia.org/241357 841cb93a386Sopenharmony_ci 842cb93a386Sopenharmony_ci * Start to move nested SkPath types (e.g. Direction, Verb) up to root level in SkPathTypes.h 843cb93a386Sopenharmony_ci https://review.skia.org/241079 844cb93a386Sopenharmony_ci 845cb93a386Sopenharmony_ci * Remove isRectContour and ksNestedFillRects from public 846cb93a386Sopenharmony_ci https://review.skia.org/241078 847cb93a386Sopenharmony_ci 848cb93a386Sopenharmony_ci * Added kRG_88_SkColorType. This is intended to help support YUV uses case (e.g., NV12). 849cb93a386Sopenharmony_ci As such, the addition is focused on allowing creation of SkPixmaps and SkImages and not 850cb93a386Sopenharmony_ci SkSurfaces (i.e., who wants to render to RG?) 851cb93a386Sopenharmony_ci https://review.skia.org/239930 852cb93a386Sopenharmony_ci https://review.skia.org/235797 853cb93a386Sopenharmony_ci 854cb93a386Sopenharmony_ci * Make the size of program/pipeline caches configurable via 855cb93a386Sopenharmony_ci GrContextOptions::fRuntimeProgramCacheSize 856cb93a386Sopenharmony_ci https://review.skia.org/239756 857cb93a386Sopenharmony_ci 858cb93a386Sopenharmony_ci * Added kAlpha_16_SkColorType and kRG_1616_SkColorType. This is intended to help support HDR YUV 859cb93a386Sopenharmony_ci uses case (e.g., P010 and P016). As such, the addition is focused on allowing creation of 860cb93a386Sopenharmony_ci SkPixmaps and SkImages and not SkSurfaces (i.e., who wants to render to render to these?) 861cb93a386Sopenharmony_ci https://review.skia.org/239930 862cb93a386Sopenharmony_ci 863cb93a386Sopenharmony_ci * Add GrContext::precompileShader to allow up-front compilation of previously-cached shaders. 864cb93a386Sopenharmony_ci https://review.skia.org/239438 865cb93a386Sopenharmony_ci 866cb93a386Sopenharmony_ci* * * 867cb93a386Sopenharmony_ci 868cb93a386Sopenharmony_ciMilestone 78 869cb93a386Sopenharmony_ci------------ 870cb93a386Sopenharmony_ci 871cb93a386Sopenharmony_ci * SkDrawLooper is no longer supported in SkPaint or SkCanvas. 872cb93a386Sopenharmony_ci https://review.skia.org/230579 873cb93a386Sopenharmony_ci https://review.skia.org/231736 874cb93a386Sopenharmony_ci 875cb93a386Sopenharmony_ci * SkPath::Iter::next() now ignores its consumDegenerates bools. Those will so 876cb93a386Sopenharmony_ci go away entirely 877cb93a386Sopenharmony_ci https://review.skia.org/235104 878cb93a386Sopenharmony_ci 879cb93a386Sopenharmony_ci * SkImage: new factories: DecodeToRaster, DecodeToTexture 880cb93a386Sopenharmony_ci https://review.skia.org/234476 881cb93a386Sopenharmony_ci 882cb93a386Sopenharmony_ci * SkImageFilter API refactor started: 883cb93a386Sopenharmony_ci - Provide new factory API in include/effects/SkImageFilters 884cb93a386Sopenharmony_ci - Consolidated enum types to use SkTileMode and SkColorChannel 885cb93a386Sopenharmony_ci - Hide filter implementation classes 886cb93a386Sopenharmony_ci - Hide previously public functions on SkImageFilter that were intended for 887cb93a386Sopenharmony_ci internal use only 888cb93a386Sopenharmony_ci https://review.skia.org/230198 889cb93a386Sopenharmony_ci https://review.skia.org/230876 890cb93a386Sopenharmony_ci https://review.skia.org/231256 891cb93a386Sopenharmony_ci 892cb93a386Sopenharmony_ci * SkColorFilters::HSLAMatrix - new matrix color filter operating in HSLA 893cb93a386Sopenharmony_ci space. 894cb93a386Sopenharmony_ci https://review.skia.org/231736 895cb93a386Sopenharmony_ci 896cb93a386Sopenharmony_ci * Modify GrBackendFormat getters to not return internal pointers. Use an enum 897cb93a386Sopenharmony_ci class for GL formats. 898cb93a386Sopenharmony_ci https://review.skia.org/233160 899cb93a386Sopenharmony_ci 900cb93a386Sopenharmony_ci * Expose GrContext::dump() when SK_ENABLE_DUMP_GPU is defined. 901cb93a386Sopenharmony_ci https://review.skia.org/233557 902cb93a386Sopenharmony_ci 903cb93a386Sopenharmony_ci * Vulkan backend now supports YCbCr sampler for I420 Vulkan images that are 904cb93a386Sopenharmony_ci not backed by external images. 905cb93a386Sopenharmony_ci https://review.skia.org/233776 906cb93a386Sopenharmony_ci 907cb93a386Sopenharmony_ci * Add SkCodec::SelectionPolicy for distinguishing between decoding a still 908cb93a386Sopenharmony_ci image or an image sequence for a container format that has both (e.g. HEIF). 909cb93a386Sopenharmony_ci https://review.skia.org/232839 910cb93a386Sopenharmony_ci 911cb93a386Sopenharmony_ci * SkImage::makeTextureImage and SkImage::MakeCrossContextFromPixmap no longer 912cb93a386Sopenharmony_ci take an SkColorSpace parameter. It was unused. 913cb93a386Sopenharmony_ci https://review.skia.org/234579 914cb93a386Sopenharmony_ci https://review.skia.org/234912 915cb93a386Sopenharmony_ci 916cb93a386Sopenharmony_ci * SkImage::reinterpretColorSpace - to reinterpret image contents in a new 917cb93a386Sopenharmony_ci color space. 918cb93a386Sopenharmony_ci https://review.skia.org/234328 919cb93a386Sopenharmony_ci 920cb93a386Sopenharmony_ci * Removed SkImage::MakeCrossContextFromEncoded. 921cb93a386Sopenharmony_ci https://review.skia.org/234912 922cb93a386Sopenharmony_ci 923cb93a386Sopenharmony_ci * Add Metal support for GrFence, GrSemaphore, and GrBackendSemaphore 924cb93a386Sopenharmony_ci https://review.skia.org/233416 925cb93a386Sopenharmony_ci 926cb93a386Sopenharmony_ci * SkMallocPixelRef: remove MakeDirect and MakeWithProc from API. 927cb93a386Sopenharmony_ci https://review.skia.org/234660 928cb93a386Sopenharmony_ci 929cb93a386Sopenharmony_ci * Remove 4-parameter variant of SkRect::join() and intersect(), and 930cb93a386Sopenharmony_ci noemptycheck variants of intersect(). 931cb93a386Sopenharmony_ci https://review.skia.org/235832 932cb93a386Sopenharmony_ci https://review.skia.org/237142 933cb93a386Sopenharmony_ci 934cb93a386Sopenharmony_ci * Remove unused sk_sp comparison operators. 935cb93a386Sopenharmony_ci https://review.skia.org/236942 936cb93a386Sopenharmony_ci 937cb93a386Sopenharmony_ci * Add SkColor4f variant to experimental_DrawEdgeAAQuad for SkiaRenderer. 938cb93a386Sopenharmony_ci https://review.skia.org/237492 939cb93a386Sopenharmony_ci 940cb93a386Sopenharmony_ci * Deprecated maxCount resource cache limit for Ganesh. 941cb93a386Sopenharmony_ci This hasn't been relevant for a long time. 942cb93a386Sopenharmony_ci 943cb93a386Sopenharmony_ci * Changed GrContextOptions' fDisallowGLSLBinaryCaching to fShaderCacheStrategy, 944cb93a386Sopenharmony_ci and allow caching SkSL. 945cb93a386Sopenharmony_ci https://review.skia.org/238856 946cb93a386Sopenharmony_ci 947cb93a386Sopenharmony_ci * Use GL_QCOM_TILED_RENDERING to explicitly discard stencil 948cb93a386Sopenharmony_ci 949cb93a386Sopenharmony_ci * Added RELEASE_NOTES.txt file 950cb93a386Sopenharmony_ci https://review.skia.org/229760 951cb93a386Sopenharmony_ci 952cb93a386Sopenharmony_ci * Implemented internal support for OpenGL tessellation. 953