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