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