1*c8dee2aaSAndroid Build Coastguard WorkerSkia Graphics Release Notes 2*c8dee2aaSAndroid Build Coastguard Worker 3*c8dee2aaSAndroid Build Coastguard WorkerThis file includes a list of high level updates for each milestone release. 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard WorkerMilestone 132 6*c8dee2aaSAndroid Build Coastguard Worker------------- 7*c8dee2aaSAndroid Build Coastguard Worker * A new `SkCodec` method has been added: `hasHighBitDepthEncodedData`. 8*c8dee2aaSAndroid Build Coastguard Worker * `GrGLInterface` completeness requirements are modified to support using timer queries when available in the GL context. 9*c8dee2aaSAndroid Build Coastguard Worker The interface must have relevant functions initialized on OpenGL 3.3 or with GL_EXT_timer_query or GL_ARB_timerquery, on OpenGL ES with 10*c8dee2aaSAndroid Build Coastguard Worker GL_EXT_disjoint_timer_query, and on WebGL with GL_EXT_disjoint_timer_query or GL_EXT_disjoint_timer_query_webgl2. 11*c8dee2aaSAndroid Build Coastguard Worker * `GrGLInterface` now expects functions that take two `GLuints` instead of one `GLuint64` for `glWaitSync` and `glClientWaitSync` 12*c8dee2aaSAndroid Build Coastguard Worker when building with Emscripten. `GrGLMakeAssembledWebGLInterface` binds directly to the `emscipten_gl*` functions declared in the `<webgl/*>` headers rather than the functions declared 13*c8dee2aaSAndroid Build Coastguard Worker in `GLES3/gl32.h` and `GLES3/gl2ext.h`. 14*c8dee2aaSAndroid Build Coastguard Worker * `SkPathEffect::DashType`, `SkPathEffect::DashInfo` and `SkPathEffect::asADash` have been removed from the public API. 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker* * * 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard WorkerMilestone 131 19*c8dee2aaSAndroid Build Coastguard Worker------------- 20*c8dee2aaSAndroid Build Coastguard Worker * `SkCanvas::SaveLayerRec` can optionally specify a tilemode to apply to backdrop 21*c8dee2aaSAndroid Build Coastguard Worker content when the new layer's effects would sample outside of the previous 22*c8dee2aaSAndroid Build Coastguard Worker layer's image. 23*c8dee2aaSAndroid Build Coastguard Worker * GrContextOptions::fSharpenMipmappedTextures has been restored. It is now enabled 24*c8dee2aaSAndroid Build Coastguard Worker by default but allows clients to disable this feature if desired. 25*c8dee2aaSAndroid Build Coastguard Worker 26*c8dee2aaSAndroid Build Coastguard Worker* * * 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard WorkerMilestone 130 29*c8dee2aaSAndroid Build Coastguard Worker------------- 30*c8dee2aaSAndroid Build Coastguard Worker * Add version of `SkAndroidCodec::getGainmapAndroidCodec` which returns an `SkAndroidCodec` instead 31*c8dee2aaSAndroid Build Coastguard Worker of an `SkStream`. Mark as deprecated the version that returns an `SkStream`. 32*c8dee2aaSAndroid Build Coastguard Worker * `SkColorFilter::filterColor` has been removed. Please use `SkColorFilter::filterColor4f` instead. 33*c8dee2aaSAndroid Build Coastguard Worker * SkFourByteTag has been moved to its own file: `include/core/SkFourByteTag.h` 34*c8dee2aaSAndroid Build Coastguard Worker * Ganesh files have been moved out of include/gpu/ into include/gpu/ganesh/. Shims have been left in place, but clients should migrate to the new paths. 35*c8dee2aaSAndroid Build Coastguard Worker * GR_GL_CUSTOM_SETUP_HEADER will be removed. Configuration in a client provided 36*c8dee2aaSAndroid Build Coastguard Worker SkUserConfig.h file (or defines set during compilation) are sufficient to affect 37*c8dee2aaSAndroid Build Coastguard Worker settings in GrGLConfig.h 38*c8dee2aaSAndroid Build Coastguard Worker * `GR_MAKE_BITFIELD_CLASS_OPS` and `GR_DECL_BITFIELD_CLASS_OPS_FRIENDS` have been removed 39*c8dee2aaSAndroid Build Coastguard Worker from the public API 40*c8dee2aaSAndroid Build Coastguard Worker * `SkMSec` has been removed from the public API, including `SkParse::FindMSec` 41*c8dee2aaSAndroid Build Coastguard Worker * A noop change to our SkSL runtime effect builder APIs. Moved make functions from subclasses 42*c8dee2aaSAndroid Build Coastguard Worker SkRuntimeShaderBuilder, SkRuntimeColorFilterBuilder, and SkRuntimeBlendBuilder to the base class 43*c8dee2aaSAndroid Build Coastguard Worker SkRuntimeEffectBuilder. 44*c8dee2aaSAndroid Build Coastguard Worker 45*c8dee2aaSAndroid Build Coastguard Worker* * * 46*c8dee2aaSAndroid Build Coastguard Worker 47*c8dee2aaSAndroid Build Coastguard WorkerMilestone 129 48*c8dee2aaSAndroid Build Coastguard Worker------------- 49*c8dee2aaSAndroid Build Coastguard Worker * The Dawn-specific constructors and methods on `skgpu::graphite::TextureInfo`, 50*c8dee2aaSAndroid Build Coastguard Worker `skgpu::graphite::BackendTexture`, have been deprecated and 51*c8dee2aaSAndroid Build Coastguard Worker moved to be functions in `DawnTypes.h` 52*c8dee2aaSAndroid Build Coastguard Worker * `SkImageFilters::DropShadow` and `SkImageFilters::DropShadowOnly` now accept 53*c8dee2aaSAndroid Build Coastguard Worker `SkColor4f` and `SkColorSpace` for the shadow color. 54*c8dee2aaSAndroid Build Coastguard Worker * `SkScalerContext::MakeRecAndEffects` now converts `SkFont::isEmbolden` to the `kEmbolden_Flag`. 55*c8dee2aaSAndroid Build Coastguard Worker It no longer automatically converts embolden requests into (more) stroking. 56*c8dee2aaSAndroid Build Coastguard Worker This can now (optionally) be done in `SkTypeface::onFilterRec` by calling the new `SkScalerContextRec::useStrokeForFakeBold()`. 57*c8dee2aaSAndroid Build Coastguard Worker * Skia no longer tests building against iOS 11. 58*c8dee2aaSAndroid Build Coastguard Worker The minimum deployment target is now iOS 12 as this is the minimum deplyment target for Xcode 15. 59*c8dee2aaSAndroid Build Coastguard Worker * The Vulkan-specific constructors and methods on `skgpu::graphite::TextureInfo`, 60*c8dee2aaSAndroid Build Coastguard Worker `skgpu::graphite::BackendTexture`, `skgpu::graphite::BackendSemaphore` have been deprecated and 61*c8dee2aaSAndroid Build Coastguard Worker moved to be functions in `VulkanGraphiteTypes.h` 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard Worker* * * 64*c8dee2aaSAndroid Build Coastguard Worker 65*c8dee2aaSAndroid Build Coastguard WorkerMilestone 128 66*c8dee2aaSAndroid Build Coastguard Worker------------- 67*c8dee2aaSAndroid Build Coastguard Worker * SkSL now properly reports an error if user code includes various GLSL reserved keywords. 68*c8dee2aaSAndroid Build Coastguard Worker Previously, Skia would correctly reject keywords that were included in "The OpenGL ES 69*c8dee2aaSAndroid Build Coastguard Worker Shading Language, Version 1.00," but did not detect reserved keywords added in more modern 70*c8dee2aaSAndroid Build Coastguard Worker GLSL versions. Instead, Skia would allow such code to compile during the construction of a 71*c8dee2aaSAndroid Build Coastguard Worker runtime effect, but actually rendering the effect using a modern version of OpenGL would 72*c8dee2aaSAndroid Build Coastguard Worker silently fail (or assert) due to the presence of the reserved name in the the code. 73*c8dee2aaSAndroid Build Coastguard Worker 74*c8dee2aaSAndroid Build Coastguard Worker Examples of reserved names which SkSL will now reject include `dmat3x3`, `atomic_uint`, 75*c8dee2aaSAndroid Build Coastguard Worker `isampler2D`, or `imageCubeArray`. 76*c8dee2aaSAndroid Build Coastguard Worker 77*c8dee2aaSAndroid Build Coastguard Worker For a more thorough list of reserved keywords, see the "3.6 Keywords" section of the 78*c8dee2aaSAndroid Build Coastguard Worker OpenGL Shading Language documentation. 79*c8dee2aaSAndroid Build Coastguard Worker * The following symbols (and their files) have been deleted in favor of their 80*c8dee2aaSAndroid Build Coastguard Worker GPU-backend-agnostic form: 81*c8dee2aaSAndroid Build Coastguard Worker - `GrVkBackendContext` -> `skgpu::VulkanBackendContext` 82*c8dee2aaSAndroid Build Coastguard Worker - `GrVkExtensions` -> `skgpu::VulkanExtensions` 83*c8dee2aaSAndroid Build Coastguard Worker - `GrVkMemoryAllocator` = `skgpu::VulkanMemoryAllocator` 84*c8dee2aaSAndroid Build Coastguard Worker - `GrVkBackendMemory` = `skgpu::VulkanBackendMemory` 85*c8dee2aaSAndroid Build Coastguard Worker - `GrVkAlloc` = `skgpu::VulkanAlloc` 86*c8dee2aaSAndroid Build Coastguard Worker - `GrVkYcbcrConversionInfo` = `skgpu::VulkanYcbcrConversionInfo` 87*c8dee2aaSAndroid Build Coastguard Worker - `GrVkGetProc` = `skgpu::VulkanGetProc` 88*c8dee2aaSAndroid Build Coastguard Worker * The Metal-specific constructors and methods on `skgpu::graphite::TextureInfo`, 89*c8dee2aaSAndroid Build Coastguard Worker `skgpu::graphite::BackendTexture`, `skgpu::graphite::BackendSemaphore` have been deprecated and 90*c8dee2aaSAndroid Build Coastguard Worker moved to be functions in `MtlGraphiteTypes.h` 91*c8dee2aaSAndroid Build Coastguard Worker * SkImage now has a method makeScaled(...) which returns a scaled version of 92*c8dee2aaSAndroid Build Coastguard Worker the image, retaining its original "domain" 93*c8dee2aaSAndroid Build Coastguard Worker - raster stays raster 94*c8dee2aaSAndroid Build Coastguard Worker - ganesh stays ganesh 95*c8dee2aaSAndroid Build Coastguard Worker - graphite stays graphite 96*c8dee2aaSAndroid Build Coastguard Worker - lazy images become raster (just like with makeSubset) 97*c8dee2aaSAndroid Build Coastguard Worker 98*c8dee2aaSAndroid Build Coastguard Worker* * * 99*c8dee2aaSAndroid Build Coastguard Worker 100*c8dee2aaSAndroid Build Coastguard WorkerMilestone 127 101*c8dee2aaSAndroid Build Coastguard Worker------------- 102*c8dee2aaSAndroid Build Coastguard Worker * SkSL now properly recognizes the types `uvec2`, `uvec3` or `uvec4`. 103*c8dee2aaSAndroid Build Coastguard Worker 104*c8dee2aaSAndroid Build Coastguard Worker Unsigned types are not supported in Runtime Effects, as they did not exist in GLSL ES2; however, 105*c8dee2aaSAndroid Build Coastguard Worker SkSL should still recognize these typenames and reject them if they are used in a program. 106*c8dee2aaSAndroid Build Coastguard Worker That is, we should not allow `uvec3` to be used as a variable or function name. We will now properly 107*c8dee2aaSAndroid Build Coastguard Worker detect and reject this as an error. 108*c8dee2aaSAndroid Build Coastguard Worker * The following deprecated fields have been removed from `GrVkBackendContext`: 109*c8dee2aaSAndroid Build Coastguard Worker - `fMinAPIVersion`. Use `fMaxAPIVersion` instead. 110*c8dee2aaSAndroid Build Coastguard Worker - `fInstanceVersion`. Use `fMaxAPIVersion` instead. 111*c8dee2aaSAndroid Build Coastguard Worker - `fFeatures`. Use `fDeviceFeatures` or `fDeviceFeatures2` instead. 112*c8dee2aaSAndroid Build Coastguard Worker - `fOwnsInstanceAndDevice`. No replacement, as it had no effect. 113*c8dee2aaSAndroid Build Coastguard Worker 114*c8dee2aaSAndroid Build Coastguard Worker `GrVkBackendContext` is now an alias for `skgpu::VulkanBackendContext`. Clients should use the latter, as the former will be eventually removed. 115*c8dee2aaSAndroid Build Coastguard Worker * SkShaderMaskFilters and SkTableMaskFilters have been deprecated. They will be removed entirely in an upcoming Skia release. 116*c8dee2aaSAndroid Build Coastguard Worker 117*c8dee2aaSAndroid Build Coastguard Worker* * * 118*c8dee2aaSAndroid Build Coastguard Worker 119*c8dee2aaSAndroid Build Coastguard WorkerMilestone 126 120*c8dee2aaSAndroid Build Coastguard Worker------------- 121*c8dee2aaSAndroid Build Coastguard Worker * Skia's internal array class (`skia_private::TArray<T>`) now protects its unused capacity when 122*c8dee2aaSAndroid Build Coastguard Worker [Address Sanitizer (ASAN)](https://clang.llvm.org/docs/AddressSanitizer.html) is enabled. Code which 123*c8dee2aaSAndroid Build Coastguard Worker inadvertently writes past the end of a Skia internal structure is now more likely to trigger an ASAN 124*c8dee2aaSAndroid Build Coastguard Worker error. 125*c8dee2aaSAndroid Build Coastguard Worker * `SkFloat2Bits` and `SkBits2Float` have been removed from the Skia public headers. These were always 126*c8dee2aaSAndroid Build Coastguard Worker private API (since they lived in `/include/private`) but they had leaked into some example code, and 127*c8dee2aaSAndroid Build Coastguard Worker tended to be available once a handful of Skia headers were #included. 128*c8dee2aaSAndroid Build Coastguard Worker * SkSL now allows the ++ and -- operators on vector and matrix variables. 129*c8dee2aaSAndroid Build Coastguard Worker 130*c8dee2aaSAndroid Build Coastguard Worker Previously, attempting to use these operators on a vector or matrix would lead to an error. This was 131*c8dee2aaSAndroid Build Coastguard Worker a violation of the GLSL expression rules (5.9): "The arithmetic unary operators negate (-), post- 132*c8dee2aaSAndroid Build Coastguard Worker and pre-increment and decrement (-- and ++) operate on integer or floating-point values (including 133*c8dee2aaSAndroid Build Coastguard Worker vectors and matrices)." 134*c8dee2aaSAndroid Build Coastguard Worker * `SkScalarIsFinite`, `SkScalarsAreFinite`, and `SkScalarIsNaN` have been removed from the Skia API. 135*c8dee2aaSAndroid Build Coastguard Worker These calls can be replaced with the functionally-equivalent `std::isfinite` and `std::isnan`. 136*c8dee2aaSAndroid Build Coastguard Worker * Clients can explicitly make a Ganesh GL backend for iOS with 137*c8dee2aaSAndroid Build Coastguard Worker `GrGLInterfaces::MakeIOS` from `include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h` 138*c8dee2aaSAndroid Build Coastguard Worker * Clients can explicitly make a Ganesh GL backend for Mac with 139*c8dee2aaSAndroid Build Coastguard Worker `GrGLInterfaces::MakeMac` from `include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h` 140*c8dee2aaSAndroid Build Coastguard Worker * The following headers have been relocated (notice "ganesh" in the filepath): 141*c8dee2aaSAndroid Build Coastguard Worker - include/gpu/gl/egl/GrGLMakeEGLInterface.h -> include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h 142*c8dee2aaSAndroid Build Coastguard Worker - include/gpu/gl/glx/GrGLMakeGLXInterface.h -> include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h 143*c8dee2aaSAndroid Build Coastguard Worker - include/gpu/gl/epoxy/GrGLMakeEpoxyEGLInterface.h -> include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h 144*c8dee2aaSAndroid Build Coastguard Worker 145*c8dee2aaSAndroid Build Coastguard Worker* * * 146*c8dee2aaSAndroid Build Coastguard Worker 147*c8dee2aaSAndroid Build Coastguard WorkerMilestone 125 148*c8dee2aaSAndroid Build Coastguard Worker------------- 149*c8dee2aaSAndroid Build Coastguard Worker * The size of the GPU memory cache budget can now be queried using member `maxBudgetedBytes` of `skgpu::graphite::Context` and `skgpu::graphite::Recorder`. 150*c8dee2aaSAndroid Build Coastguard Worker * Added `skgpu::graphite::Context::maxTextureSize()`, which exposes the maximum 151*c8dee2aaSAndroid Build Coastguard Worker texture dimension supported by the underlying backend. 152*c8dee2aaSAndroid Build Coastguard Worker * Using a MTLBinaryArchive to pre-load the MSL shader cache is no longer 153*c8dee2aaSAndroid Build Coastguard Worker supported in Ganesh, and the fBinaryArchive member of GrMtlBackendContext 154*c8dee2aaSAndroid Build Coastguard Worker has been removed. 155*c8dee2aaSAndroid Build Coastguard Worker * The `sksl-minify` tool can now eliminate unnecessary braces. For instance, 156*c8dee2aaSAndroid Build Coastguard Worker given the following SkSL code: 157*c8dee2aaSAndroid Build Coastguard Worker 158*c8dee2aaSAndroid Build Coastguard Worker ``` 159*c8dee2aaSAndroid Build Coastguard Worker if (condition) { 160*c8dee2aaSAndroid Build Coastguard Worker return 1; 161*c8dee2aaSAndroid Build Coastguard Worker } else { 162*c8dee2aaSAndroid Build Coastguard Worker return 2; 163*c8dee2aaSAndroid Build Coastguard Worker } 164*c8dee2aaSAndroid Build Coastguard Worker ``` 165*c8dee2aaSAndroid Build Coastguard Worker 166*c8dee2aaSAndroid Build Coastguard Worker The minifier will now emit: 167*c8dee2aaSAndroid Build Coastguard Worker 168*c8dee2aaSAndroid Build Coastguard Worker ``` 169*c8dee2aaSAndroid Build Coastguard Worker if(a)return 1;else return 2; 170*c8dee2aaSAndroid Build Coastguard Worker ``` 171*c8dee2aaSAndroid Build Coastguard Worker * Added `SkBitmap::setColorSpace`. This API allows the colorspace of an existing 172*c8dee2aaSAndroid Build Coastguard Worker `SkBitmap` to be reinterpreted. The pixel data backing the bitmap will be left 173*c8dee2aaSAndroid Build Coastguard Worker as-is. The colorspace will be honored when the bitmap is accessed via APIs which 174*c8dee2aaSAndroid Build Coastguard Worker support colorspace conversion, like `readPixels`. 175*c8dee2aaSAndroid Build Coastguard Worker * `SkDrawLooper` has been removed completely from Skia. It was previously deprecated. 176*c8dee2aaSAndroid Build Coastguard Worker * Metal-specific constructors and methods have been removed from `GrBackendFormat`, 177*c8dee2aaSAndroid Build Coastguard Worker `GrBackendTexture`, and `GrBackendRenderTarget` and moved to 178*c8dee2aaSAndroid Build Coastguard Worker `include/gpu/ganesh/mtl/GrMtlBackendSurface.h` 179*c8dee2aaSAndroid Build Coastguard Worker * By default, //modules/skottie and //modules/svg will use primitive text shaping. 180*c8dee2aaSAndroid Build Coastguard Worker Clients that wish to use harfbuzz/icu for more correct shaping will need to 181*c8dee2aaSAndroid Build Coastguard Worker use one of the builders and call `setTextShapingFactory` with a newly-created 182*c8dee2aaSAndroid Build Coastguard Worker `SkShapers::Factory` implementation during construction. 183*c8dee2aaSAndroid Build Coastguard Worker 184*c8dee2aaSAndroid Build Coastguard Worker For ease of configuration, `modules/skshaper/utils/FactoryHelpers.h` can be used 185*c8dee2aaSAndroid Build Coastguard Worker to provide this, but only if the client is depending on the correct skshaper 186*c8dee2aaSAndroid Build Coastguard Worker and skunicode modules (which should set defines such as `SK_SHAPER_HARFBUZZ_AVAILABLE`). 187*c8dee2aaSAndroid Build Coastguard Worker 188*c8dee2aaSAndroid Build Coastguard Worker For example `builder.setTextShapingFactory(SkShapers::BestAvailable())` will use 189*c8dee2aaSAndroid Build Coastguard Worker Harfbuzz or CoreText for shaping if they were compiled in to the clients binary. 190*c8dee2aaSAndroid Build Coastguard Worker 191*c8dee2aaSAndroid Build Coastguard Worker* * * 192*c8dee2aaSAndroid Build Coastguard Worker 193*c8dee2aaSAndroid Build Coastguard WorkerMilestone 124 194*c8dee2aaSAndroid Build Coastguard Worker------------- 195*c8dee2aaSAndroid Build Coastguard Worker * `SkColorFilter::filterColor` is now deprecated and will eventually be removed in favor of `filterColor4f`. 196*c8dee2aaSAndroid Build Coastguard Worker * The Perlin noise shaders (`MakeFractalNoise` and `MakeTurbulence`) will now properly rotate when 197*c8dee2aaSAndroid Build Coastguard Worker transformed. On raster surfaces, the performance of Perlin noise has also been significantly 198*c8dee2aaSAndroid Build Coastguard Worker improved. 199*c8dee2aaSAndroid Build Coastguard Worker * Graphite's `SkImages::WrapTexture` now takes an additional parameter that indicates whether 200*c8dee2aaSAndroid Build Coastguard Worker a mipmapped texture should be used as is or whether Graphite should generate the upper level 201*c8dee2aaSAndroid Build Coastguard Worker contents from the base level contents. 202*c8dee2aaSAndroid Build Coastguard Worker * `GrBackendSemaphore::initMetal`, `GrBackendSemaphore::mtlSemaphore`, and 203*c8dee2aaSAndroid Build Coastguard Worker `GrBackendSemaphore::mtlValue` have been replaced with `GrBackendSemaphores::MakeMtl`, 204*c8dee2aaSAndroid Build Coastguard Worker `GrBackendSemaphores::GetMtlHandle`, and `GrBackendSemaphores::GetMtlValue`, defined in 205*c8dee2aaSAndroid Build Coastguard Worker `include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h` 206*c8dee2aaSAndroid Build Coastguard Worker * `GrDirectContext::MakeMetal` has been moved to `GrDirectContexts::MakeMetal`, located in 207*c8dee2aaSAndroid Build Coastguard Worker `include/gpu/ganesh/mtl/GrMtlDirectContext.h`. The APIs that passed in void* have been removed 208*c8dee2aaSAndroid Build Coastguard Worker in that change, so clients who use those need to create a `GrMtlBackendContext` themselves. 209*c8dee2aaSAndroid Build Coastguard Worker 210*c8dee2aaSAndroid Build Coastguard Worker `include/gpu/mtl/GrMtlTypes.h` and `include/gpu/mtl/GrMtlBackendContext.h` have been relocated to 211*c8dee2aaSAndroid Build Coastguard Worker `include/gpu/ganesh/mtl/GrMtlTypes.h` and `include/gpu/ganesh/mtl/GrMtlBackendContext.h` 212*c8dee2aaSAndroid Build Coastguard Worker respectively. 213*c8dee2aaSAndroid Build Coastguard Worker * Added `SkCodecs::DeferredImage` which is similar to `SkImages::DeferredFromEncodedData` except it 214*c8dee2aaSAndroid Build Coastguard Worker allows the caller to pass in a `SkCodec` directly instead of depending on compiled-in codecs. 215*c8dee2aaSAndroid Build Coastguard Worker * The following SkShaper functions have been moved or deleted: 216*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakePrimitive() -> SkShapers::Primitive() 217*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeShaperDrivenWrapper() -> SkShapers::HB::ShaperDrivenWrapper() 218*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeShapeThenWrap() -> SkShapers::HB::ShapeThenWrap() 219*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeShapeDontWrapOrReorder() -> SkShapers::HB::ShapeDontWrapOrReorder() 220*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeCoreText() -> SkShapers::CT::CoreText() 221*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::Make() -> deleted, use one of the above directly, 222*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeSkUnicodeBidiRunIterator() -> SkShapers::unicode::BidiRunIterator() 223*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeBiDiRunIterator() -> deleted, use SkShapers::unicode::BidiRunIterator() or SkShapers::TrivialBiDiRunIterator() 224*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeIcuBiDiRunIterator() -> deleted, use SkShapers::unicode::BidiRunIterator() 225*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeSkUnicodeHbScriptRunIterator() -> SkShapers::HB::ScriptRunIterator() 226*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeHbIcuScriptRunIterator() -> SkShapers::HB::ScriptRunIterator() 227*c8dee2aaSAndroid Build Coastguard Worker - SkShaper::MakeScriptRunIterator() -> deleted, use SkShapers::HB::ScriptRunIterator() or SkShapers::TrivialScriptRunIterator 228*c8dee2aaSAndroid Build Coastguard Worker 229*c8dee2aaSAndroid Build Coastguard Worker Additionally, two `SkShaper::shape` method overloads have been removed - clients now need to 230*c8dee2aaSAndroid Build Coastguard Worker specify all 10 arguments (although it is common to pass in nullptr for features). 231*c8dee2aaSAndroid Build Coastguard Worker * `SkStream::getData()` has been added as a virtual. Subclasses can implement this if it is efficient 232*c8dee2aaSAndroid Build Coastguard Worker to turn the underlying contents into an SkData (e.g. SkStreamMemory). `SkStreamMemory::asData()` 233*c8dee2aaSAndroid Build Coastguard Worker has been renamed to `getData()` as a result of this change and will be removed in a future release. 234*c8dee2aaSAndroid Build Coastguard Worker 235*c8dee2aaSAndroid Build Coastguard Worker* * * 236*c8dee2aaSAndroid Build Coastguard Worker 237*c8dee2aaSAndroid Build Coastguard WorkerMilestone 123 238*c8dee2aaSAndroid Build Coastguard Worker------------- 239*c8dee2aaSAndroid Build Coastguard Worker * When `SkCodec::SelectionPolicy::kPreferStillImage` is passed to `SkWuffsCodec`/`SkGifDecoder` 240*c8dee2aaSAndroid Build Coastguard Worker creation, and the input stream cannot be rewound, the resulting `SkWuffsCodec` will no longer copy 241*c8dee2aaSAndroid Build Coastguard Worker the stream. Because it will now have a non-seekable stream, it no longer supports `getFrameCount`, 242*c8dee2aaSAndroid Build Coastguard Worker which will now simply report `1`, or `getFrameInfo`, which is useful only for animation anyway. 243*c8dee2aaSAndroid Build Coastguard Worker Chromium uses `kPreferStillImage`, simply because it is the default, but will not be affected by 244*c8dee2aaSAndroid Build Coastguard Worker this change because it always supplies a seekable stream. 245*c8dee2aaSAndroid Build Coastguard Worker * A `kDefault_Flag = 0` value has been added to the `SkSurfaceProps::Flags` enum. This is just a 246*c8dee2aaSAndroid Build Coastguard Worker self-documenting zero-value that aims to improve code readability, e.g.: 247*c8dee2aaSAndroid Build Coastguard Worker 248*c8dee2aaSAndroid Build Coastguard Worker ``` 249*c8dee2aaSAndroid Build Coastguard Worker // The two lines below are equivalent. 250*c8dee2aaSAndroid Build Coastguard Worker 251*c8dee2aaSAndroid Build Coastguard Worker SkSurfaceProps(/* surfaceFlags= */ 0, kRGB_H_SkPixelGeometry); 252*c8dee2aaSAndroid Build Coastguard Worker 253*c8dee2aaSAndroid Build Coastguard Worker SkSurfaceProps(SkSurfaceProps::kDefault_Flag, kRGB_H_SkPixelGeometry); 254*c8dee2aaSAndroid Build Coastguard Worker ``` 255*c8dee2aaSAndroid Build Coastguard Worker * In native builds the default use of `wgpu::Device::Tick` to detect GPU progress has been updated 256*c8dee2aaSAndroid Build Coastguard Worker to use `wgpu::Instance::ProcessEvents` instead. To simulate the non-yielding behavior of `Context` 257*c8dee2aaSAndroid Build Coastguard Worker in native `DawnBackendContext::fTick` may still be explicitly set to `nullptr`. 258*c8dee2aaSAndroid Build Coastguard Worker * The Vulkan backend for both Ganesh and Graphite will now invoke an optional client-provided callback 259*c8dee2aaSAndroid Build Coastguard Worker function when a `VK_ERROR_DEVICE_LOST` error code is returned from the Vulkan driver. Additional 260*c8dee2aaSAndroid Build Coastguard Worker debugging information will be passed from the driver to this callback if the `VK_EXT_device_fault` 261*c8dee2aaSAndroid Build Coastguard Worker extension is supported and enabled. 262*c8dee2aaSAndroid Build Coastguard Worker 263*c8dee2aaSAndroid Build Coastguard Worker This optional callback can be be provided via the `fDeviceLostContext` and `fDeviceLostProc` fields 264*c8dee2aaSAndroid Build Coastguard Worker on `GrVkBackendContext` (Ganesh) and `VulkanBackendContext` (Graphite). 265*c8dee2aaSAndroid Build Coastguard Worker * `SkAnimCodecPlayer` has been removed from the public API. 266*c8dee2aaSAndroid Build Coastguard Worker * `SkCodec::getImage()` will now respect the origin in the metadata (e.g. Exif metadata that 267*c8dee2aaSAndroid Build Coastguard Worker rotates the image). This may mean callers who provide an SkImageInfo may need to rotate it, 268*c8dee2aaSAndroid Build Coastguard Worker e.g. via `SkPixmapUtils::SwapWidthHeight`. 269*c8dee2aaSAndroid Build Coastguard Worker 270*c8dee2aaSAndroid Build Coastguard Worker* * * 271*c8dee2aaSAndroid Build Coastguard Worker 272*c8dee2aaSAndroid Build Coastguard WorkerMilestone 122 273*c8dee2aaSAndroid Build Coastguard Worker------------- 274*c8dee2aaSAndroid Build Coastguard Worker * `graphite::BackendTexture` can be created from a `WGPUTextureView`. This comes with a 275*c8dee2aaSAndroid Build Coastguard Worker perfomance cost when reading pixels to or writing pixels from the CPU. An intermediate 276*c8dee2aaSAndroid Build Coastguard Worker WGPUTexture is created to support these operations. However, this enables creating 277*c8dee2aaSAndroid Build Coastguard Worker `SkSurface` or `SkImage` from `wgpu::SwapChain::GetCurrentTextureView`. 278*c8dee2aaSAndroid Build Coastguard Worker * SkSL now properly reports an error if the body of a for-loop declares a variable which shadows the 279*c8dee2aaSAndroid Build Coastguard Worker for-loop induction variable. 280*c8dee2aaSAndroid Build Coastguard Worker 281*c8dee2aaSAndroid Build Coastguard Worker In other words, SkSL code like this will now generate an error: 282*c8dee2aaSAndroid Build Coastguard Worker 283*c8dee2aaSAndroid Build Coastguard Worker ``` 284*c8dee2aaSAndroid Build Coastguard Worker for (int x = 0; x < 10; ++x) { 285*c8dee2aaSAndroid Build Coastguard Worker int x = 123; // error: symbol 'x' was already defined 286*c8dee2aaSAndroid Build Coastguard Worker } 287*c8dee2aaSAndroid Build Coastguard Worker ``` 288*c8dee2aaSAndroid Build Coastguard Worker 289*c8dee2aaSAndroid Build Coastguard Worker Previously, the declaration of `x` would be allowed, in violation of the GLSL scoping rules (6.3): 290*c8dee2aaSAndroid Build Coastguard Worker "For both for and while loops, the sub-statement does not introduce a new scope for variable names." 291*c8dee2aaSAndroid Build Coastguard Worker * The PDF code now directly depends on Skia's JPEG decoder and encoder. The build 292*c8dee2aaSAndroid Build Coastguard Worker time shims to avoid using a JPEG decoder and encoder have been removed. In the 293*c8dee2aaSAndroid Build Coastguard Worker future these may be made optional again by allowing the user to supply them at 294*c8dee2aaSAndroid Build Coastguard Worker runtime. 295*c8dee2aaSAndroid Build Coastguard Worker * SkSL variables declared inside of a switch statement will now properly fall out of scope after the 296*c8dee2aaSAndroid Build Coastguard Worker closing brace of the switch-block, as one would expect. 297*c8dee2aaSAndroid Build Coastguard Worker 298*c8dee2aaSAndroid Build Coastguard Worker In other words, SkSL code like this will now generate an error: 299*c8dee2aaSAndroid Build Coastguard Worker 300*c8dee2aaSAndroid Build Coastguard Worker ``` 301*c8dee2aaSAndroid Build Coastguard Worker switch (n) { 302*c8dee2aaSAndroid Build Coastguard Worker case 1: 303*c8dee2aaSAndroid Build Coastguard Worker int x = 123; 304*c8dee2aaSAndroid Build Coastguard Worker } 305*c8dee2aaSAndroid Build Coastguard Worker return x; // error: unknown identifier 'x' 306*c8dee2aaSAndroid Build Coastguard Worker ``` 307*c8dee2aaSAndroid Build Coastguard Worker 308*c8dee2aaSAndroid Build Coastguard Worker Previously, `x` would remain accessible after the switch's closing brace. 309*c8dee2aaSAndroid Build Coastguard Worker * `skgpu::graphite::ContextOptions::fNeverYieldToWebGPU` is removed. Instead, yielding in an 310*c8dee2aaSAndroid Build Coastguard Worker Emscripten build is controlled by installing a client-provided function on 311*c8dee2aaSAndroid Build Coastguard Worker `skgpu::graphite::DawnBackendContext`. The client may install a function that uses Asyncify to 312*c8dee2aaSAndroid Build Coastguard Worker yield to the main thread loop. If no function is installed then the Context has the same 313*c8dee2aaSAndroid Build Coastguard Worker restrictions as with the old option. 314*c8dee2aaSAndroid Build Coastguard Worker 315*c8dee2aaSAndroid Build Coastguard Worker In native builds the default is to use `wgpu::Device::Tick` to detect GPU progress. To simulate the 316*c8dee2aaSAndroid Build Coastguard Worker non-yielding behavior of `Context` in native `DawnBackendContext::fTick` may be explicitly set to 317*c8dee2aaSAndroid Build Coastguard Worker to `nullptr`. 318*c8dee2aaSAndroid Build Coastguard Worker 319*c8dee2aaSAndroid Build Coastguard Worker By externalizing the use of Asyncify it is possible to build Skia without generated JS 320*c8dee2aaSAndroid Build Coastguard Worker code that relies on Asyncify. 321*c8dee2aaSAndroid Build Coastguard Worker * SkSL will now properly report an error if a function contains a top-level variable with the same 322*c8dee2aaSAndroid Build Coastguard Worker name as a function parameter. SkSL intends to match the scoping rules of GLSL, in particular: "A 323*c8dee2aaSAndroid Build Coastguard Worker function’s parameter declarations and body together form a single scope nested in the global scope." 324*c8dee2aaSAndroid Build Coastguard Worker 325*c8dee2aaSAndroid Build Coastguard Worker A program like this will now be rejected: 326*c8dee2aaSAndroid Build Coastguard Worker 327*c8dee2aaSAndroid Build Coastguard Worker ``` 328*c8dee2aaSAndroid Build Coastguard Worker void func(int var) { 329*c8dee2aaSAndroid Build Coastguard Worker int var; 330*c8dee2aaSAndroid Build Coastguard Worker } 331*c8dee2aaSAndroid Build Coastguard Worker 332*c8dee2aaSAndroid Build Coastguard Worker error: 2: symbol 'var' was already defined 333*c8dee2aaSAndroid Build Coastguard Worker int var; 334*c8dee2aaSAndroid Build Coastguard Worker ^^^^^^^ 335*c8dee2aaSAndroid Build Coastguard Worker ``` 336*c8dee2aaSAndroid Build Coastguard Worker * `SkFont::getTypeface()` will no longer return a nullptr to indicate "the default typeface". 337*c8dee2aaSAndroid Build Coastguard Worker If left unspecified, SkFonts will use an empty typeface (e.g. no glyphs). 338*c8dee2aaSAndroid Build Coastguard Worker * `SkFontMgr::RefDefault()` has been deleted. Clients should instantiate and manage their own 339*c8dee2aaSAndroid Build Coastguard Worker `SkFontMgr`s and use them to explicitly create `SkTypeface`s 340*c8dee2aaSAndroid Build Coastguard Worker * `GrGLMakeNativeInterface` has been deprecated and will eventually be removed. Clients should 341*c8dee2aaSAndroid Build Coastguard Worker be calling the precise factory (e.g. `GrGLInterfaces::makeGLX`) they need. Some APIs that currently allow a nullptr GrGLInterface will be stop allowing this (e.g. `GrDirectContexts::MakeGL`). 342*c8dee2aaSAndroid Build Coastguard Worker * `SkFontArguments::Palette::Override`'s index member is changing from an `int` 343*c8dee2aaSAndroid Build Coastguard Worker type to `uint16_t` to make the size exact and remove an unneeded 344*c8dee2aaSAndroid Build Coastguard Worker signedness. This avoids platform/compiler-specific size ambiguiity and more 345*c8dee2aaSAndroid Build Coastguard Worker closely matches the OpenType CPAL table. 346*c8dee2aaSAndroid Build Coastguard Worker 347*c8dee2aaSAndroid Build Coastguard Worker* * * 348*c8dee2aaSAndroid Build Coastguard Worker 349*c8dee2aaSAndroid Build Coastguard WorkerMilestone 121 350*c8dee2aaSAndroid Build Coastguard Worker------------- 351*c8dee2aaSAndroid Build Coastguard Worker * `SkFontConfigInterface::makeTypeface` now has a required `sk_sp<SkFontMgr>` parameter to be used for 352*c8dee2aaSAndroid Build Coastguard Worker parsing the font data from the stream. 353*c8dee2aaSAndroid Build Coastguard Worker * `skgpu::graphite::ContextOptions` has a new field, `fNeverYieldToWebGPU`. This new option 354*c8dee2aaSAndroid Build Coastguard Worker is only valid with the Dawn backend. It indicates that `skgpu::graphite::Context` should never yield 355*c8dee2aaSAndroid Build Coastguard Worker to Dawn. In native this means `wgpu::Device::Tick()` is never called. In Emscripten it 356*c8dee2aaSAndroid Build Coastguard Worker means `Context` never yields to the main thread event loop. 357*c8dee2aaSAndroid Build Coastguard Worker 358*c8dee2aaSAndroid Build Coastguard Worker When the option is enabled, `skgpu::SyncToCpu::kYes` is ignored when passed to 359*c8dee2aaSAndroid Build Coastguard Worker `Context::submit()`. Moreover, it is a fatal error to have submitted but unfinished 360*c8dee2aaSAndroid Build Coastguard Worker GPU work before deleting `Context`. A new method, `hasUnfinishedGpuWork()` is added 361*c8dee2aaSAndroid Build Coastguard Worker to `Context` that can be used to test this condition. 362*c8dee2aaSAndroid Build Coastguard Worker 363*c8dee2aaSAndroid Build Coastguard Worker The intent of this option is to be able to use Graphite in WASM without requiring Asyncify. 364*c8dee2aaSAndroid Build Coastguard Worker * Deprecated `GrMipmapped` and `GrMipMapped` alias have been removed in favor of `skgpu::Mipmapped`. 365*c8dee2aaSAndroid Build Coastguard Worker * Harfbuzz-backed SkShaper instances will no longer treat a null SkFontMgr as meaning "use the 366*c8dee2aaSAndroid Build Coastguard Worker default SkFontMgr for fallback" and instead will *not* do fallback for glyphs missing from a font. 367*c8dee2aaSAndroid Build Coastguard Worker * `GrBackendSemaphore::initVk` and `GrBackendSemaphore::vkSemaphore` have been replaced with 368*c8dee2aaSAndroid Build Coastguard Worker `GrBackendSemaphores::MakeVk` and `GrBackendSemaphores::GetVkSemaphore`, defined in 369*c8dee2aaSAndroid Build Coastguard Worker `include/gpu/ganesh/vk/GrVkBackendSemaphore.h` 370*c8dee2aaSAndroid Build Coastguard Worker * The Vulkan-specific methods and constructor of `MutableTextureState` have been deprecated in favor 371*c8dee2aaSAndroid Build Coastguard Worker of those found in `include/gpu/vk/VulkanMutableTextureState.h`. 372*c8dee2aaSAndroid Build Coastguard Worker 373*c8dee2aaSAndroid Build Coastguard Worker* * * 374*c8dee2aaSAndroid Build Coastguard Worker 375*c8dee2aaSAndroid Build Coastguard WorkerMilestone 120 376*c8dee2aaSAndroid Build Coastguard Worker------------- 377*c8dee2aaSAndroid Build Coastguard Worker * `SkBase64.h` has been removed from the public API. 378*c8dee2aaSAndroid Build Coastguard Worker * `SkFont::refTypefaceOrDefault` and `SkFont::getTypefaceOrDefault()` have been removed from the 379*c8dee2aaSAndroid Build Coastguard Worker public API. 380*c8dee2aaSAndroid Build Coastguard Worker * `GrBackendSemaphore::initGL` and `GrBackendSemaphore::glSync` have been removed 381*c8dee2aaSAndroid Build Coastguard Worker from the public API. 382*c8dee2aaSAndroid Build Coastguard Worker * For Graphite, `SkImages::AdoptTextureFrom` has been renamed to `SkImages::WrapTexture` to 383*c8dee2aaSAndroid Build Coastguard Worker better reflect what is happening to the passed in texture. 384*c8dee2aaSAndroid Build Coastguard Worker * `GrSurfaceInfo.h` has been removed from the public API. 385*c8dee2aaSAndroid Build Coastguard Worker * SkMesh now allows shaders, color filters, and blenders to be used in the mesh-fragment program. 386*c8dee2aaSAndroid Build Coastguard Worker Pass in effects using the `children` parameter of `SkMesh::Make` or `SkMesh::MakeIndexed`. 387*c8dee2aaSAndroid Build Coastguard Worker For a working example, see `gm/mesh.cpp`. 388*c8dee2aaSAndroid Build Coastguard Worker * The behavior for SkPicture deserialization (via SkReadBuffer) to fallback to 389*c8dee2aaSAndroid Build Coastguard Worker `SkImages::DeferredFromEncodedData` when `SkDeserialImageProc` is not set or returns null is 390*c8dee2aaSAndroid Build Coastguard Worker deprecated and will be removed shortly. 391*c8dee2aaSAndroid Build Coastguard Worker 392*c8dee2aaSAndroid Build Coastguard Worker `SkDeserialImageFromDataProc` has been added to SkDeserialProcs to allow clients to *safely* 393*c8dee2aaSAndroid Build Coastguard Worker avoid a copy when decoding image data in SkPictures. 394*c8dee2aaSAndroid Build Coastguard Worker 395*c8dee2aaSAndroid Build Coastguard Worker `SkDeserialImageProc` now takes in an optional AlphaType which can be used to override the 396*c8dee2aaSAndroid Build Coastguard Worker AlphaType that an image was serialized with, if desired. 397*c8dee2aaSAndroid Build Coastguard Worker * skgpu::graphite::RecorderOptions::kDefaultRecorderBudget is now a static data member. 398*c8dee2aaSAndroid Build Coastguard Worker * `SkTypeface::MakeFromName`, `SkTypeface::MakeFromFile`, `SkTypeface::MakeFromStream`, and 399*c8dee2aaSAndroid Build Coastguard Worker `SkTypeface::MakeFromData` are deprecated and will be removed eventually. These should be replaced 400*c8dee2aaSAndroid Build Coastguard Worker with calls directly to the SkFontMgr that can provide the appropriate typefaces. 401*c8dee2aaSAndroid Build Coastguard Worker 402*c8dee2aaSAndroid Build Coastguard Worker `SkTypeface::MakeDefault()` has been deprecated. Soon it will return an empty typeface and 403*c8dee2aaSAndroid Build Coastguard Worker eventually be removed. 404*c8dee2aaSAndroid Build Coastguard Worker 405*c8dee2aaSAndroid Build Coastguard Worker `SkTypeface::UniqueID()` has been removed - clients should use the method instead of this static 406*c8dee2aaSAndroid Build Coastguard Worker function. 407*c8dee2aaSAndroid Build Coastguard Worker * `GrDirectContext::MakeVulkan...` has been moved to `GrDirectContexts::MakeVulkan...` which are defined 408*c8dee2aaSAndroid Build Coastguard Worker in `include/gpu/ganesh/vk/GrVkDirectContext.h` 409*c8dee2aaSAndroid Build Coastguard Worker * The various GPU wait calls on GrDirectContext, SkSurface, and GrVkSecondaryCBContext which take 410*c8dee2aaSAndroid Build Coastguard Worker a client supplied semaphore, now only guarantee to block the gpu transfer and fragment stages 411*c8dee2aaSAndroid Build Coastguard Worker instead of all gpu commands. This shouldn't affect any client since client provided gpu resources 412*c8dee2aaSAndroid Build Coastguard Worker (e.g. textures) are only ever used by Skia in the fragment stages. 413*c8dee2aaSAndroid Build Coastguard Worker 414*c8dee2aaSAndroid Build Coastguard Worker* * * 415*c8dee2aaSAndroid Build Coastguard Worker 416*c8dee2aaSAndroid Build Coastguard WorkerMilestone 119 417*c8dee2aaSAndroid Build Coastguard Worker------------- 418*c8dee2aaSAndroid Build Coastguard Worker * Added new `SkImageFilters::Crop(SkRect, SkTileMode, sk_sp<SkImageFilter>)` image filter effect that crops the output from the wrapped SkImageFilter and optionally applies the SkTileMode when sampling outside of the crop rect. 419*c8dee2aaSAndroid Build Coastguard Worker * `GrDirectContext::MakeGL...` has been moved to `GrDirectContexts::MakeGL...` which are defined 420*c8dee2aaSAndroid Build Coastguard Worker in `include/gpu/ganesh/gl/GrGLDirectContext.h` 421*c8dee2aaSAndroid Build Coastguard Worker * `GrDirectContext::submit` and `GrDirectContext::flushAndSubmit` calls now take a GrSyncCpu enum 422*c8dee2aaSAndroid Build Coastguard Worker instead of a error-prone boolean. 423*c8dee2aaSAndroid Build Coastguard Worker 424*c8dee2aaSAndroid Build Coastguard Worker Similarly, calls to `GrDirectContext::performDeferredCleanup` and 425*c8dee2aaSAndroid Build Coastguard Worker `GrDirectContext::purgeUnlockedResources` take a GrPurgeResourceOptions enum. 426*c8dee2aaSAndroid Build Coastguard Worker * SkMeshSpecification no longer rejects fragment programs which include `uniform shader`, `uniform 427*c8dee2aaSAndroid Build Coastguard Worker colorFilter` or `uniform blender`. However, `SkMesh::Make` will not allow the mesh specification 428*c8dee2aaSAndroid Build Coastguard Worker to be used. 429*c8dee2aaSAndroid Build Coastguard Worker * `SkMesh::Make` and `SkMesh::MakeIndexed` now require a span of child effects as a new parameter. 430*c8dee2aaSAndroid Build Coastguard Worker This functionality is still a work in progress; for now, always pass an empty span. 431*c8dee2aaSAndroid Build Coastguard Worker * `sksl-minify` can now minify SkMesh programs. Pass `--meshvert` or `--meshfrag` to indicate 432*c8dee2aaSAndroid Build Coastguard Worker that the input program is an SkMesh vertex or fragment program. When minifying a mesh program, 433*c8dee2aaSAndroid Build Coastguard Worker you must supply `struct Varyings` and `struct Attributes` which correspond to the 434*c8dee2aaSAndroid Build Coastguard Worker SkMeshSpecification; these will be eliminated from the minified output. 435*c8dee2aaSAndroid Build Coastguard Worker * `SkMergePathEffect`, `SkMatrixPathEffect`, `SkStrokePathEffect`, and 436*c8dee2aaSAndroid Build Coastguard Worker `SkStrokeAndFillPathEffect` have been removed from the public API. 437*c8dee2aaSAndroid Build Coastguard Worker These effects can be implemented on the SkPath objects directly using other means and clients 438*c8dee2aaSAndroid Build Coastguard Worker will likely find performance boosts by doing so. 439*c8dee2aaSAndroid Build Coastguard Worker * `SkShadowFlags` are now visible in `include/utils/SkShadowUtils.h` 440*c8dee2aaSAndroid Build Coastguard Worker * `SkPicture`s no longer serialize `SkImage`s to PNG encoded data by default. Clients who wish to 441*c8dee2aaSAndroid Build Coastguard Worker preserve this should make use of `SkSerialProcs`, specifically the `fImageProc` field. 442*c8dee2aaSAndroid Build Coastguard Worker 443*c8dee2aaSAndroid Build Coastguard Worker* * * 444*c8dee2aaSAndroid Build Coastguard Worker 445*c8dee2aaSAndroid Build Coastguard WorkerMilestone 118 446*c8dee2aaSAndroid Build Coastguard Worker------------- 447*c8dee2aaSAndroid Build Coastguard Worker * `GrDirectContext::flush` variants now expect a SkSurface pointer only, not 448*c8dee2aaSAndroid Build Coastguard Worker an sk_sp<SkSurface>. 449*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::makeWithFilter` has been deprecated. It has been replaced with three factory functions: 450*c8dee2aaSAndroid Build Coastguard Worker 451*c8dee2aaSAndroid Build Coastguard Worker Ganesh: `SkImages::MakeWithFilter(GrRecordingContext*, ...);` -- declared in SkImageGanesh.h 452*c8dee2aaSAndroid Build Coastguard Worker 453*c8dee2aaSAndroid Build Coastguard Worker Graphite: `SkImages::MakeWithFilter(skgpu::graphite::Recorder*, ...);` -- declared in Image.h 454*c8dee2aaSAndroid Build Coastguard Worker 455*c8dee2aaSAndroid Build Coastguard Worker Raster: `SkImages::MakeWithFilter(...);` -- declared in SkImage.h 456*c8dee2aaSAndroid Build Coastguard Worker 457*c8dee2aaSAndroid Build Coastguard Worker The new factories require the associated backend context object be valid. For example, the Graphite version will return nullptr if it isn't supplied with a `Recorder` object. 458*c8dee2aaSAndroid Build Coastguard Worker * SkSL and Runtime Effects are no longer optional features of Skia; they are always available. 459*c8dee2aaSAndroid Build Coastguard Worker The GN flag `skia_enable_sksl` has been removed. 460*c8dee2aaSAndroid Build Coastguard Worker * SkSL will now properly reject sequence-expressions containing arrays, or sequence-expressions 461*c8dee2aaSAndroid Build Coastguard Worker containing structures of arrays. Previously, the left-side expression of a sequence was checked, 462*c8dee2aaSAndroid Build Coastguard Worker but the right-side was not. In GLSL ES 1.0, and therefore in SkSL, the only operator which is 463*c8dee2aaSAndroid Build Coastguard Worker allowed to operate on arrays is the array subscript operator (`[]`). 464*c8dee2aaSAndroid Build Coastguard Worker * The Dawn backend for Ganesh has been removed. Dawn will continue to be supported in the 465*c8dee2aaSAndroid Build Coastguard Worker Graphite backend. 466*c8dee2aaSAndroid Build Coastguard Worker * We plan to remove SkTime.h from the public API. As of now, SkAutoTime has been 467*c8dee2aaSAndroid Build Coastguard Worker deleted as it was unused. 468*c8dee2aaSAndroid Build Coastguard Worker * Vulkan-specific calls are being removed from GrBackendSurface.h. Clients should use the 469*c8dee2aaSAndroid Build Coastguard Worker equivalents found in `include/gpu/ganesh/vk/GrVkBackendSurface.h"` 470*c8dee2aaSAndroid Build Coastguard Worker 471*c8dee2aaSAndroid Build Coastguard Worker* * * 472*c8dee2aaSAndroid Build Coastguard Worker 473*c8dee2aaSAndroid Build Coastguard WorkerMilestone 117 474*c8dee2aaSAndroid Build Coastguard Worker------------- 475*c8dee2aaSAndroid Build Coastguard Worker * `SkGraphics::AllowJIT()` has been removed. It was previously deprecated (and did nothing). 476*c8dee2aaSAndroid Build Coastguard Worker * New methods are added to `SkImage`, `SkSurface`, and `skgpu::graphite::context` named 477*c8dee2aaSAndroid Build Coastguard Worker `asyncRescaleAndReadPixeksYUVA420`. These function identically to the existing 478*c8dee2aaSAndroid Build Coastguard Worker `asyncRescaleAndReadPixelsYUV420` methods but return a fourth plane containing alpha at full 479*c8dee2aaSAndroid Build Coastguard Worker resolution. 480*c8dee2aaSAndroid Build Coastguard Worker * `SkAutoGraphics` was removed. This was a helper struct that simply called `SkGraphics::Init`. 481*c8dee2aaSAndroid Build Coastguard Worker Any instance of `SkAutoGraphics` can be replaced with a call to `SkGraphics::Init`. 482*c8dee2aaSAndroid Build Coastguard Worker * `SkCanvas::flush()` has been removed. It can be replaced with: 483*c8dee2aaSAndroid Build Coastguard Worker ``` 484*c8dee2aaSAndroid Build Coastguard Worker if (auto dContext = GrAsDirectContext(canvas->recordingContext())) { 485*c8dee2aaSAndroid Build Coastguard Worker dContext->flushAndSubmit(); 486*c8dee2aaSAndroid Build Coastguard Worker } 487*c8dee2aaSAndroid Build Coastguard Worker ``` 488*c8dee2aaSAndroid Build Coastguard Worker 489*c8dee2aaSAndroid Build Coastguard Worker `SkCanvas::recordingContext()` and `SkCanvas::recorder()` are now const. They were implicitly const 490*c8dee2aaSAndroid Build Coastguard Worker but are now declared to be such. 491*c8dee2aaSAndroid Build Coastguard Worker * `SkCanvas::recordingContext()` and `SkCanvas::recorder()` are now const. 492*c8dee2aaSAndroid Build Coastguard Worker They were implicitly const but are now declared to be such. 493*c8dee2aaSAndroid Build Coastguard Worker * `SkMesh::MakeIndexBuffer`, `SkMesh::CopyIndexBuffer`, `SkMesh::MakeVertexBuffer`, and 494*c8dee2aaSAndroid Build Coastguard Worker `SkMesh::CopyVertexBuffer` have been moved to the `SkMeshes` namespace. Ganesh-specific versions 495*c8dee2aaSAndroid Build Coastguard Worker have been created in `include/gpu/ganesh/SkMeshGanesh.h`. 496*c8dee2aaSAndroid Build Coastguard Worker * SkPath now enforces an upper limit of 715 million path verbs. 497*c8dee2aaSAndroid Build Coastguard Worker * `SkRuntimeEffectBuilder::uniforms()`, `SkRuntimeEffectBuilder::children()`, 498*c8dee2aaSAndroid Build Coastguard Worker `SkRuntimeShaderBuilder::makeShader()`, `SkRuntimeColorFilterBuilder::makeColorFilter()`, and 499*c8dee2aaSAndroid Build Coastguard Worker `SkRuntimeBlendBuilder::makeBlender()` are now marked as const. No functional changes internally, 500*c8dee2aaSAndroid Build Coastguard Worker just making explicit what had been implicit. 501*c8dee2aaSAndroid Build Coastguard Worker * `SkRuntimeEffect::makeImage` and `SkRuntimeShaderBuilder::makeImage` have been removed. 502*c8dee2aaSAndroid Build Coastguard Worker * GL-specific calls have been removed from GrBackendSurface.h. Clients should use the 503*c8dee2aaSAndroid Build Coastguard Worker equivalents found in `include/gpu/ganesh/gl/GrGLBackendSurface.h` 504*c8dee2aaSAndroid Build Coastguard Worker * A new `SkTiledImageUtils` namespace (in `SkTiledImageUtils.h`) provides `DrawImage` and `DrawImageRect` methods that directly mirror `SkCanvas'` `drawImage` and `drawImageRect` calls. 505*c8dee2aaSAndroid Build Coastguard Worker 506*c8dee2aaSAndroid Build Coastguard Worker The new entry points will breakup large `SkBitmap`-backed `SkImages` into tiles and draw them if they would be too large to upload to the gpu as one texture. 507*c8dee2aaSAndroid Build Coastguard Worker 508*c8dee2aaSAndroid Build Coastguard Worker They will fall through to their `SkCanvas` correlates if tiling isn't needed or possible. 509*c8dee2aaSAndroid Build Coastguard Worker 510*c8dee2aaSAndroid Build Coastguard Worker* * * 511*c8dee2aaSAndroid Build Coastguard Worker 512*c8dee2aaSAndroid Build Coastguard WorkerMilestone 116 513*c8dee2aaSAndroid Build Coastguard Worker------------- 514*c8dee2aaSAndroid Build Coastguard Worker * `SkPromiseImageTexture` has been removed from the public API, as well as 515*c8dee2aaSAndroid Build Coastguard Worker `SkImages::PromiseTextureFrom` and `SkImages::PromiseTextureFromYUVA`, public consumers of that 516*c8dee2aaSAndroid Build Coastguard Worker data type. 517*c8dee2aaSAndroid Build Coastguard Worker * `SkDeferredDisplayList`, `SkDeferredDisplayListRecorder`, and `SkSurfaceCharacterization` have 518*c8dee2aaSAndroid Build Coastguard Worker been removed from the public API. 519*c8dee2aaSAndroid Build Coastguard Worker * The intermediate color computed by `SkBlenders::Arithmetic` is now always clamped to between 0 and 1 (inclusive), and then `enforcePremul` is applied when that parameter is true. 520*c8dee2aaSAndroid Build Coastguard Worker * Added a new public type, `SkColorTable`, to own the lookup tables passed into `SkColorFilters::Table`, which allows clients and the returned `SkColorFilter` to share the table memory instead of having to duplicate it in any wrapper types that lazily create Skia representations. 521*c8dee2aaSAndroid Build Coastguard Worker * The deprecated `SkImageFilters::Magnifier` factory that did *not* take a lens bounds parameter has been removed. 522*c8dee2aaSAndroid Build Coastguard Worker * `SkImageFilters::RuntimeShader` has variations that take a maximum sample radius, which is used to provide padded input images to the runtime effect so that boundary conditions are avoided. 523*c8dee2aaSAndroid Build Coastguard Worker * `SkImageFilters::AlphaThreshold` has been removed. Its only use was in ChromeOS and that usage has been replaced with a `Blend(kSrcIn, input, Picture(region))` filter graph to achieve the same effect. 524*c8dee2aaSAndroid Build Coastguard Worker * The single-argument `SkImageFilters::Image(sk_sp<SkImage>)` factory is removed. The `SkSamplingOptions` to use when rendering the image during filtering must be provided. `SkFilterMode::kLinear` is recommended over the previous bicubic default. 525*c8dee2aaSAndroid Build Coastguard Worker * `GrTextureGenerator` now has a subclass `GrExternalTextureGenerator` which can be subclassed by 526*c8dee2aaSAndroid Build Coastguard Worker clients and used with `SkImages::DeferredFromTextureGenerator` in order to create images from 527*c8dee2aaSAndroid Build Coastguard Worker textures that were created outside of skia. `GrTextureGenerator` has been removed from the public 528*c8dee2aaSAndroid Build Coastguard Worker API in favor of `GrExternalTextureGenerator`. 529*c8dee2aaSAndroid Build Coastguard Worker * SkPoint now uses float for its coordinates. This starts the process of removing SkScalar from Skia. 530*c8dee2aaSAndroid Build Coastguard Worker SkScalar was a typedef for float, so this has no practical impact on code that uses Skia. 531*c8dee2aaSAndroid Build Coastguard Worker * `SkSamplingOptions(SkFilterMode)` and `SkSamplingOptions(SkCubicResampler)` are no longer marked `explicit` so that samplings can be created inline more succinctly. 532*c8dee2aaSAndroid Build Coastguard Worker * `SkShaders` is now a namespace (was previously a non-constructable class with only static 533*c8dee2aaSAndroid Build Coastguard Worker functions). `SkPerlinNoiseShader::MakeFractalNoise` and `SkPerlinNoiseShader::MakeTurbulence` have 534*c8dee2aaSAndroid Build Coastguard Worker been moved to the `SkShaders` namespace and `SkPerlinNoiseShader` (the public non-constructable 535*c8dee2aaSAndroid Build Coastguard Worker class) has been slated for moving into private internals of Skia. 536*c8dee2aaSAndroid Build Coastguard Worker There are no functional differences in the moved functions, however the change of some #includes 537*c8dee2aaSAndroid Build Coastguard Worker in `include/core/SkShader.h`, `include/effects/SkGradientShader.h`, and 538*c8dee2aaSAndroid Build Coastguard Worker `include/effects/SkPerlinNoiseShader.h` may cause clients who were depending on the transitive 539*c8dee2aaSAndroid Build Coastguard Worker dependencies to now fail to compile. 540*c8dee2aaSAndroid Build Coastguard Worker * The following methods have been removed from SkSurface and relocated to other methods/functions: 541*c8dee2aaSAndroid Build Coastguard Worker - `SkSurface::asImage` -> `SkSurfaces::AsImage` (include/gpu/graphite/Surface.h) 542*c8dee2aaSAndroid Build Coastguard Worker - `SkSurface::flushAndSubmit` -> `GrDirectContext::flushAndSubmit` 543*c8dee2aaSAndroid Build Coastguard Worker - `SkSurface::flush` -> `GrDirectContext::flush` 544*c8dee2aaSAndroid Build Coastguard Worker - `SkSurface::makeImageCopy` -> `SkSurfaces::AsImageCopy` (include/gpu/graphite/Surface.h) 545*c8dee2aaSAndroid Build Coastguard Worker - `SkSurface::resolveMSAA` -> `SkSurfaces::ResolveMSAA()` (include/gpu/ganesh/SkSurfaceGanesh.h) 546*c8dee2aaSAndroid Build Coastguard Worker 547*c8dee2aaSAndroid Build Coastguard Worker Additionally, `SkSurface::BackendSurfaceAccess` is now in the `SkSurfaces` namespace. 548*c8dee2aaSAndroid Build Coastguard Worker * The deprecated `SkTableColorFilter` class and its methods have been removed. Clients should use 549*c8dee2aaSAndroid Build Coastguard Worker `SkColorFilters::Table` and `SkColorFilters::TableARGB` (defined in include/core/SkColorFilter.h). 550*c8dee2aaSAndroid Build Coastguard Worker * The `SkYUVAPixmapInfo::SupportedDataTypes(const GrImageContext&)` constructor has been removed from 551*c8dee2aaSAndroid Build Coastguard Worker the public API. 552*c8dee2aaSAndroid Build Coastguard Worker 553*c8dee2aaSAndroid Build Coastguard Worker* * * 554*c8dee2aaSAndroid Build Coastguard Worker 555*c8dee2aaSAndroid Build Coastguard WorkerMilestone 115 556*c8dee2aaSAndroid Build Coastguard Worker------------- 557*c8dee2aaSAndroid Build Coastguard Worker * Clients now need to register codecs which Skia should use to decode raw bytes. For example: 558*c8dee2aaSAndroid Build Coastguard Worker `SkCodecs::Register(SkJpegDecoder::Decoder());`. Skia still provides many supported formats 559*c8dee2aaSAndroid Build Coastguard Worker (see `include/codec/*Decoder.h`). Clients are free to specify their own, either supplementing 560*c8dee2aaSAndroid Build Coastguard Worker the existing set or using a custom version instead of the one previously provided by default 561*c8dee2aaSAndroid Build Coastguard Worker by Skia. See `SkCodecs::Decoder` for the necessary data to provide when using a custom decoder 562*c8dee2aaSAndroid Build Coastguard Worker (in `include/codec/SkCodec.h`). 563*c8dee2aaSAndroid Build Coastguard Worker 564*c8dee2aaSAndroid Build Coastguard Worker To ease the transition, Skia will continue (for a short while) to register codecs unless 565*c8dee2aaSAndroid Build Coastguard Worker `SK_DISABLE_LEGACY_INIT_DECODERS` is defined. 566*c8dee2aaSAndroid Build Coastguard Worker * `SkDrawable::newPictureSnapshot` is removed. Instead, call `SkDrawable::makePictureSnapshot`. 567*c8dee2aaSAndroid Build Coastguard Worker The old method returned a bare (but ref-counted) pointer, which was easy for clients to get wrong. 568*c8dee2aaSAndroid Build Coastguard Worker The new method returns an `sk_sp<SkPicture>`, which is easier to handle, and consistent with the 569*c8dee2aaSAndroid Build Coastguard Worker rest of skia. 570*c8dee2aaSAndroid Build Coastguard Worker * `SkGraphics::PurgePinnedFontCache()` has been added to allow clients to 571*c8dee2aaSAndroid Build Coastguard Worker explicitly trigger `SkStrikeCache` purge checks for `SkStrikes` with 572*c8dee2aaSAndroid Build Coastguard Worker pinners. Defining `SK_STRIKE_CACHE_DOESNT_AUTO_CHECK_PINNERS` in the 573*c8dee2aaSAndroid Build Coastguard Worker user configuration now disables automatic purge checking of strikes with 574*c8dee2aaSAndroid Build Coastguard Worker pinners. 575*c8dee2aaSAndroid Build Coastguard Worker * The following SkImage factories have been moved to `include/gpu/graphite/Image.h`: 576*c8dee2aaSAndroid Build Coastguard Worker - `SkImage::MakeGraphiteFromBackendTexture -> SkImages::AdoptTextureFrom` 577*c8dee2aaSAndroid Build Coastguard Worker - `SkImage::MakeGraphiteFromYUVABackendTextures -> SkImages::TextureFromYUVATextures` 578*c8dee2aaSAndroid Build Coastguard Worker - `SkImage::MakeGraphiteFromYUVAPixmaps -> SkImages::TextureFromYUVAPixmaps` 579*c8dee2aaSAndroid Build Coastguard Worker - `SkImage::MakeGraphitePromiseTexture -> SkImages::PromiseTextureFrom` 580*c8dee2aaSAndroid Build Coastguard Worker 581*c8dee2aaSAndroid Build Coastguard Worker The SkImage method `makeTextureImage` has been moved to `SkImages::TextureFromImage`. 582*c8dee2aaSAndroid Build Coastguard Worker 583*c8dee2aaSAndroid Build Coastguard Worker `SkImage::RequiredImageProperties` has been renamed to `SkImage::RequiredProperties`, 584*c8dee2aaSAndroid Build Coastguard Worker with fMipmapped turned into a boolean instead of the GPU enum. 585*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::makeColorSpace` and `SkImage::makeColorTypeAndColorSpace` now take a `GrDirectContext` 586*c8dee2aaSAndroid Build Coastguard Worker as the first parameter. This should be supplied when dealing with texture-backed images and can 587*c8dee2aaSAndroid Build Coastguard Worker be `nullptr` otherwise. 588*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::subset` now takes a `GrDirectContext*` as its first parameter (this can be `nullptr` for 589*c8dee2aaSAndroid Build Coastguard Worker non-gpu backed images. Images which are backed by a codec or picture will not be turned into a GPU 590*c8dee2aaSAndroid Build Coastguard Worker texture before being read. This should only impact picture-backed images, which may not be read 591*c8dee2aaSAndroid Build Coastguard Worker correctly if the picture contain nested texture-backed images itself. To force a conversion to 592*c8dee2aaSAndroid Build Coastguard Worker a texture, clients should call `SkImages::TextureFromImage`, passing in the image, and then call 593*c8dee2aaSAndroid Build Coastguard Worker subset on the result. Documentation has been clarified that `SkImage::subset` will return a raster- 594*c8dee2aaSAndroid Build Coastguard Worker backed image if the source is not backed by a texture, and texture-otherwise. 595*c8dee2aaSAndroid Build Coastguard Worker 596*c8dee2aaSAndroid Build Coastguard Worker `SkImages::SubsetTextureFrom` has been added to subset an image and explicitly return a texture- 597*c8dee2aaSAndroid Build Coastguard Worker backed image. This allows some optimizations, especially for large images that exceed a maximum 598*c8dee2aaSAndroid Build Coastguard Worker texture size of a GPU. 599*c8dee2aaSAndroid Build Coastguard Worker 600*c8dee2aaSAndroid Build Coastguard Worker `SkImage::makeRasterImage` and `SkImage::makeNonTextureImage` now take a `GrDirectContext*` which 601*c8dee2aaSAndroid Build Coastguard Worker clients should supply for reading-back pixels from texture-backed images. 602*c8dee2aaSAndroid Build Coastguard Worker * `SkImageFilters::Image` now returns a non-null image filter if the input `sk_sp<SkImage>` is 603*c8dee2aaSAndroid Build Coastguard Worker null or the src rectangle is empty or does not overlap the image. The returned filter evaluates to 604*c8dee2aaSAndroid Build Coastguard Worker transparent black, which is equivalent to a null or empty image. Previously, returning a null image 605*c8dee2aaSAndroid Build Coastguard Worker filter would mean that the dynamic source image could be surprisingly injected into the filter 606*c8dee2aaSAndroid Build Coastguard Worker evaluation where it might not have been intended. 607*c8dee2aaSAndroid Build Coastguard Worker * `SkImageFilters::Magnifier(srcRect, inset)` is deprecated. These parameters do not provide enough 608*c8dee2aaSAndroid Build Coastguard Worker information for the implementation to correctly respond to canvas transform or participate accurately 609*c8dee2aaSAndroid Build Coastguard Worker in layer bounds planning. 610*c8dee2aaSAndroid Build Coastguard Worker 611*c8dee2aaSAndroid Build Coastguard Worker A new `SkImageFilters::Magnifier` function is added that takes additional parameters: the outer 612*c8dee2aaSAndroid Build Coastguard Worker lens bounds and the actual zoom amount (instead of inconsistently reconstructing the target zoom 613*c8dee2aaSAndroid Build Coastguard Worker amount, which was the prior behavior). Additionally, the new factory accepts an SkSamplingOptions 614*c8dee2aaSAndroid Build Coastguard Worker to control the sampling quality. 615*c8dee2aaSAndroid Build Coastguard Worker * `SkImageFilters::Picture` now returns a non-null image filter if the input `sk_sp<SkPicture>` is 616*c8dee2aaSAndroid Build Coastguard Worker null. The returned filter evaluates to transparent black, which is equivalent to a null or empty 617*c8dee2aaSAndroid Build Coastguard Worker picture. Previously, returning a null image filter would mean that the dynamic source image could 618*c8dee2aaSAndroid Build Coastguard Worker be surprisingly injected into the filter evaluation where it might not have been intended. 619*c8dee2aaSAndroid Build Coastguard Worker * `SkImageFilters::Shader` now returns a non-null image filter if the input `sk_sp<SkShader>` is 620*c8dee2aaSAndroid Build Coastguard Worker null. The returned filter evaluates to transparent black, which is equivalent to a null or empty 621*c8dee2aaSAndroid Build Coastguard Worker shader. Previously, returning a null image filter would mean that the dynamic source image could 622*c8dee2aaSAndroid Build Coastguard Worker be surprisingly injected into the filter evaluation where it might not have been intended. 623*c8dee2aaSAndroid Build Coastguard Worker * `SkImageGenerator::MakeFromEncoded` has been removed from the public API. 624*c8dee2aaSAndroid Build Coastguard Worker `SkImage::DeferredFromEncoded` or `SkCodec::MakeFromData` should be used instead. 625*c8dee2aaSAndroid Build Coastguard Worker * `SkSurface::getBackendTexture` and `SkSurface::getBackendRenderTarget` have been deprecated and 626*c8dee2aaSAndroid Build Coastguard Worker replaced with `SkSurfaces::GetBackendTexture` and `SkSurfaces::GetBackendRenderTarget` respectively. 627*c8dee2aaSAndroid Build Coastguard Worker These are found in `include/gpu/ganesh/SkSurfaceGanesh.h`. The supporting enum `BackendHandleAccess` 628*c8dee2aaSAndroid Build Coastguard Worker has also been moved to `SkSurfaces::BackendHandleAccess` as an enum class, with shorter member 629*c8dee2aaSAndroid Build Coastguard Worker names. 630*c8dee2aaSAndroid Build Coastguard Worker * SkSurface factory methods have been moved to the SkSurfaces namespace. Many have been renamed to 631*c8dee2aaSAndroid Build Coastguard Worker be more succinct or self-consistent. Factory methods specific to the Ganesh GPU backend are 632*c8dee2aaSAndroid Build Coastguard Worker defined publicly in include/gpu/ganesh/SkSurfaceGanesh.h. The Metal Ganesh backend has some 633*c8dee2aaSAndroid Build Coastguard Worker specific factories in include/gpu/ganesh/mtl/SkSurfaceMetal.h. 634*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeFromAHardwareBuffer -> SkSurfaces::WrapAndroidHardwareBuffer 635*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeFromBackendRenderTarget -> SkSurfaces::WrapBackendRenderTarget 636*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeFromBackendTexture -> SkSurfaces::WrapBackendTexture 637*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeFromCAMetalLayer -> SkSurfaces::WrapCAMetalLayer 638*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeFromMTKView -> SkSurfaces::WrapMTKView 639*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeGraphite -> SkSurfaces::RenderTarget 640*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeGraphiteFromBackendTexture -> SkSurfaces::WrapBackendTexture 641*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeNull -> SkSurfaces::Null 642*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeRaster -> SkSurfaces::Raster 643*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeRasterDirect -> SkSurfaces::WrapPixels 644*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeRasterDirectReleaseProc -> SkSurfaces::WrapPixels 645*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeRasterN32Premul -> SkSurfaces::Raster (clients should make SkImageInfo) 646*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::MakeRenderTarget -> SkSurfaces::RenderTarget 647*c8dee2aaSAndroid Build Coastguard Worker 648*c8dee2aaSAndroid Build Coastguard Worker* * * 649*c8dee2aaSAndroid Build Coastguard Worker 650*c8dee2aaSAndroid Build Coastguard WorkerMilestone 114 651*c8dee2aaSAndroid Build Coastguard Worker------------- 652*c8dee2aaSAndroid Build Coastguard Worker * The CPU backend for Runtime Effects has been rewritten. This may cause slight differences in 653*c8dee2aaSAndroid Build Coastguard Worker performance and image quality when runtime effects are painted onto a raster surface. 654*c8dee2aaSAndroid Build Coastguard Worker * Gradient shaders support interpolation in several different color spaces, by passing a 655*c8dee2aaSAndroid Build Coastguard Worker `SkGradientShader::Interpolation` struct to the shader factory functions. The color space and 656*c8dee2aaSAndroid Build Coastguard Worker hue method options are based on the CSS Color Level 4 specfication: 657*c8dee2aaSAndroid Build Coastguard Worker * https://www.w3.org/TR/css-color-4/#interpolation-space 658*c8dee2aaSAndroid Build Coastguard Worker * https://www.w3.org/TR/css-color-4/#hue-interpolation 659*c8dee2aaSAndroid Build Coastguard Worker * `SkImages::GetBackendTextureFromImage` has been renamed `SkImages::MakeBackendTextureFromImage`. 660*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::getBackendTexture()` has been moved to `SkImages::GetBackendTextureFromImage()` in 661*c8dee2aaSAndroid Build Coastguard Worker `SkImageGanesh.h`. 662*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::makeTextureImage()` has been moved to `SkImages::TextureFromImage()` in 663*c8dee2aaSAndroid Build Coastguard Worker `SkImageGanesh.h`. 664*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::flush()` and `SkImage::flushAndSubmit()` has been moved to 665*c8dee2aaSAndroid Build Coastguard Worker `GrDirectContext::flush()` and `GrDirectContext::flushAndSubmit()` in `SkImageGanesh.h`. 666*c8dee2aaSAndroid Build Coastguard Worker * `SkSurfaceProperties::kAlwaysDither_Flag` added to globally enable dithering for a specific 667*c8dee2aaSAndroid Build Coastguard Worker `SkSurface` target. 668*c8dee2aaSAndroid Build Coastguard Worker * `SkSerialImageProc` and `SkDeserialImageProc` are now also used to encode/decode the SkMipmap 669*c8dee2aaSAndroid Build Coastguard Worker layers of certain SkImages. 670*c8dee2aaSAndroid Build Coastguard Worker * The defines `SK_USE_WIC_ENCODER` and `SK_USE_CG_ENCODER` have been removed, as well as the code 671*c8dee2aaSAndroid Build Coastguard Worker to use the Windows Image Codecs and Core Graphics as a way to have Skia encode files in PNG, 672*c8dee2aaSAndroid Build Coastguard Worker JPEG, and WEBP format. Skia continues to support use of the NDK codecs on Android, as well 673*c8dee2aaSAndroid Build Coastguard Worker as using external C++ libraries (e.g. libpng, libjpeg-turbo) to *encode* images. WIC and CG 674*c8dee2aaSAndroid Build Coastguard Worker are still used to *decode* images on the appropriate platforms. 675*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::encodeToData` has been deprecated. Clients should use `refEncodedData` if the image 676*c8dee2aaSAndroid Build Coastguard Worker was from an encoded bytestream or one of `SkPngEncoder::Encode`, `SkJpegEncoder::Encode`, 677*c8dee2aaSAndroid Build Coastguard Worker `SkWebpEncoder::Encode` directly. 678*c8dee2aaSAndroid Build Coastguard Worker * The following defines no longer do anything. GN clients should instead set the provided 679*c8dee2aaSAndroid Build Coastguard Worker arguments (from gn/skia.gni) as necessary: 680*c8dee2aaSAndroid Build Coastguard Worker - `SK_ENCODE_PNG` -> `skia_use_libjpeg_turbo_encode` 681*c8dee2aaSAndroid Build Coastguard Worker - `SK_ENCODE_JPEG` -> `skia_use_libpng_encode` 682*c8dee2aaSAndroid Build Coastguard Worker - `SK_ENCODE_WEBP` -> `skia_use_libwebp_encode` 683*c8dee2aaSAndroid Build Coastguard Worker Other clients should make sure the appropriate `*EncoderImpl.cpp` files from `src/encode` are 684*c8dee2aaSAndroid Build Coastguard Worker included in the build. 685*c8dee2aaSAndroid Build Coastguard Worker * `SkImageEncoder` has been removed. Clients should use one of `SkPngEncoder::Encode`, 686*c8dee2aaSAndroid Build Coastguard Worker `SkJpegEncoder::Encode` or `SkWebpEncoder::Encode` directly. 687*c8dee2aaSAndroid Build Coastguard Worker * `SkImageGenerator` has a new subclass `GrTextureGenerator` which can be used if clients want to 688*c8dee2aaSAndroid Build Coastguard Worker provide specialized ways of making Ganesh texture-backed Images. 689*c8dee2aaSAndroid Build Coastguard Worker * `SkImageGenerator::MakeFromPicture` has been removed from the public API. Clients should be 690*c8dee2aaSAndroid Build Coastguard Worker drawing the picture directly instead of turning it into an image first. 691*c8dee2aaSAndroid Build Coastguard Worker 692*c8dee2aaSAndroid Build Coastguard Worker 693*c8dee2aaSAndroid Build Coastguard Worker* * * 694*c8dee2aaSAndroid Build Coastguard Worker 695*c8dee2aaSAndroid Build Coastguard WorkerMilestone 113 696*c8dee2aaSAndroid Build Coastguard Worker------------- 697*c8dee2aaSAndroid Build Coastguard Worker * The define SK_SUPPORT_GPU is now SK_GANESH. It is no longer detected as a 0 or 1, but 698*c8dee2aaSAndroid Build Coastguard Worker as the absence or presence of that define. As a result, it defaults to off (not defined) if 699*c8dee2aaSAndroid Build Coastguard Worker not defined (SK_SUPPORT_GPU would default to SK_SUPPORT_GPU=1 if not defined). 700*c8dee2aaSAndroid Build Coastguard Worker * SkStrSplit is no longer part of the public API. 701*c8dee2aaSAndroid Build Coastguard Worker * SkImage::encodeToData now takes a GrDirectContext. The versions which do not have that are 702*c8dee2aaSAndroid Build Coastguard Worker deprecated and will be removed at some point. 703*c8dee2aaSAndroid Build Coastguard Worker * SkMatrix::Scale, preScale, setScale, etc. with any scale factor of 0 correctly no longer 704*c8dee2aaSAndroid Build Coastguard Worker return true from rectStaysRect(), consistent with rectStaysRect() implying a non-zero scale. 705*c8dee2aaSAndroid Build Coastguard Worker * `SkImage::CompressionType` has been renamed to `SkTextureCompressionType` and moved to 706*c8dee2aaSAndroid Build Coastguard Worker `include/core/SkTextureCompressionType.h` 707*c8dee2aaSAndroid Build Coastguard Worker * `SkEncodedImageFormat.h` and `SkPngChunkReader.h` are now in include/codec 708*c8dee2aaSAndroid Build Coastguard Worker * `SkICC.h` is now in include/encode 709*c8dee2aaSAndroid Build Coastguard Worker * SkImage factory methods have been moved to the SkImages namespace. Many have been renamed to 710*c8dee2aaSAndroid Build Coastguard Worker be more succinct or self-consistent. Factory methods specific to the Ganesh GPU backend are 711*c8dee2aaSAndroid Build Coastguard Worker defined publicly in include/gpu/ganesh/SkImageGanesh.h. 712*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeBackendTextureFromSkImage -> SkImages::GetBackendTextureFromImage 713*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeCrossContextFromPixmap -> SkImages::CrossContextTextureFromPixmap 714*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromAdoptedTexture -> SkImages::AdoptTextureFrom 715*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromBitmap -> SkImages::RasterFromBitmap 716*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromCompressedTexture -> SkImages::TextureFromCompressedTexture 717*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromEncoded -> SkImages::DeferredFromEncodedData 718*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromGenerator -> SkImages::DeferredFromGenerator 719*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromPicture -> SkImages::DeferredFromPicture 720*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromRaster -> SkImages::RasterFromPixmap 721*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromTexture -> SkImages::BorrowTextureFrom 722*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromYUVAPixmaps -> SkImages::TextureFromYUVAPixmaps 723*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromYUVATextures -> SkImages::TextureFromYUVATextures 724*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakePromiseTexture -> SkImages::PromiseTextureFrom 725*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakePromiseYUVATexture -> SkImages::PromiseTextureFromYUVA 726*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeRasterCopy -> SkImages::RasterFromPixmapCopy 727*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeRasterData -> SkImages::RasterFromData 728*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeRasterFromCompressed -> SkImages::RasterFromCompressedTextureData 729*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeTextureFromCompressed -> SkImages::TextureFromCompressedTextureData 730*c8dee2aaSAndroid Build Coastguard Worker To help in the transition, there is some temporary bridge code (e.g. aliases) which will 731*c8dee2aaSAndroid Build Coastguard Worker eventually be removed. 732*c8dee2aaSAndroid Build Coastguard Worker 733*c8dee2aaSAndroid Build Coastguard Worker* * * 734*c8dee2aaSAndroid Build Coastguard Worker 735*c8dee2aaSAndroid Build Coastguard WorkerMilestone 112 736*c8dee2aaSAndroid Build Coastguard Worker------------- 737*c8dee2aaSAndroid Build Coastguard Worker * SkImage::CubicResampler has been removed. Clients should use SkCubicResampler from 738*c8dee2aaSAndroid Build Coastguard Worker include/core/SkSamplingOptions.h instead (the former was an alias for the latter). 739*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeColorFilterBuilder has been added. This is a helper class for setting up color filters, 740*c8dee2aaSAndroid Build Coastguard Worker analogous to SkRuntimeShaderBuilder. 741*c8dee2aaSAndroid Build Coastguard Worker * SkShaders::CoordClamp has been added. It clamps the coords passed used with another 742*c8dee2aaSAndroid Build Coastguard Worker shader to a rectangle. 743*c8dee2aaSAndroid Build Coastguard Worker * SkRandom is no longer part of the public API. 744*c8dee2aaSAndroid Build Coastguard Worker * SK_ARRAY_COUNT is no longer part of the public API. Clients should use std::size. 745*c8dee2aaSAndroid Build Coastguard Worker * SK_SCALAR_IS_FLOAT is not set anymore. SkScalar is always a float (and has been since 2017). 746*c8dee2aaSAndroid Build Coastguard Worker * sk_realloc_throw (an internal API) now frees up memory when 0 is passed in as the size. 747*c8dee2aaSAndroid Build Coastguard Worker This should have no user-facing impacts for clients which use the default allocator, but 748*c8dee2aaSAndroid Build Coastguard Worker requires custom allocators to also implement this change. 749*c8dee2aaSAndroid Build Coastguard Worker * The particles module has been deleted. 750*c8dee2aaSAndroid Build Coastguard Worker * SkJpegEncoder::Options includes a parameter for XMP metadata. 751*c8dee2aaSAndroid Build Coastguard Worker * SkJpegEncoder includes support for encoding SkYUVAPixmaps directly. 752*c8dee2aaSAndroid Build Coastguard Worker 753*c8dee2aaSAndroid Build Coastguard Worker* * * 754*c8dee2aaSAndroid Build Coastguard Worker 755*c8dee2aaSAndroid Build Coastguard WorkerMilestone 111 756*c8dee2aaSAndroid Build Coastguard Worker------------- 757*c8dee2aaSAndroid Build Coastguard Worker * SkToBool is no longer part of the public API. 758*c8dee2aaSAndroid Build Coastguard Worker * A float version of SkCanvas::saveLayerAlpha now exists as SkCanvas::saveLayerAlphaf. 759*c8dee2aaSAndroid Build Coastguard Worker * SkAbs32 and SkTAbs are no longer part of the public API. 760*c8dee2aaSAndroid Build Coastguard Worker * SkAlign2, SkAlign4, SkAlign8, SkIsAlign2, SkIsAlign4, SkIsAlign8, SkAlignPtr, SkIsAlignPtr, 761*c8dee2aaSAndroid Build Coastguard Worker and SkAlignTo are no longer part of the public API. 762*c8dee2aaSAndroid Build Coastguard Worker * GrContextOptions::fSkipGLErrorChecks no longer stops checking shader compilation and program 763*c8dee2aaSAndroid Build Coastguard Worker linking success. 764*c8dee2aaSAndroid Build Coastguard Worker * SkBackingFit is no longer part of the public API. 765*c8dee2aaSAndroid Build Coastguard Worker * SkBudgeted was moved from include/core/SkTypes.h to include/gpu/GpuTypes.h and moved into the 766*c8dee2aaSAndroid Build Coastguard Worker skgpu namespace. 767*c8dee2aaSAndroid Build Coastguard Worker * include/gpu/GrConfig.h has been removed; its contents were folded into other files. 768*c8dee2aaSAndroid Build Coastguard Worker * SkLeftShift is no longer part of the public API. 769*c8dee2aaSAndroid Build Coastguard Worker * SK_MaxS32 and related constants are no longer part of the public API. 770*c8dee2aaSAndroid Build Coastguard Worker * include/core/SkMath.h is no longer part of the public API. 771*c8dee2aaSAndroid Build Coastguard Worker 772*c8dee2aaSAndroid Build Coastguard Worker* * * 773*c8dee2aaSAndroid Build Coastguard Worker 774*c8dee2aaSAndroid Build Coastguard WorkerMilestone 110 775*c8dee2aaSAndroid Build Coastguard Worker------------- 776*c8dee2aaSAndroid Build Coastguard Worker * SkParsePath::ToSVGString now returns the string, rather than modifying a passed-in string. 777*c8dee2aaSAndroid Build Coastguard Worker * Removed previously deprecated SkImageFilters::Paint factory. Use SkImageFilters::Shader instead. 778*c8dee2aaSAndroid Build Coastguard Worker * SkMesh::Make and SkMesh::MakeIndexed now return a SkMesh and error message string. 779*c8dee2aaSAndroid Build Coastguard Worker * SkPaint::getFillPath has been replaced with skpathutils::FillPathWithPaint from 780*c8dee2aaSAndroid Build Coastguard Worker include/core/SkPathUtils.h. The functionality should be the same. 781*c8dee2aaSAndroid Build Coastguard Worker 782*c8dee2aaSAndroid Build Coastguard Worker* * * 783*c8dee2aaSAndroid Build Coastguard Worker 784*c8dee2aaSAndroid Build Coastguard WorkerMilestone 109 785*c8dee2aaSAndroid Build Coastguard Worker------------- 786*c8dee2aaSAndroid Build Coastguard Worker * SkMesh vertex and fragment main() signatures have changed. See docs on SkMeshSpecification. 787*c8dee2aaSAndroid Build Coastguard Worker * Added SkImage::RescaleMode::kLinear so that the async rescale/readback APIs can scale in a 788*c8dee2aaSAndroid Build Coastguard Worker single step no matter the total scale factor (faster but lower quality than kRepeatedLinear). 789*c8dee2aaSAndroid Build Coastguard Worker * SkMesh buffer factories added that make copies of CPU-backed buffers. 790*c8dee2aaSAndroid Build Coastguard Worker * A utility for minifying Runtime Effect code has been added to Skia. Add the gn argument 791*c8dee2aaSAndroid Build Coastguard Worker "skia_compile_modules = true" to your gn args, and a new utility called "sksl-minify" will be 792*c8dee2aaSAndroid Build Coastguard Worker compiled as part of your Skia build. Run the command: 793*c8dee2aaSAndroid Build Coastguard Worker `skia-minify output-file.sksl input-file.sksl` 794*c8dee2aaSAndroid Build Coastguard Worker to write a minified version of the runtime shader "input-file.sksl" into a file named 795*c8dee2aaSAndroid Build Coastguard Worker "output-file.sksl". By default, sksl-minify expects a shader, but you can also pass command 796*c8dee2aaSAndroid Build Coastguard Worker line options `--colorfilter` or `--blender` if your program is a color-filter or a blender. 797*c8dee2aaSAndroid Build Coastguard Worker A compile error will be printed to stdout if an error is found in the program. 798*c8dee2aaSAndroid Build Coastguard Worker * The order of SkShader local matrix concatenation has been reversed. See skbug.com/13749 799*c8dee2aaSAndroid Build Coastguard Worker * PromiseImages have been added to Graphite. This supports both volatile and non-volatile Promise Images. 800*c8dee2aaSAndroid Build Coastguard Worker See the comment for SkImage::MakeGraphitePromiseTexture for more details. 801*c8dee2aaSAndroid Build Coastguard Worker * Graphite has loosened the immutability requirements of SkImages - through a new SkSurface API and careful 802*c8dee2aaSAndroid Build Coastguard Worker synchronization, clients can now mutate the backend object backing an SkImage. The new API consists of 803*c8dee2aaSAndroid Build Coastguard Worker SkSurface::asImage and SkSurface::makeImageCopy. We have a document that covers the expected use cases and 804*c8dee2aaSAndroid Build Coastguard Worker the synchronization required for each one. 805*c8dee2aaSAndroid Build Coastguard Worker 806*c8dee2aaSAndroid Build Coastguard Worker* * * 807*c8dee2aaSAndroid Build Coastguard Worker 808*c8dee2aaSAndroid Build Coastguard WorkerMilestone 108 809*c8dee2aaSAndroid Build Coastguard Worker------------- 810*c8dee2aaSAndroid Build Coastguard Worker * SkShader::asAGradient() has been removed. 811*c8dee2aaSAndroid Build Coastguard Worker * SkMesh and SkMeshSpecification has separate sk_sp and bare ptr getters for ref counted types. 812*c8dee2aaSAndroid Build Coastguard Worker * Add support for specifying a custom ICC profile to SkJpegEncoder, SkPngEncoder, and 813*c8dee2aaSAndroid Build Coastguard Worker SkWebpEncoder. 814*c8dee2aaSAndroid Build Coastguard Worker 815*c8dee2aaSAndroid Build Coastguard Worker* * * 816*c8dee2aaSAndroid Build Coastguard Worker 817*c8dee2aaSAndroid Build Coastguard WorkerMilestone 107 818*c8dee2aaSAndroid Build Coastguard Worker------------- 819*c8dee2aaSAndroid Build Coastguard Worker * Exported SkColor4f::toBytes_RGBA() and SkColor4f::FromBytes_RGBA. 820*c8dee2aaSAndroid Build Coastguard Worker * SkWebpEncoder: Added support for animated WebP image encoding. 821*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect shader effects were inadvertently allowing functions with the signature 822*c8dee2aaSAndroid Build Coastguard Worker `half4 main(float2 coords, half4 color)`. This was disallowed at Milestone 87, but the 823*c8dee2aaSAndroid Build Coastguard Worker restriction was inadvertently relaxed in later milestones. Going forward, we will only 824*c8dee2aaSAndroid Build Coastguard Worker accept a shader signature of `half4 main(float2 coords)`. 825*c8dee2aaSAndroid Build Coastguard Worker 826*c8dee2aaSAndroid Build Coastguard Worker* * * 827*c8dee2aaSAndroid Build Coastguard Worker 828*c8dee2aaSAndroid Build Coastguard WorkerMilestone 106 829*c8dee2aaSAndroid Build Coastguard Worker------------- 830*c8dee2aaSAndroid Build Coastguard Worker * sk_sp is marked with the [[clang::trivial_abi]] attribute where supported. 831*c8dee2aaSAndroid Build Coastguard Worker * SkMesh API: Allows a user to draw a vertex mesh with custom attributes and 832*c8dee2aaSAndroid Build Coastguard Worker varyings using SkSL. Mesh data (vertex and index) can be created on a 833*c8dee2aaSAndroid Build Coastguard Worker GrDirectContext to avoid re-uploading data per draw. Currently does not 834*c8dee2aaSAndroid Build Coastguard Worker work with SkPicture or any backend but GPU. 835*c8dee2aaSAndroid Build Coastguard Worker * Added SkColorFilters::Blend(const SkColor4f&, sk_sp<SkColorSpace>, SkBlendMode) to 836*c8dee2aaSAndroid Build Coastguard Worker complement the existing SkColorFilters::Blend(SkColor, SkBlendMode) factory. 837*c8dee2aaSAndroid Build Coastguard Worker * The experimental C API was removed. 838*c8dee2aaSAndroid Build Coastguard Worker * Added support for AVIF decoding using libavif. 839*c8dee2aaSAndroid Build Coastguard Worker 840*c8dee2aaSAndroid Build Coastguard Worker* * * 841*c8dee2aaSAndroid Build Coastguard Worker 842*c8dee2aaSAndroid Build Coastguard WorkerMilestone 104 843*c8dee2aaSAndroid Build Coastguard Worker------------- 844*c8dee2aaSAndroid Build Coastguard Worker * New functions SkBitmap::getColor4f and SkPixmap::getColor4f return float colors. 845*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect takes and returns a const SkData. 846*c8dee2aaSAndroid Build Coastguard Worker * SkRasterHandleAllocator::MakeCanvas now takes optional SkSurfaceProps. 847*c8dee2aaSAndroid Build Coastguard Worker * SkImage::MakeFromPicture and SkImageGenerator::MakeFromPicture now take an optional 848*c8dee2aaSAndroid Build Coastguard Worker SkSurfaceProps to use when rasterizing the picture. 849*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect::Uniform now stores the uniform name as a string_view, rather than a 850*c8dee2aaSAndroid Build Coastguard Worker SkString. Related methods SkRuntimeEffect::findUniform and SkRuntimeEffectBuilder::uniform 851*c8dee2aaSAndroid Build Coastguard Worker also take std::string_view instead of const char*. 852*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect::Child now stores the child name as a string_view, rather than a SkString. 853*c8dee2aaSAndroid Build Coastguard Worker Related methods SkRuntimeEffect::findChild and SkRuntimeEffectBuilder::child also take 854*c8dee2aaSAndroid Build Coastguard Worker std::string_view instead of const char*. Also, SkImageFilters::RuntimeShader now takes the 855*c8dee2aaSAndroid Build Coastguard Worker child name(s) as std::string_view instead of const char*. 856*c8dee2aaSAndroid Build Coastguard Worker * skcms.h has been relocated to //modules/skcms/skcms.h (was //include/third_party/skcms/skcms.h) 857*c8dee2aaSAndroid Build Coastguard Worker * New functions SkCanvas::getBaseProps and SkCanvas::getTopProps; SkCanvas::getBaseProps is a 858*c8dee2aaSAndroid Build Coastguard Worker direct replacement for the (now deprecated) SkCanvas::getProps function, while getTopProps is 859*c8dee2aaSAndroid Build Coastguard Worker a variant that returns the SkSurfaceProps that are active in the current layer. 860*c8dee2aaSAndroid Build Coastguard Worker * New function SkEventTracer::newTracingSection(const char* name) enables splitting traces up 861*c8dee2aaSAndroid Build Coastguard Worker into different sections for a selection of backend tracing frameworks (Perfetto, SkDebugf). 862*c8dee2aaSAndroid Build Coastguard Worker 863*c8dee2aaSAndroid Build Coastguard Worker* * * 864*c8dee2aaSAndroid Build Coastguard Worker 865*c8dee2aaSAndroid Build Coastguard WorkerMilestone 103 866*c8dee2aaSAndroid Build Coastguard Worker------------- 867*c8dee2aaSAndroid Build Coastguard Worker * SkSamplingOptions now includes anisotropic filtering. Implemented on GPU only. 868*c8dee2aaSAndroid Build Coastguard Worker * SkBitmap::clear and SkBitmap::clearColor take in SkColor4fs 869*c8dee2aaSAndroid Build Coastguard Worker 870*c8dee2aaSAndroid Build Coastguard Worker* * * 871*c8dee2aaSAndroid Build Coastguard Worker 872*c8dee2aaSAndroid Build Coastguard WorkerMilestone 102 873*c8dee2aaSAndroid Build Coastguard Worker------------- 874*c8dee2aaSAndroid Build Coastguard Worker * Add glGetFloatv and glSamplerParameterf to GrGLInterface. 875*c8dee2aaSAndroid Build Coastguard Worker * GrGLCreateNativeInterface is removed. Use GrGLMakeNativeInterface. 876*c8dee2aaSAndroid Build Coastguard Worker * GrContextOptions::fSharpenMipmappedTextures is removed. MIP LOD is now always 877*c8dee2aaSAndroid Build Coastguard Worker biased on the GPU backend. The CPU backend implementation is modified to match 878*c8dee2aaSAndroid Build Coastguard Worker this behavior. 879*c8dee2aaSAndroid Build Coastguard Worker * Passing SkCanvas::kStrict_SrcRectConstraint disables mipmapping. The old behavior differed 880*c8dee2aaSAndroid Build Coastguard Worker between GPU and CPU. CPU always computed a new set of mipmap based on the subset. GPU restricted 881*c8dee2aaSAndroid Build Coastguard Worker the sampling coordinates to the subset in the base level but upper level pixels that map to 882*c8dee2aaSAndroid Build Coastguard Worker pixels outside the subset in the base level were still used. To get the previous CPU behavior 883*c8dee2aaSAndroid Build Coastguard Worker use SkImage::makeSubset() to make a subset image and draw that. The previous GPU behavior is 884*c8dee2aaSAndroid Build Coastguard Worker similar, though not exactly, equivalent to making a mipmapped image shader from the original 885*c8dee2aaSAndroid Build Coastguard Worker image and applying that to a rectangle. 886*c8dee2aaSAndroid Build Coastguard Worker * Fully disable experimental support for HW tessellation shaders. 887*c8dee2aaSAndroid Build Coastguard Worker GrContextOptions::fEnableExperimentalHardwareTessellation is ignored and behaves as if it is 888*c8dee2aaSAndroid Build Coastguard Worker false. The optimized path renderer no longer requires hardware tessellation at all, and 889*c8dee2aaSAndroid Build Coastguard Worker is automatically enabled when drawing to an SkSurface created with MSAA, or when 890*c8dee2aaSAndroid Build Coastguard Worker GrContextOptions::fInternalMultisampleCount is set to a non-zero value. 891*c8dee2aaSAndroid Build Coastguard Worker 892*c8dee2aaSAndroid Build Coastguard Worker* * * 893*c8dee2aaSAndroid Build Coastguard Worker 894*c8dee2aaSAndroid Build Coastguard WorkerMilestone 101 895*c8dee2aaSAndroid Build Coastguard Worker------------- 896*c8dee2aaSAndroid Build Coastguard Worker * Add maxSurfaceSampleCountForColorType(SkColorType ct) in GrContextThreadSafeProxy 897*c8dee2aaSAndroid Build Coastguard Worker * Enums SkAlphaType and SkColorType are broken out into their own header files in include/core/ 898*c8dee2aaSAndroid Build Coastguard Worker 899*c8dee2aaSAndroid Build Coastguard Worker* * * 900*c8dee2aaSAndroid Build Coastguard Worker 901*c8dee2aaSAndroid Build Coastguard WorkerMilestone 100 902*c8dee2aaSAndroid Build Coastguard Worker------------- 903*c8dee2aaSAndroid Build Coastguard Worker * Skia now requires C++17 and the corresponding standard library (or newer). 904*c8dee2aaSAndroid Build Coastguard Worker * Skia on iOS now requires iOS 11 to build; earlier versions of iOS do not support C++17. 905*c8dee2aaSAndroid Build Coastguard Worker * The skstd::string_view and skstd::optional Skia classes have been replaced with the C++17 native 906*c8dee2aaSAndroid Build Coastguard Worker std::string_view and std::optional. 907*c8dee2aaSAndroid Build Coastguard Worker * Added SkSurface::resolveMSAA api to force Skia to resolve MSAA draws. Useful for when 908*c8dee2aaSAndroid Build Coastguard Worker Skia wraps a client's texture as the resolve target. 909*c8dee2aaSAndroid Build Coastguard Worker * All of the `makeShader` functions associated with `SkRuntimeEffect` no longer take an 910*c8dee2aaSAndroid Build Coastguard Worker `isOpaque` parameter. These functions will now make a best effort to determine if your 911*c8dee2aaSAndroid Build Coastguard Worker shader always produces opaque output, and optimize accordingly. If you definitely want your 912*c8dee2aaSAndroid Build Coastguard Worker shader to produce opaque output, do so in the shader's SkSL code. This can be done by adjusting 913*c8dee2aaSAndroid Build Coastguard Worker any `return` statement in your shader with a swizzle: `return color.rgb1;`. 914*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/506462 915*c8dee2aaSAndroid Build Coastguard Worker * SkRSXform is now exported to DLL/.so files. 916*c8dee2aaSAndroid Build Coastguard Worker* * * 917*c8dee2aaSAndroid Build Coastguard Worker 918*c8dee2aaSAndroid Build Coastguard WorkerMilestone 99 919*c8dee2aaSAndroid Build Coastguard Worker------------ 920*c8dee2aaSAndroid Build Coastguard Worker * Added two new intrinsic functions to SkSL for use in runtime effects: 921*c8dee2aaSAndroid Build Coastguard Worker vec3 toLinearSrgb(vec3 color) 922*c8dee2aaSAndroid Build Coastguard Worker vec3 fromLinearSrgb(vec3 color) 923*c8dee2aaSAndroid Build Coastguard Worker These convert RGB color values between the working color space (the color space of the 924*c8dee2aaSAndroid Build Coastguard Worker destination surface) and a known, fixed color space. `toLinearSrgb` converts a color to the 925*c8dee2aaSAndroid Build Coastguard Worker sRGB color gamut, with a linear transfer function. `fromLinearSrgb` converts a color from that 926*c8dee2aaSAndroid Build Coastguard Worker same color space. These are helpful for effects that need to work in a specific color space, or 927*c8dee2aaSAndroid Build Coastguard Worker want to apply effects (like lighting) that work best in a linear color space. 928*c8dee2aaSAndroid Build Coastguard Worker Note that if the destination surface has no color space (color space is `nullptr`), these 929*c8dee2aaSAndroid Build Coastguard Worker intrinsics will do no conversion, and return the input color unchanged. 930*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/481416 931*c8dee2aaSAndroid Build Coastguard Worker * Added a new variant of SkImageFilters::RuntimeShader that supports multiple child nodes. 932*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/489536 933*c8dee2aaSAndroid Build Coastguard Worker * Add the ability to specify palette overrides in SkFontArguments. Implemented 934*c8dee2aaSAndroid Build Coastguard Worker for the FreeType-backed SkFontMgrs. 935*c8dee2aaSAndroid Build Coastguard Worker 936*c8dee2aaSAndroid Build Coastguard Worker* * * 937*c8dee2aaSAndroid Build Coastguard Worker 938*c8dee2aaSAndroid Build Coastguard WorkerMilestone 98 939*c8dee2aaSAndroid Build Coastguard Worker------------ 940*c8dee2aaSAndroid Build Coastguard Worker * The following functions and methods are not defined in SkSurface when SK_SUPPORT_GPU is 0: 941*c8dee2aaSAndroid Build Coastguard Worker MakeFromBackendTexture, MakeFromBackendRenderTarget, MakeRenderTarget, 942*c8dee2aaSAndroid Build Coastguard Worker getBackendTexture, getBackendRenderTarget, replaceBackendTexture. flush() with parameters 943*c8dee2aaSAndroid Build Coastguard Worker was removed as well. These were all no-ops anyway when just the CPU backend was compiled in 944*c8dee2aaSAndroid Build Coastguard Worker (noting that flush() and flushAndSubmit() are still no-ops on the CPU backend). 945*c8dee2aaSAndroid Build Coastguard Worker * GrBackendSemaphore only includes methods that match the GPU backend that Skia was compiled for. 946*c8dee2aaSAndroid Build Coastguard Worker For example, initVulkan and vkSemaphore are not defined unless the Vulkan backend is compiled 947*c8dee2aaSAndroid Build Coastguard Worker into Skia. 948*c8dee2aaSAndroid Build Coastguard Worker * Surfaces and images are now limited to just under 2GB of total size. Previously, larger images 949*c8dee2aaSAndroid Build Coastguard Worker could be created, but the CPU backend would fail to index them correctly. 950*c8dee2aaSAndroid Build Coastguard Worker * SkCanvas::drawVertices and SkCanvas::drawPatch variants that did not take SkBlendMode are 951*c8dee2aaSAndroid Build Coastguard Worker removed. 952*c8dee2aaSAndroid Build Coastguard Worker * SkImageFilters::RuntimeShader is a new public API that enables adding RuntimeShaderEffects into 953*c8dee2aaSAndroid Build Coastguard Worker image filter graph. 954*c8dee2aaSAndroid Build Coastguard Worker * SkImage::makeRawShader is a new public API that creates "raw" image shaders. makeRawShader 955*c8dee2aaSAndroid Build Coastguard Worker functions like SkImage::makeShader, but for images that contain non-color data. This includes 956*c8dee2aaSAndroid Build Coastguard Worker images encoding things like normals, material properties (eg roughness), heightmaps, or any 957*c8dee2aaSAndroid Build Coastguard Worker other purely mathematical data that happens to be stored in an image. These types of images are 958*c8dee2aaSAndroid Build Coastguard Worker useful with some programmable shaders (ie SkRuntimeEffect). 959*c8dee2aaSAndroid Build Coastguard Worker Raw image shaders work like regular image shaders (including filtering and tiling), with a few 960*c8dee2aaSAndroid Build Coastguard Worker major differences: 961*c8dee2aaSAndroid Build Coastguard Worker - No color space transformation is ever applied (the color space of the image is ignored). 962*c8dee2aaSAndroid Build Coastguard Worker - Images with an alpha type of kUnpremul are not automatically premultiplied. 963*c8dee2aaSAndroid Build Coastguard Worker - Bicubic filtering is not supported. If SkSamplingOptions::useCubic is true, these factories 964*c8dee2aaSAndroid Build Coastguard Worker will return nullptr. 965*c8dee2aaSAndroid Build Coastguard Worker * Removed SkCanvas::markCTM and SkCanvas::findMarkedCTM. These were created to be used with other 966*c8dee2aaSAndroid Build Coastguard Worker features that have since been deleted, so they served no purpose. 967*c8dee2aaSAndroid Build Coastguard Worker * Added limited JPEGXL support. 968*c8dee2aaSAndroid Build Coastguard Worker 969*c8dee2aaSAndroid Build Coastguard Worker* * * 970*c8dee2aaSAndroid Build Coastguard Worker 971*c8dee2aaSAndroid Build Coastguard WorkerMilestone 97 972*c8dee2aaSAndroid Build Coastguard Worker------------ 973*c8dee2aaSAndroid Build Coastguard Worker * Added basic support for vulkan DRM modifiers. All of these are treated as read only textures 974*c8dee2aaSAndroid Build Coastguard Worker internally (versus querying specific modifier support). Clients can either pass a flag to Vulkan 975*c8dee2aaSAndroid Build Coastguard Worker GrBackendFormat to say it uses modifiers or pass the VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT 976*c8dee2aaSAndroid Build Coastguard Worker to a GrBackendTexture via the GrVkImageInfo struct. 977*c8dee2aaSAndroid Build Coastguard Worker * The following functions and methods are not defined in SkImage when SK_SUPPORT_GPU is 0: 978*c8dee2aaSAndroid Build Coastguard Worker MakeTextureFromCompressed, MakeFromTexture, MakeFromCompressedTexture, 979*c8dee2aaSAndroid Build Coastguard Worker MakeCrossContextFromPixmap, MakeFromAdoptedTexture, MakeFromYUVATextures, 980*c8dee2aaSAndroid Build Coastguard Worker MakeFromYUVAPixmaps, MakePromiseTexture, MakePromiseYUVATexture, MakeBackendTextureFromSkImage, 981*c8dee2aaSAndroid Build Coastguard Worker flush, flushAndSubmit, getBackendTexture, makeTextureImage. 982*c8dee2aaSAndroid Build Coastguard Worker These were all no-ops anyway when just the CPU backend was compiled in. 983*c8dee2aaSAndroid Build Coastguard Worker 984*c8dee2aaSAndroid Build Coastguard Worker* * * 985*c8dee2aaSAndroid Build Coastguard Worker 986*c8dee2aaSAndroid Build Coastguard WorkerMilestone 96 987*c8dee2aaSAndroid Build Coastguard Worker------------ 988*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect no longer clamps the RGB values of an effect's output to the range 0..A. 989*c8dee2aaSAndroid Build Coastguard Worker This makes it easier to use a hierarchy of SkSL shaders where intermediate values do not 990*c8dee2aaSAndroid Build Coastguard Worker represent colors but are, for example, non-color inputs to a lighting model. 991*c8dee2aaSAndroid Build Coastguard Worker http://review.skia.org/452558 992*c8dee2aaSAndroid Build Coastguard Worker 993*c8dee2aaSAndroid Build Coastguard Worker* * * 994*c8dee2aaSAndroid Build Coastguard Worker 995*c8dee2aaSAndroid Build Coastguard WorkerMilestone 95 996*c8dee2aaSAndroid Build Coastguard Worker------------ 997*c8dee2aaSAndroid Build Coastguard Worker * Minimum supported iOS raised from 8 to 11. Skia may build back to iOS 9 but versions older 998*c8dee2aaSAndroid Build Coastguard Worker than 11 are not tested. Community contributions to support versions 9 and 10 of iOS may be 999*c8dee2aaSAndroid Build Coastguard Worker considered, but they may not be complex as they cannot be tested. 1000*c8dee2aaSAndroid Build Coastguard Worker 1001*c8dee2aaSAndroid Build Coastguard Worker* * * 1002*c8dee2aaSAndroid Build Coastguard Worker 1003*c8dee2aaSAndroid Build Coastguard WorkerMilestone 94 1004*c8dee2aaSAndroid Build Coastguard Worker------------ 1005*c8dee2aaSAndroid Build Coastguard Worker * Metal backend has been changed to track command buffer resources manually 1006*c8dee2aaSAndroid Build Coastguard Worker rather than using retained resources. 1007*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/432878 1008*c8dee2aaSAndroid Build Coastguard Worker 1009*c8dee2aaSAndroid Build Coastguard Worker * Added virtual onResetClip() to SkCanvas for Android Framework, to emulate the soon-to-be-removed 1010*c8dee2aaSAndroid Build Coastguard Worker expanding clip ops guarded by SK_SUPPORT_DEPRECATED_CLIPOPS. 1011*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/430897 1012*c8dee2aaSAndroid Build Coastguard Worker 1013*c8dee2aaSAndroid Build Coastguard Worker * Removed SK_SUPPORT_DEPRECATED_CLIPOPS build flag. Clips can only be intersect and difference. 1014*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/436565 1015*c8dee2aaSAndroid Build Coastguard Worker 1016*c8dee2aaSAndroid Build Coastguard Worker * There is a new syntax for invoking (sampling) child effects in SkSL. Previously, children 1017*c8dee2aaSAndroid Build Coastguard Worker (shaders, colorFilters, blenders) were invoked using different overloads of `sample`. That 1018*c8dee2aaSAndroid Build Coastguard Worker syntax is deprecated (but still supported). Now, the child behaves like an object, with a method 1019*c8dee2aaSAndroid Build Coastguard Worker name `eval`. The arguments to these `eval` methods are the same as the arguments in the old 1020*c8dee2aaSAndroid Build Coastguard Worker `sample` intrinsics. For example: 1021*c8dee2aaSAndroid Build Coastguard Worker // Old syntax: 1022*c8dee2aaSAndroid Build Coastguard Worker sample(shader, xy) 1023*c8dee2aaSAndroid Build Coastguard Worker sample(colorFilter, color) 1024*c8dee2aaSAndroid Build Coastguard Worker sample(blender, srcColor, dstColor) 1025*c8dee2aaSAndroid Build Coastguard Worker // New syntax: 1026*c8dee2aaSAndroid Build Coastguard Worker shader.eval(xy) 1027*c8dee2aaSAndroid Build Coastguard Worker colorFilter.eval(color) 1028*c8dee2aaSAndroid Build Coastguard Worker blender.eval(srcColor, dstColor) 1029*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/444735 1030*c8dee2aaSAndroid Build Coastguard Worker 1031*c8dee2aaSAndroid Build Coastguard Worker* * * 1032*c8dee2aaSAndroid Build Coastguard Worker 1033*c8dee2aaSAndroid Build Coastguard WorkerMilestone 93 1034*c8dee2aaSAndroid Build Coastguard Worker------------ 1035*c8dee2aaSAndroid Build Coastguard Worker * Removed SkPaint::getHash 1036*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/419336 1037*c8dee2aaSAndroid Build Coastguard Worker 1038*c8dee2aaSAndroid Build Coastguard Worker * Removed SkShaders::Lerp. It was unused (and easy to replicate with SkRuntimeEffect). 1039*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/419796 1040*c8dee2aaSAndroid Build Coastguard Worker 1041*c8dee2aaSAndroid Build Coastguard Worker * The default value of GrContextOptions::fReduceOpsTaskSplitting is now enabled. 1042*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/419836 1043*c8dee2aaSAndroid Build Coastguard Worker 1044*c8dee2aaSAndroid Build Coastguard Worker * Removed SkMatrix44 1045*c8dee2aaSAndroid Build Coastguard Worker 1046*c8dee2aaSAndroid Build Coastguard Worker* * * 1047*c8dee2aaSAndroid Build Coastguard Worker 1048*c8dee2aaSAndroid Build Coastguard WorkerMilestone 92 1049*c8dee2aaSAndroid Build Coastguard Worker------------ 1050*c8dee2aaSAndroid Build Coastguard Worker * Hides SkPathEffect::computeFastBounds() from public API; external subclasses of SkPathEffect 1051*c8dee2aaSAndroid Build Coastguard Worker must implement onComputeFastBounds() but can return false to signal it's not computable. 1052*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/406140 1053*c8dee2aaSAndroid Build Coastguard Worker 1054*c8dee2aaSAndroid Build Coastguard Worker * Add SkM44::RectToRect constructor (SkM44's equivalent to SkMatrix::RectToRect) 1055*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/402957 1056*c8dee2aaSAndroid Build Coastguard Worker 1057*c8dee2aaSAndroid Build Coastguard Worker * Metal support has been removed for versions of iOS older than 10.0 and MacOS older than 10.14. 1058*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/401816 1059*c8dee2aaSAndroid Build Coastguard Worker 1060*c8dee2aaSAndroid Build Coastguard Worker * Removed custom attributes from SkVertices and the corresponding `varying` feature from 1061*c8dee2aaSAndroid Build Coastguard Worker SkRuntimeEffect. 1062*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/398222 1063*c8dee2aaSAndroid Build Coastguard Worker 1064*c8dee2aaSAndroid Build Coastguard Worker * Dropped support for mixed samples. Mixed samples is no longer relevant for Ganesh. DMSAA and the 1065*c8dee2aaSAndroid Build Coastguard Worker new Ganesh architecture both rely on full MSAA, and any platform where mixed samples is 1066*c8dee2aaSAndroid Build Coastguard Worker supported will ultimately not use the old architecture. 1067*c8dee2aaSAndroid Build Coastguard Worker 1068*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect::Make has been removed. It is replaced by MakeForShader and MakeForColorFilter. 1069*c8dee2aaSAndroid Build Coastguard Worker These functions do stricter error checking on the SkSL, to ensure it is valid for a particular 1070*c8dee2aaSAndroid Build Coastguard Worker stage of the Skia pipeline. 1071*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/402156 1072*c8dee2aaSAndroid Build Coastguard Worker 1073*c8dee2aaSAndroid Build Coastguard Worker* * * 1074*c8dee2aaSAndroid Build Coastguard Worker 1075*c8dee2aaSAndroid Build Coastguard WorkerMilestone 91 1076*c8dee2aaSAndroid Build Coastguard Worker------------ 1077*c8dee2aaSAndroid Build Coastguard Worker * The SkSL DSL API has been moved into public headers, although it is still under active 1078*c8dee2aaSAndroid Build Coastguard Worker development and isn't quite ready for prime time yet. 1079*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/378496 1080*c8dee2aaSAndroid Build Coastguard Worker 1081*c8dee2aaSAndroid Build Coastguard Worker * Skia's GPU backend no longer supports NVPR. Our more recent path renderers are more 1082*c8dee2aaSAndroid Build Coastguard Worker performant and are not limited to nVidia hardware. 1083*c8dee2aaSAndroid Build Coastguard Worker 1084*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect now supports uniforms of type int, int2, int3, and int4. Per the OpenGL ES 1085*c8dee2aaSAndroid Build Coastguard Worker Shading Language Version 1.00 specification, there are few guarantees about the representation 1086*c8dee2aaSAndroid Build Coastguard Worker or range of integral types, and operations that assume integral representation (eg, bitwise), 1087*c8dee2aaSAndroid Build Coastguard Worker are not supported. 1088*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/391856 1089*c8dee2aaSAndroid Build Coastguard Worker 1090*c8dee2aaSAndroid Build Coastguard Worker * SkRuntimeEffect requires that 'shader' variables be declared as 'uniform'. The deprecated 1091*c8dee2aaSAndroid Build Coastguard Worker syntax of 'in shader' is no longer supported. 1092*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/393081 1093*c8dee2aaSAndroid Build Coastguard Worker 1094*c8dee2aaSAndroid Build Coastguard Worker* * * 1095*c8dee2aaSAndroid Build Coastguard Worker 1096*c8dee2aaSAndroid Build Coastguard WorkerMilestone 90 1097*c8dee2aaSAndroid Build Coastguard Worker------------ 1098*c8dee2aaSAndroid Build Coastguard Worker * Renamed use of sk_cf_obj in external Metal types to sk_cfp. 1099*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/372556 1100*c8dee2aaSAndroid Build Coastguard Worker 1101*c8dee2aaSAndroid Build Coastguard Worker * GrDirectContext::ComputeImageSize() is removed. Use SkImage::textureSize() instead. 1102*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/368621 1103*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/369317 1104*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/371958 1105*c8dee2aaSAndroid Build Coastguard Worker 1106*c8dee2aaSAndroid Build Coastguard Worker * Remove SkImageFilter::MakeMatrixFilter as it was unused and replaced with 1107*c8dee2aaSAndroid Build Coastguard Worker SkImageFilters::MatrixTransform. 1108*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/366318 1109*c8dee2aaSAndroid Build Coastguard Worker 1110*c8dee2aaSAndroid Build Coastguard Worker * Refactored particle system to use a single code string containing both Effect and Particle code. 1111*c8dee2aaSAndroid Build Coastguard Worker Uniform APIs are now shared for all program entry points, and no longer prefixed with 'Effect' 1112*c8dee2aaSAndroid Build Coastguard Worker or 'Particle'. For example, instead of `SkParticleEffect::effectUniformInfo` and 1113*c8dee2aaSAndroid Build Coastguard Worker `SkParticleEffect::particleUniformInfo`, there is just `SkParticleEffect::uniformInfo`. 1114*c8dee2aaSAndroid Build Coastguard Worker 1115*c8dee2aaSAndroid Build Coastguard Worker * Remove SkImageFilter::CropRect from the public API as it's no longer usable. All factories 1116*c8dee2aaSAndroid Build Coastguard Worker work with 'SkRect', 'SkIRect', or nullable pointers to 'Sk[I]Rect'. 1117*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/361496 1118*c8dee2aaSAndroid Build Coastguard Worker 1119*c8dee2aaSAndroid Build Coastguard Worker * Remove deprecated SkImageFilter factory functions and supporting types. All default-provided 1120*c8dee2aaSAndroid Build Coastguard Worker SkImageFilters are now only constructed via 'include/effects/SkImageFilters.h' 1121*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/357285 1122*c8dee2aaSAndroid Build Coastguard Worker 1123*c8dee2aaSAndroid Build Coastguard Worker * Added SkRuntimeEffect::makeImage() to capture the output of an SkRuntimeEffect in an SkImage. 1124*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/357284 1125*c8dee2aaSAndroid Build Coastguard Worker 1126*c8dee2aaSAndroid Build Coastguard Worker * Updated SkRuntimeEffect::Make() to take an Options struct. It also now returns a Results struct 1127*c8dee2aaSAndroid Build Coastguard Worker instead of a tuple. 1128*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/363785 1129*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/367060 1130*c8dee2aaSAndroid Build Coastguard Worker 1131*c8dee2aaSAndroid Build Coastguard Worker * Changed SkRuntimeEffect::Varying to have lower-case member names, with no 'f' prefix. 1132*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/365656 1133*c8dee2aaSAndroid Build Coastguard Worker 1134*c8dee2aaSAndroid Build Coastguard Worker * Changed SkRuntimeEffect::Uniform to have lower-case member names, with no 'f' prefix. 1135*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/365696 1136*c8dee2aaSAndroid Build Coastguard Worker 1137*c8dee2aaSAndroid Build Coastguard Worker * Deprecate (and ignore) SkAndroidCodec::ExifOrientation 1138*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/344763 1139*c8dee2aaSAndroid Build Coastguard Worker 1140*c8dee2aaSAndroid Build Coastguard Worker * Fix several minor issues in lighting image filters: 1141*c8dee2aaSAndroid Build Coastguard Worker - The spotlight falloff exponent is no longer clamped to [1, 128]. SVG 1.1 requires the specular 1142*c8dee2aaSAndroid Build Coastguard Worker lighting effect's exponent (shininess) to be clamped; not the spotlight's falloff. Any such 1143*c8dee2aaSAndroid Build Coastguard Worker parameter clamping is the client's responsibility, which makes Skia's lighting effect easily 1144*c8dee2aaSAndroid Build Coastguard Worker adaptable to SVG 1.1 (clamp exponent) or SVG 2 (no clamp). 1145*c8dee2aaSAndroid Build Coastguard Worker - Fix spotlight incorrectly scaling light within the cone angle. 1146*c8dee2aaSAndroid Build Coastguard Worker - Move saturation of RGBA to after multiplying lighting intensity with the lighting color, which 1147*c8dee2aaSAndroid Build Coastguard Worker improves rendering when diffuse and specular constants are greater than 1. 1148*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/355496 1149*c8dee2aaSAndroid Build Coastguard Worker 1150*c8dee2aaSAndroid Build Coastguard Worker * SkDeferredDisplayListRecorder::makePromiseTexture has moved to SkImage::MakePromiseTexture. 1151*c8dee2aaSAndroid Build Coastguard Worker New code should use the new entry point – migration CLs will be coming soon. 1152*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/373716 1153*c8dee2aaSAndroid Build Coastguard Worker 1154*c8dee2aaSAndroid Build Coastguard Worker* * * 1155*c8dee2aaSAndroid Build Coastguard Worker 1156*c8dee2aaSAndroid Build Coastguard WorkerMilestone 89 1157*c8dee2aaSAndroid Build Coastguard Worker------------ 1158*c8dee2aaSAndroid Build Coastguard Worker 1159*c8dee2aaSAndroid Build Coastguard Worker * Removed SkYUVAIndex and SkYUVASizeInfo. These were no longer used in any 1160*c8dee2aaSAndroid Build Coastguard Worker public APIs. 1161*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/352497 1162*c8dee2aaSAndroid Build Coastguard Worker 1163*c8dee2aaSAndroid Build Coastguard Worker * Numerous changes to SkRuntimeEffect, aligning the capabilities and restrictions with 1164*c8dee2aaSAndroid Build Coastguard Worker The OpenGL ES Shading Language 1.00 (aka, the shading language of OpenGL ES2 and WebGL 1.0). 1165*c8dee2aaSAndroid Build Coastguard Worker All built-in functions from sections 8.1 through 8.6 implemented & tested on all backends. 1166*c8dee2aaSAndroid Build Coastguard Worker Removed types and features that require newer versions of GLSL: 1167*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/346657 [Non-square matrices] 1168*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/347046 [uint, short, ushort, byte, ubyte] 1169*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/349056 [while and do-while loops] 1170*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/350030 [Bitwise operators and integer remainder] 1171*c8dee2aaSAndroid Build Coastguard Worker 1172*c8dee2aaSAndroid Build Coastguard Worker * Add SkShadowUtils::GetLocalBounds. Generates bounding box for shadows 1173*c8dee2aaSAndroid Build Coastguard Worker relative to path. 1174*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/351922 1175*c8dee2aaSAndroid Build Coastguard Worker 1176*c8dee2aaSAndroid Build Coastguard Worker * Removed SkPerlinNoiseShader::MakeImprovedNoise. 1177*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/352057 1178*c8dee2aaSAndroid Build Coastguard Worker 1179*c8dee2aaSAndroid Build Coastguard Worker * Removed deprecated version of MakeFromYUVATextures. Use the version 1180*c8dee2aaSAndroid Build Coastguard Worker that takes GrYUVABackendTextures instead. 1181*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/345174 1182*c8dee2aaSAndroid Build Coastguard Worker 1183*c8dee2aaSAndroid Build Coastguard Worker * SkAnimatedImage: Always respect exif orientation 1184*c8dee2aaSAndroid Build Coastguard Worker Replace SkPixmapPriv::ShouldSwapWidthHeight with 1185*c8dee2aaSAndroid Build Coastguard Worker SkEncodedOriginSwapsWidthHeight. 1186*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/344762 1187*c8dee2aaSAndroid Build Coastguard Worker 1188*c8dee2aaSAndroid Build Coastguard Worker * Add kDirectionalLight_ShadowFlag support. If enabled, light position represents 1189*c8dee2aaSAndroid Build Coastguard Worker a vector pointing towards the light, and light radius is blur radius at elevation 1. 1190*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/321792 1191*c8dee2aaSAndroid Build Coastguard Worker 1192*c8dee2aaSAndroid Build Coastguard Worker * Support GL_LUMINANCE8_ALPHA8 textures. These can be used with GrBackendTexture APIs 1193*c8dee2aaSAndroid Build Coastguard Worker on GrDirectContext and as planes of YUVA images via GrYUVABackendTextures. 1194*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/344761 1195*c8dee2aaSAndroid Build Coastguard Worker 1196*c8dee2aaSAndroid Build Coastguard Worker * Removed previously deprecated SkImage::MakeFromYUVATexturesCopyToExternal. 1197*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/342077 1198*c8dee2aaSAndroid Build Coastguard Worker 1199*c8dee2aaSAndroid Build Coastguard Worker * Add versions of GrDirectContext::createBackendTexture and updateBackendTexture 1200*c8dee2aaSAndroid Build Coastguard Worker that take a GrSurfaceOrigin. The previous versions are deprecated. 1201*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/341005 1202*c8dee2aaSAndroid Build Coastguard Worker 1203*c8dee2aaSAndroid Build Coastguard Worker * Remove support for deprecated kDontClipToLayer_SaveLayerFlag in SkCanvas::SaveLayerRec 1204*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/339988 1205*c8dee2aaSAndroid Build Coastguard Worker 1206*c8dee2aaSAndroid Build Coastguard Worker * Expose more info in SkCodec::FrameInfo 1207*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/339857 1208*c8dee2aaSAndroid Build Coastguard Worker 1209*c8dee2aaSAndroid Build Coastguard Worker * Added dither control to the SkImageFilters::Shader factory. 1210*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/338156 1211*c8dee2aaSAndroid Build Coastguard Worker 1212*c8dee2aaSAndroid Build Coastguard Worker * Add MTLBinaryArchive parameter to GrMtlBackendContext. This allows 1213*c8dee2aaSAndroid Build Coastguard Worker Skia to cache PipelineStates in the given archive for faster 1214*c8dee2aaSAndroid Build Coastguard Worker shader compiles on future runs. The client must handle loading and 1215*c8dee2aaSAndroid Build Coastguard Worker saving of the archive. 1216*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/333758 1217*c8dee2aaSAndroid Build Coastguard Worker 1218*c8dee2aaSAndroid Build Coastguard Worker * Deprecated enum SkYUVAInfo::PlanarConfig has been removed. 1219*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/334161 1220*c8dee2aaSAndroid Build Coastguard Worker 1221*c8dee2aaSAndroid Build Coastguard Worker * Deprecated SkImage factories have been removed from 1222*c8dee2aaSAndroid Build Coastguard Worker SkDeferredDisplayListRecorder. 1223*c8dee2aaSAndroid Build Coastguard Worker 1224*c8dee2aaSAndroid Build Coastguard Worker * The following YUV image factories have been removed: 1225*c8dee2aaSAndroid Build Coastguard Worker SkImage::MakeFromYUVTexturesCopyWithExternalBackend 1226*c8dee2aaSAndroid Build Coastguard Worker SkImage::MakeFromNV12TexturesCopyWithExternalBackend 1227*c8dee2aaSAndroid Build Coastguard Worker Replacement pattern outlined below. 1228*c8dee2aaSAndroid Build Coastguard Worker 1) Make image using MakeFromYUVATextures 1229*c8dee2aaSAndroid Build Coastguard Worker 2) Make a SkSurface around result texture using SkSurface::MakeFromBackendTexture 1230*c8dee2aaSAndroid Build Coastguard Worker 3) surface->getCanvas()->drawImage(image, 0, 0); 1231*c8dee2aaSAndroid Build Coastguard Worker 4) surface->flushAndSubmit() 1232*c8dee2aaSAndroid Build Coastguard Worker 5) Optional: SkImage::MakeFromBackendTexture() to use as SkImage. 1233*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/334596 1234*c8dee2aaSAndroid Build Coastguard Worker 1235*c8dee2aaSAndroid Build Coastguard Worker * Added a new interface for GrDirectContext creation in Metal, using 1236*c8dee2aaSAndroid Build Coastguard Worker a new struct called GrMtlBackendContext. The previous interface taking 1237*c8dee2aaSAndroid Build Coastguard Worker a MTLDevice and MTLCommandQueue is deprecated. 1238*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/334426 1239*c8dee2aaSAndroid Build Coastguard Worker 1240*c8dee2aaSAndroid Build Coastguard Worker * SkCanvas::flush has been deprecated. 1241*c8dee2aaSAndroid Build Coastguard Worker 1242*c8dee2aaSAndroid Build Coastguard Worker* * * 1243*c8dee2aaSAndroid Build Coastguard Worker 1244*c8dee2aaSAndroid Build Coastguard WorkerMilestone 88 1245*c8dee2aaSAndroid Build Coastguard Worker------------ 1246*c8dee2aaSAndroid Build Coastguard Worker 1247*c8dee2aaSAndroid Build Coastguard Worker * SkYUVAInfo now has separate enums for division of channels among planes and 1248*c8dee2aaSAndroid Build Coastguard Worker the subsampling. The previous combined enum, PlanarConfig, is deprecated. 1249*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/334102 1250*c8dee2aaSAndroid Build Coastguard Worker 1251*c8dee2aaSAndroid Build Coastguard Worker * Simplified SkDeferredDisplayListRecorder promise image API. Removed "release" 1252*c8dee2aaSAndroid Build Coastguard Worker callback and renamed "done" callback to "release". The new "release" proc can 1253*c8dee2aaSAndroid Build Coastguard Worker be null. Added a new SkYUVAInfo-based factory for YUVA promise texture images 1254*c8dee2aaSAndroid Build Coastguard Worker and deprecated the old SkYUVAIndex-based one. 1255*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/331836 1256*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/333519 1257*c8dee2aaSAndroid Build Coastguard Worker 1258*c8dee2aaSAndroid Build Coastguard Worker * Limit the types and intrinsics supported in SkRuntimeEffect to GLSL ES 1.00 1259*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/332597 1260*c8dee2aaSAndroid Build Coastguard Worker 1261*c8dee2aaSAndroid Build Coastguard Worker * Add AVIF support to SkHeifCodec. 1262*c8dee2aaSAndroid Build Coastguard Worker 1263*c8dee2aaSAndroid Build Coastguard Worker * Add support for creating SkSurfaceCharacterizations directly for use by a 1264*c8dee2aaSAndroid Build Coastguard Worker GrVkSecondaryCBDrawContext. 1265*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/331877 1266*c8dee2aaSAndroid Build Coastguard Worker 1267*c8dee2aaSAndroid Build Coastguard Worker * Removed SkSurfaceProps::kLegacyFontHost_InitType, SkFontLCDConfig, and related code. 1268*c8dee2aaSAndroid Build Coastguard Worker The default pixel geometry for SkSurfaceProps is now kUnknown instead of kRGB_H. 1269*c8dee2aaSAndroid Build Coastguard Worker The removal was guarded by the SK_LEGACY_SURFACE_PROPS build flag which was later removed. 1270*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/322490 1271*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/329364 1272*c8dee2aaSAndroid Build Coastguard Worker 1273*c8dee2aaSAndroid Build Coastguard Worker * Legacy 8-bit YUV interface removed from SkImageGenerator. Use more flexible SkYUVAPixmaps- 1274*c8dee2aaSAndroid Build Coastguard Worker based interface instead. 1275*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/327917 1276*c8dee2aaSAndroid Build Coastguard Worker 1277*c8dee2aaSAndroid Build Coastguard Worker * New variant of SkImage::MakeFromYUVATextures. Takes a new type GrYUVATextures 1278*c8dee2aaSAndroid Build Coastguard Worker which wraps an SkYUVAInfo and compatible set of GrBackendTextures. The provides 1279*c8dee2aaSAndroid Build Coastguard Worker a more complete and structured specification of the planar configuration. Previous 1280*c8dee2aaSAndroid Build Coastguard Worker version is deprecated. 1281*c8dee2aaSAndroid Build Coastguard Worker Already deprecated MakeFromYUVATexturesCopyToExternal added to replace other deprecated 1282*c8dee2aaSAndroid Build Coastguard Worker APIs. It's not recommended that clients use this and instead use the pattern described 1283*c8dee2aaSAndroid Build Coastguard Worker in the API comment. 1284*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/317762 1285*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/329956 1286*c8dee2aaSAndroid Build Coastguard Worker 1287*c8dee2aaSAndroid Build Coastguard Worker * Add field to GrContextOptions to disable mipmap support even if the backend 1288*c8dee2aaSAndroid Build Coastguard Worker supports it. 1289*c8dee2aaSAndroid Build Coastguard Worker 1290*c8dee2aaSAndroid Build Coastguard Worker * SkTPin() removed from public API. 1291*c8dee2aaSAndroid Build Coastguard Worker 1292*c8dee2aaSAndroid Build Coastguard Worker * Add new SkImageFilters::Blend factory function, in place of the now deprecated 1293*c8dee2aaSAndroid Build Coastguard Worker SkImageFilters::Xfermode factory function. Behavior is identical, but name better matches 1294*c8dee2aaSAndroid Build Coastguard Worker conventions in SkShader and SkColorFilter. 1295*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/324623 1296*c8dee2aaSAndroid Build Coastguard Worker 1297*c8dee2aaSAndroid Build Coastguard Worker * SkImageFilters::Foo() factory functions now accept SkIRect, SkRect, and optional SkIRect* or 1298*c8dee2aaSAndroid Build Coastguard Worker SkRect*, instead of previously just the optional SkIRect*. Internally, the crop rects are stored 1299*c8dee2aaSAndroid Build Coastguard Worker as floats to allow for fractional crops to be defined in the local coordinate system (before 1300*c8dee2aaSAndroid Build Coastguard Worker transformation by the canvas matrix). 1301*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/324622 1302*c8dee2aaSAndroid Build Coastguard Worker 1303*c8dee2aaSAndroid Build Coastguard Worker * Add new SkImageFilters::Shader factory and deprecate SkImageFilters::Paint factory. All 1304*c8dee2aaSAndroid Build Coastguard Worker supported/valid Paint() filters can be represented more cleanly as a Shader image filter. 1305*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/323680 1306*c8dee2aaSAndroid Build Coastguard Worker 1307*c8dee2aaSAndroid Build Coastguard Worker * GrContext has been replaced by two separate classes: GrDirectContext which is 1308*c8dee2aaSAndroid Build Coastguard Worker the traditional notion of GrContext, and GrRecordingContext which is a context 1309*c8dee2aaSAndroid Build Coastguard Worker that is recording an SkDeferredDisplayList and therefore has reduced functionality. 1310*c8dee2aaSAndroid Build Coastguard Worker Unless you are using SkDeferredDisplayList, migrate directly to GrDirectContext in 1311*c8dee2aaSAndroid Build Coastguard Worker all cases. 1312*c8dee2aaSAndroid Build Coastguard Worker 1313*c8dee2aaSAndroid Build Coastguard Worker * CPU sync bool added to SkSurface::flushAndSubmit() and GrContext::flushAndSubmit() 1314*c8dee2aaSAndroid Build Coastguard Worker 1315*c8dee2aaSAndroid Build Coastguard Worker * Removed legacy variant of SkImage::MakeFromYUVAPixmaps. Use the version that 1316*c8dee2aaSAndroid Build Coastguard Worker takes SkYUVAPixmaps instead. It has a more structured description of the 1317*c8dee2aaSAndroid Build Coastguard Worker planar configuration. 1318*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/322480 1319*c8dee2aaSAndroid Build Coastguard Worker 1320*c8dee2aaSAndroid Build Coastguard Worker * Some SkImage YUV image factories have been removed. Replacement patterns 1321*c8dee2aaSAndroid Build Coastguard Worker outlined below. 1322*c8dee2aaSAndroid Build Coastguard Worker SkImage::MakeFromYUVATexturesCopy 1323*c8dee2aaSAndroid Build Coastguard Worker 1) Make SkImage from YUVA planes using SkImage::MakeFromYUVATextures 1324*c8dee2aaSAndroid Build Coastguard Worker 2) Use Skia to allocate a surface using SkSurface::MakeRenderTarget 1325*c8dee2aaSAndroid Build Coastguard Worker 3) surface->getCanvas()->drawImage(image, 0, 0); 1326*c8dee2aaSAndroid Build Coastguard Worker 4) surface->makeImageSnapShot() produces RGBA image. 1327*c8dee2aaSAndroid Build Coastguard Worker SkImage::MakeFromYUVATexturesCopyWithExternalBackend 1328*c8dee2aaSAndroid Build Coastguard Worker 1) Make image using MakeFromYUVATextures 1329*c8dee2aaSAndroid Build Coastguard Worker 2) Make a SkSurface around result texture using SkSurface::MakeFromBackendTexture 1330*c8dee2aaSAndroid Build Coastguard Worker 3) surface->getCanvas()->drawImage(image, 0, 0); 1331*c8dee2aaSAndroid Build Coastguard Worker 4) surface->flushAndSubmit() 1332*c8dee2aaSAndroid Build Coastguard Worker 5) Optional: SkImage::MakeFromBackendTexture() to use as SkImage. 1333*c8dee2aaSAndroid Build Coastguard Worker SkImage::MakeFromNV12TexturesCopy 1334*c8dee2aaSAndroid Build Coastguard Worker Same as SkImage::MakeFromYUVATexturesCopy 1335*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/321537 1336*c8dee2aaSAndroid Build Coastguard Worker 1337*c8dee2aaSAndroid Build Coastguard Worker * GrBackendRenderTargets which are created with a stencilBits param, now require 1338*c8dee2aaSAndroid Build Coastguard Worker the stencilBits to be 0, 8, or 16. 1339*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/321545 1340*c8dee2aaSAndroid Build Coastguard Worker 1341*c8dee2aaSAndroid Build Coastguard Worker* * * 1342*c8dee2aaSAndroid Build Coastguard Worker 1343*c8dee2aaSAndroid Build Coastguard WorkerMilestone 87 1344*c8dee2aaSAndroid Build Coastguard Worker------------ 1345*c8dee2aaSAndroid Build Coastguard Worker 1346*c8dee2aaSAndroid Build Coastguard Worker * GrVkImageInfo now has a field for sample count. GrBackendRenderTarget constructor 1347*c8dee2aaSAndroid Build Coastguard Worker that took both a GrVkImageInfo and separate sample count is deprecated. Use the 1348*c8dee2aaSAndroid Build Coastguard Worker version without sample count instead. Similarly, GrD3DTextureResourceInfo now 1349*c8dee2aaSAndroid Build Coastguard Worker has a sample count field and GrBackendRenderTarget no longer takes a separate 1350*c8dee2aaSAndroid Build Coastguard Worker sample count for Direct3D. The sample count for GrBackendRenderTarget is now 1351*c8dee2aaSAndroid Build Coastguard Worker directly queried from MtlTexture rather than passed separately. The version that 1352*c8dee2aaSAndroid Build Coastguard Worker takes a separate sample count is deprecated and the parameter is ignored. 1353*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/320262 1354*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/320757 1355*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/320956 1356*c8dee2aaSAndroid Build Coastguard Worker 1357*c8dee2aaSAndroid Build Coastguard Worker * Added deprecation warning for Metal support on MacOS 10.13, iOS 8.3, and older. 1358*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/320260 1359*c8dee2aaSAndroid Build Coastguard Worker 1360*c8dee2aaSAndroid Build Coastguard Worker * GrVkImageInfo now has a field for sample count. GrBackendRenderTarget constructor 1361*c8dee2aaSAndroid Build Coastguard Worker that took both a GrVkImageInfo and separate sample count is deprecated. Use the 1362*c8dee2aaSAndroid Build Coastguard Worker version without sample count instead. 1363*c8dee2aaSAndroid Build Coastguard Worker 1364*c8dee2aaSAndroid Build Coastguard Worker * Update SkClipOp::kMax_EnumValue to include only intersect and difference when 1365*c8dee2aaSAndroid Build Coastguard Worker SK_SUPPORT_DEPRECATED_CLIPOPS is not defined. 1366*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/320064 1367*c8dee2aaSAndroid Build Coastguard Worker 1368*c8dee2aaSAndroid Build Coastguard Worker * Add support for external allocator for Direct3D 12 backend. 1369*c8dee2aaSAndroid Build Coastguard Worker Defines base classes for an allocation associated with a backend texture and a 1370*c8dee2aaSAndroid Build Coastguard Worker a memory allocator to create such allocations. 1371*c8dee2aaSAndroid Build Coastguard Worker Adds memory allocator to backend context. 1372*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/317243 1373*c8dee2aaSAndroid Build Coastguard Worker 1374*c8dee2aaSAndroid Build Coastguard Worker * Add new optional parameter to GrContext::setBackend[Texture/RenderTarget]State which can 1375*c8dee2aaSAndroid Build Coastguard Worker be used to return the previous GrBackendSurfaceMutableState before the requested change. 1376*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/318698 1377*c8dee2aaSAndroid Build Coastguard Worker 1378*c8dee2aaSAndroid Build Coastguard Worker * New optimized clip stack for GPU backends. Enabled by default but old behavior based on 1379*c8dee2aaSAndroid Build Coastguard Worker SkClipStack can be restored by defining SK_DISABLE_NEW_GR_CLIP_STACK when building. It is not 1380*c8dee2aaSAndroid Build Coastguard Worker compatible with SK_SUPPORT_DEPRECATED_CLIPOPS and we are targeting the removal of support for 1381*c8dee2aaSAndroid Build Coastguard Worker the deprecated, expanding clip ops. 1382*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/317209 1383*c8dee2aaSAndroid Build Coastguard Worker 1384*c8dee2aaSAndroid Build Coastguard Worker * GPU backends now properly honor the SkFilterQuality when calling drawAtlas. 1385*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/313081 1386*c8dee2aaSAndroid Build Coastguard Worker 1387*c8dee2aaSAndroid Build Coastguard Worker * The signature of 'main' used with SkRuntimeEffect SkSL has changed. There is no longer an 1388*c8dee2aaSAndroid Build Coastguard Worker 'inout half4 color' parameter, effects must return their color instead. 1389*c8dee2aaSAndroid Build Coastguard Worker Valid signatures are now 'half4 main()' or 'half4 main(float2 coord)'. 1390*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/310756 1391*c8dee2aaSAndroid Build Coastguard Worker 1392*c8dee2aaSAndroid Build Coastguard Worker * New YUVA planar specifications for SkCodec, SkImageGenerator, SkImage::MakeFromYUVAPixmaps. 1393*c8dee2aaSAndroid Build Coastguard Worker Chroma subsampling is specified in more structured way. SkCodec and SkImageGenerator 1394*c8dee2aaSAndroid Build Coastguard Worker don't assume 3 planes with 8bit planar values. Old APIs are deprecated. 1395*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/309658 1396*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/312886 1397*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/314276 1398*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/316837 1399*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/317097 1400*c8dee2aaSAndroid Build Coastguard Worker 1401*c8dee2aaSAndroid Build Coastguard Worker * Added VkImageUsageFlags to GrVkImageInfo struct. 1402*c8dee2aaSAndroid Build Coastguard Worker 1403*c8dee2aaSAndroid Build Coastguard Worker* * * 1404*c8dee2aaSAndroid Build Coastguard Worker 1405*c8dee2aaSAndroid Build Coastguard WorkerMilestone 86 1406*c8dee2aaSAndroid Build Coastguard Worker------------ 1407*c8dee2aaSAndroid Build Coastguard Worker 1408*c8dee2aaSAndroid Build Coastguard Worker * Remove support for 'in' variables from SkRuntimeEffect. API now exclusively refers to inputs 1409*c8dee2aaSAndroid Build Coastguard Worker as 'uniforms'. 1410*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/309050 1411*c8dee2aaSAndroid Build Coastguard Worker 1412*c8dee2aaSAndroid Build Coastguard Worker * Add SkImageGeneratorNDK and SkEncodeImageWithNDK for using Android's NDK APIs to decode and 1413*c8dee2aaSAndroid Build Coastguard Worker encode. 1414*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/308185 1415*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/308800 1416*c8dee2aaSAndroid Build Coastguard Worker 1417*c8dee2aaSAndroid Build Coastguard Worker * SkImage:remove DecodeToRaster, DecodeToTexture 1418*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/306331 1419*c8dee2aaSAndroid Build Coastguard Worker 1420*c8dee2aaSAndroid Build Coastguard Worker * Add GrContext api to update compressed backend textures. 1421*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/302265 1422*c8dee2aaSAndroid Build Coastguard Worker 1423*c8dee2aaSAndroid Build Coastguard Worker * Rename GrMipMapped to GrMipmapped for consistency with new APIs. 1424*c8dee2aaSAndroid Build Coastguard Worker Also rename GrBackendTexture::hasMipMaps() to GrBackendTexture::hasMipmaps() 1425*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/304576 1426*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/304598 1427*c8dee2aaSAndroid Build Coastguard Worker 1428*c8dee2aaSAndroid Build Coastguard Worker * Add option for clients to own semaphores after wait calls. 1429*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/301216 1430*c8dee2aaSAndroid Build Coastguard Worker 1431*c8dee2aaSAndroid Build Coastguard Worker * Remove obsolete GrFlushFlags. 1432*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/298818 1433*c8dee2aaSAndroid Build Coastguard Worker 1434*c8dee2aaSAndroid Build Coastguard Worker * Adds default flush() calls to SkSurface, SkImage, and GrContext. These calls do 1435*c8dee2aaSAndroid Build Coastguard Worker a basic flush without a submit. If you haven't updated Skia in a couple releases 1436*c8dee2aaSAndroid Build Coastguard Worker and still have flush() calls in your code that you expect to do a flush and 1437*c8dee2aaSAndroid Build Coastguard Worker submit, you should update all those to the previously added flushAndSubmit() calls 1438*c8dee2aaSAndroid Build Coastguard Worker instead. 1439*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/299141 1440*c8dee2aaSAndroid Build Coastguard Worker 1441*c8dee2aaSAndroid Build Coastguard Worker * Enable BackendSemaphores for the Direct3D backend. 1442*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/298752 1443*c8dee2aaSAndroid Build Coastguard Worker 1444*c8dee2aaSAndroid Build Coastguard Worker * Added SkImage:asyncRescaleAndReadPixels and SkImage::asyncRescaleAndReadPixelsYUV420 1445*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/299281 1446*c8dee2aaSAndroid Build Coastguard Worker 1447*c8dee2aaSAndroid Build Coastguard Worker * Ganesh is moving towards replacing GrContext with the GrDirectContext/GrRecordingContext 1448*c8dee2aaSAndroid Build Coastguard Worker pair. GrDirectContexts have _direct_ access to the GPU and are very similar to the old 1449*c8dee2aaSAndroid Build Coastguard Worker GrContext. GrRecordingContexts are less powerful contexts that lack GPU access but provided 1450*c8dee2aaSAndroid Build Coastguard Worker context-like utilities during DDL recording. SkSurfaces and SkCanvas will now only return 1451*c8dee2aaSAndroid Build Coastguard Worker GrRecordingContexts. Clients requiring context features that need GPU access can then 1452*c8dee2aaSAndroid Build Coastguard Worker check (via GrRecordingContext::asDirectContext) if the available recording context is actually 1453*c8dee2aaSAndroid Build Coastguard Worker a direct context. 1454*c8dee2aaSAndroid Build Coastguard Worker 1455*c8dee2aaSAndroid Build Coastguard Worker * Replace #defined values in SkString with equivalent constexprs. 1456*c8dee2aaSAndroid Build Coastguard Worker http://review.skia.org/306160 1457*c8dee2aaSAndroid Build Coastguard Worker 1458*c8dee2aaSAndroid Build Coastguard Worker* * * 1459*c8dee2aaSAndroid Build Coastguard Worker 1460*c8dee2aaSAndroid Build Coastguard WorkerMilestone 85 1461*c8dee2aaSAndroid Build Coastguard Worker------------ 1462*c8dee2aaSAndroid Build Coastguard Worker 1463*c8dee2aaSAndroid Build Coastguard Worker * Added GrContext::oomed() which reports whether Skia has seen a GL_OUT_OF_MEMORY 1464*c8dee2aaSAndroid Build Coastguard Worker error from Open GL [ES] or VK_ERROR_OUT_OF_*_MEMORY from Vulkan. 1465*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/298216 1466*c8dee2aaSAndroid Build Coastguard Worker 1467*c8dee2aaSAndroid Build Coastguard Worker * Add option on SkSurface::flush to pass in a GrBackendSurfaceMutableState which 1468*c8dee2aaSAndroid Build Coastguard Worker we will set the gpu backend surface to be at the end of the flush. 1469*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/295567 1470*c8dee2aaSAndroid Build Coastguard Worker 1471*c8dee2aaSAndroid Build Coastguard Worker * Add GrContext function to set mutable state on a backend surface. Currently this 1472*c8dee2aaSAndroid Build Coastguard Worker is only used for setting vulkan VkImage layout and queue family. 1473*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/293844 1474*c8dee2aaSAndroid Build Coastguard Worker 1475*c8dee2aaSAndroid Build Coastguard Worker * SkSurface factores that take GrBackendTexture or GrBackendRenderTarget now always 1476*c8dee2aaSAndroid Build Coastguard Worker call the release proc (if provided) on failure. SkSurface::replaceBackendTexture 1477*c8dee2aaSAndroid Build Coastguard Worker also calls the release proc on failure. 1478*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/293762 1479*c8dee2aaSAndroid Build Coastguard Worker 1480*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::asyncRescaleAndReadPixels and SkSurfaceasyncRescaleAndReadPixelsYUV420 1481*c8dee2aaSAndroid Build Coastguard Worker now require explicit GrContext submit to guarantee finite time before callback 1482*c8dee2aaSAndroid Build Coastguard Worker is invoked. 1483*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/292840 1484*c8dee2aaSAndroid Build Coastguard Worker 1485*c8dee2aaSAndroid Build Coastguard Worker * Add VkSharingMode field to GrVkImageInfo. 1486*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/293559 1487*c8dee2aaSAndroid Build Coastguard Worker 1488*c8dee2aaSAndroid Build Coastguard Worker * Move SkBitmapRegionDecoder into client_utils/android. 1489*c8dee2aaSAndroid Build Coastguard Worker 1490*c8dee2aaSAndroid Build Coastguard Worker * SkCanvas.clear and SkCanvas.drawColor now accept SkColor4f in addition to SkColor. 1491*c8dee2aaSAndroid Build Coastguard Worker 1492*c8dee2aaSAndroid Build Coastguard Worker * Remove SkSurface::MakeFromBackendTextureAsRenderTarget. 1493*c8dee2aaSAndroid Build Coastguard Worker This factory existed to work around issues with GL_TEXTURE_RECTANGLE that existed 1494*c8dee2aaSAndroid Build Coastguard Worker in Chrome's command buffer. Those issues have since been resolved. Use 1495*c8dee2aaSAndroid Build Coastguard Worker SkSurface::MakeFromBackendTexutre or SkSurface::MakeFromBackendRenderTarget instead. 1496*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/292719 1497*c8dee2aaSAndroid Build Coastguard Worker 1498*c8dee2aaSAndroid Build Coastguard Worker * Adds submittedProc callback to GrFlushInfo which will be called when the work 1499*c8dee2aaSAndroid Build Coastguard Worker from the flush call is submitted to the GPU. This is specifically useful for knowing 1500*c8dee2aaSAndroid Build Coastguard Worker when semahpores sent with the flush have been submitted and can be waiting on. 1501*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/291078 1502*c8dee2aaSAndroid Build Coastguard Worker 1503*c8dee2aaSAndroid Build Coastguard Worker * GrContext submit is now required to be called in order to send GPU work to the 1504*c8dee2aaSAndroid Build Coastguard Worker actual GPU. The flush calls simply produces 3D API specific objects that are ready 1505*c8dee2aaSAndroid Build Coastguard Worker to be submitted (e.g. command buffers). For the GL backend, the flush will still 1506*c8dee2aaSAndroid Build Coastguard Worker send commands to the driver. However, clients should still assume the must call 1507*c8dee2aaSAndroid Build Coastguard Worker submit which is where any glFlush that is need for sync objects will be called. There, 1508*c8dee2aaSAndroid Build Coastguard Worker are flushAndSubmit() functions of GrContext, SkSurface, and SkImage that will act 1509*c8dee2aaSAndroid Build Coastguard Worker like the previous flush() functions. This will flush the work and immediately call 1510*c8dee2aaSAndroid Build Coastguard Worker submit. 1511*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/289033 1512*c8dee2aaSAndroid Build Coastguard Worker 1513*c8dee2aaSAndroid Build Coastguard Worker * Remove deprecated version of flush calls on GrContext and SkSurface. 1514*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/2290540 1515*c8dee2aaSAndroid Build Coastguard Worker 1516*c8dee2aaSAndroid Build Coastguard Worker * SkCanvas::drawVertices and drawPatch now support mapping an SkShader without explicit 1517*c8dee2aaSAndroid Build Coastguard Worker texture coordinates. If they're not supplied, the local positions (vertex position or 1518*c8dee2aaSAndroid Build Coastguard Worker patch cubic positions) will be directly used to sample the SkShader. 1519*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/290130 1520*c8dee2aaSAndroid Build Coastguard Worker 1521*c8dee2aaSAndroid Build Coastguard Worker* * * 1522*c8dee2aaSAndroid Build Coastguard Worker 1523*c8dee2aaSAndroid Build Coastguard WorkerMilestone 84 1524*c8dee2aaSAndroid Build Coastguard Worker------------ 1525*c8dee2aaSAndroid Build Coastguard Worker 1526*c8dee2aaSAndroid Build Coastguard Worker * Add api on GrContext, updateBackendTexture that will upload new data to a 1527*c8dee2aaSAndroid Build Coastguard Worker GrBackendTexture. 1528*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/288909 1529*c8dee2aaSAndroid Build Coastguard Worker 1530*c8dee2aaSAndroid Build Coastguard Worker * Add GrContext getter to SkSurface. 1531*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/289479 1532*c8dee2aaSAndroid Build Coastguard Worker 1533*c8dee2aaSAndroid Build Coastguard Worker * Deprecate GrContext and SkSurface flush() call and replace ith with flushAndSubmit(). 1534*c8dee2aaSAndroid Build Coastguard Worker This only effects the default flush call that takes no parameters. 1535*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/289478 1536*c8dee2aaSAndroid Build Coastguard Worker 1537*c8dee2aaSAndroid Build Coastguard Worker * GrContext::createBackendTexture functions that initialize the texture no longer 1538*c8dee2aaSAndroid Build Coastguard Worker guarantee that all the data has been uploaded and the gpu is done with the texture. 1539*c8dee2aaSAndroid Build Coastguard Worker Instead the client can assume the upload work has been submitted to the gpu and they 1540*c8dee2aaSAndroid Build Coastguard Worker must wait for that work to finish before deleting the texture. This can be done via 1541*c8dee2aaSAndroid Build Coastguard Worker their own synchronization or by passing in a finish proc into the create calls which 1542*c8dee2aaSAndroid Build Coastguard Worker will be called when it is safe to delete the texture (at least in terms of work 1543*c8dee2aaSAndroid Build Coastguard Worker done during the create). 1544*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/286517 1545*c8dee2aaSAndroid Build Coastguard Worker 1546*c8dee2aaSAndroid Build Coastguard Worker * Remove unused SkMaskFilter helpers: compbine, compose 1547*c8dee2aaSAndroid Build Coastguard Worker Note: shadermaskfilter will likely be removed next (clipShader should serve) 1548*c8dee2aaSAndroid Build Coastguard Worker 1549*c8dee2aaSAndroid Build Coastguard Worker * Add back SkCanvas::kPreserveLCDText_SaveLayerFlag to indicate that saveLayer() 1550*c8dee2aaSAndroid Build Coastguard Worker will preserve LCD-text. All text in the layer must be drawn on opaque background 1551*c8dee2aaSAndroid Build Coastguard Worker to ensure correct rendering. 1552*c8dee2aaSAndroid Build Coastguard Worker 1553*c8dee2aaSAndroid Build Coastguard Worker * Add the new directory client_utils/ for code that is specific to a single client and 1554*c8dee2aaSAndroid Build Coastguard Worker should be considered separate from Skia proper. Move SkFrontBufferedStream into the 1555*c8dee2aaSAndroid Build Coastguard Worker subdir android/. 1556*c8dee2aaSAndroid Build Coastguard Worker 1557*c8dee2aaSAndroid Build Coastguard Worker * SkBitmap and SkPixmap's erase() methods now treat their color parameters 1558*c8dee2aaSAndroid Build Coastguard Worker consistently with the rest of Skia, with all SkColors and any untagged 1559*c8dee2aaSAndroid Build Coastguard Worker SkColor4fs interpreted as sRGB, not as a color in the bitmap's color space. 1560*c8dee2aaSAndroid Build Coastguard Worker SkPixmap::erase(SkColor4f) now takes an SkColorSpace, so you can pass 1561*c8dee2aaSAndroid Build Coastguard Worker pixmap.colorSpace() if you want the old behavior. 1562*c8dee2aaSAndroid Build Coastguard Worker 1563*c8dee2aaSAndroid Build Coastguard Worker * SkCamera.h and SkMatrix44.h are DEPRECATED. 1564*c8dee2aaSAndroid Build Coastguard Worker Use SkM44 if you want to have 3d transformations. 1565*c8dee2aaSAndroid Build Coastguard Worker 1566*c8dee2aaSAndroid Build Coastguard Worker * Changed Dilate and Erode image filters to take SkScalar for radius instead of int. While 1567*c8dee2aaSAndroid Build Coastguard Worker the image filters themselves are defined in terms of discrete pixels, the radii provided by 1568*c8dee2aaSAndroid Build Coastguard Worker the user are mapped through the CTM so taking ints forced over discretization. After mapping 1569*c8dee2aaSAndroid Build Coastguard Worker through the CTM the radii are now rounded to pixels. 1570*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/281731 1571*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/282636 1572*c8dee2aaSAndroid Build Coastguard Worker 1573*c8dee2aaSAndroid Build Coastguard Worker * Updated the contract of GrContext and SkSurface flush calls in regards to semaphores. Made it 1574*c8dee2aaSAndroid Build Coastguard Worker clear that the caller is responsible for deleting any initialized semaphores after the flush 1575*c8dee2aaSAndroid Build Coastguard Worker call regardless if we were able to submit them or not. Also, allows skia to only submit a 1576*c8dee2aaSAndroid Build Coastguard Worker subset of the requested semaphores if we failed to create some. 1577*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/282265 1578*c8dee2aaSAndroid Build Coastguard Worker 1579*c8dee2aaSAndroid Build Coastguard Worker 1580*c8dee2aaSAndroid Build Coastguard Worker * SkCanvas::drawVertices will now always fill the triangles specified by the vertices. Previously, 1581*c8dee2aaSAndroid Build Coastguard Worker vertices with no colors and no (texture coordinates or shader) would be drawn in wireframe. 1582*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/282043 1583*c8dee2aaSAndroid Build Coastguard Worker 1584*c8dee2aaSAndroid Build Coastguard Worker* * * 1585*c8dee2aaSAndroid Build Coastguard Worker 1586*c8dee2aaSAndroid Build Coastguard WorkerMilestone 83 1587*c8dee2aaSAndroid Build Coastguard Worker------------ 1588*c8dee2aaSAndroid Build Coastguard Worker 1589*c8dee2aaSAndroid Build Coastguard Worker * Remove localmatrix option from SkShaders::[Blend, Lerp] 1590*c8dee2aaSAndroid Build Coastguard Worker 1591*c8dee2aaSAndroid Build Coastguard Worker * Fill out Direct3D parameters for backend textures and backend rendertargets. 1592*c8dee2aaSAndroid Build Coastguard Worker 1593*c8dee2aaSAndroid Build Coastguard Worker * SkImage::makeTextureImage() takes an optional SkBudgeted param 1594*c8dee2aaSAndroid Build Coastguard Worker 1595*c8dee2aaSAndroid Build Coastguard Worker * Made non-GL builds of GPU backend more robust. 1596*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/277456 1597*c8dee2aaSAndroid Build Coastguard Worker 1598*c8dee2aaSAndroid Build Coastguard Worker * MoltenVK support removed. Use Metal backend instead. 1599*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/277612 1600*c8dee2aaSAndroid Build Coastguard Worker 1601*c8dee2aaSAndroid Build Coastguard Worker* * * 1602*c8dee2aaSAndroid Build Coastguard Worker 1603*c8dee2aaSAndroid Build Coastguard WorkerMilestone 82 1604*c8dee2aaSAndroid Build Coastguard Worker------------ 1605*c8dee2aaSAndroid Build Coastguard Worker 1606*c8dee2aaSAndroid Build Coastguard Worker * Removed drawBitmap and related functions from SkDevice; all public drawBitmap functions on 1607*c8dee2aaSAndroid Build Coastguard Worker SkCanvas automatically wrap the bitmap in an SkImage and call the equivalent drawImage function. 1608*c8dee2aaSAndroid Build Coastguard Worker Drawing mutable SkBitmaps will now incur a mandatory copy. Switch to using SkImage directly or 1609*c8dee2aaSAndroid Build Coastguard Worker mark the bitmap as immutable before drawing. 1610*c8dee2aaSAndroid Build Coastguard Worker 1611*c8dee2aaSAndroid Build Coastguard Worker * Removed "volatile" flag from SkVertices. All SkVertices objects are assumed to be 1612*c8dee2aaSAndroid Build Coastguard Worker volatile (the previous default behavior). 1613*c8dee2aaSAndroid Build Coastguard Worker 1614*c8dee2aaSAndroid Build Coastguard Worker * Removed exotic legacy bitmap functions from SkCanvas (drawBitmapLattic, drawBitmapNine); the 1615*c8dee2aaSAndroid Build Coastguard Worker exotic SkImage functions still exist. 1616*c8dee2aaSAndroid Build Coastguard Worker 1617*c8dee2aaSAndroid Build Coastguard Worker * Make it possible to selectively turn on/off individual encoders/decoders, 1618*c8dee2aaSAndroid Build Coastguard Worker using skia_use_(libpng/libjpeg_turbo/libwebp)(decode/encode). 1619*c8dee2aaSAndroid Build Coastguard Worker 1620*c8dee2aaSAndroid Build Coastguard Worker * Removed GrGpuResource, GrSurface, and GrTexture from public api. These were not 1621*c8dee2aaSAndroid Build Coastguard Worker meant to be public, and we now can move them into src. Also removed getTexture 1622*c8dee2aaSAndroid Build Coastguard Worker function from SkImage.h 1623*c8dee2aaSAndroid Build Coastguard Worker 1624*c8dee2aaSAndroid Build Coastguard Worker * Removed Bones from SkVertices 1625*c8dee2aaSAndroid Build Coastguard Worker 1626*c8dee2aaSAndroid Build Coastguard Worker * Added a field to GrContextOptions that controls whether GL errors are checked after 1627*c8dee2aaSAndroid Build Coastguard Worker GL calls that allocate textures, etc. It also controls checking for shader compile 1628*c8dee2aaSAndroid Build Coastguard Worker success, and program linking success. 1629*c8dee2aaSAndroid Build Coastguard Worker 1630*c8dee2aaSAndroid Build Coastguard Worker * Made SkDeferredDisplayList.h officially part of the public API (i.e., moved it to 1631*c8dee2aaSAndroid Build Coastguard Worker include/core). Also added a ProgramIterator to SkDeferredDisplayList which allows 1632*c8dee2aaSAndroid Build Coastguard Worker clients to pre-compile some of the shaders the DDL requires. 1633*c8dee2aaSAndroid Build Coastguard Worker 1634*c8dee2aaSAndroid Build Coastguard Worker * Added two new helper methods to SkSurfaceCharacterization: createBackendFormat and 1635*c8dee2aaSAndroid Build Coastguard Worker createFBO0. These make it easier for clients to create new surface characterizations that 1636*c8dee2aaSAndroid Build Coastguard Worker differ only a little from an existing surface characterization. 1637*c8dee2aaSAndroid Build Coastguard Worker 1638*c8dee2aaSAndroid Build Coastguard Worker * Removed SkTMax and SkTMin. 1639*c8dee2aaSAndroid Build Coastguard Worker * Removed SkTClamp and SkClampMax. 1640*c8dee2aaSAndroid Build Coastguard Worker * Removed SkScalarClampMax and SkScalarPin. 1641*c8dee2aaSAndroid Build Coastguard Worker * Removed SkMax32 and SkMin32. 1642*c8dee2aaSAndroid Build Coastguard Worker * Removed SkMaxScalar and SkMinScalar. 1643*c8dee2aaSAndroid Build Coastguard Worker 1644*c8dee2aaSAndroid Build Coastguard Worker * SkColorSetA now warns if the result is unused. 1645*c8dee2aaSAndroid Build Coastguard Worker 1646*c8dee2aaSAndroid Build Coastguard Worker * An SkImageInfo with a null SkColorSpace passed to SkCodec::getPixels() and 1647*c8dee2aaSAndroid Build Coastguard Worker related calls is treated as a request to do no color correction at decode 1648*c8dee2aaSAndroid Build Coastguard Worker time. 1649*c8dee2aaSAndroid Build Coastguard Worker 1650*c8dee2aaSAndroid Build Coastguard Worker * Add new APIs to add attributes to document structure node when 1651*c8dee2aaSAndroid Build Coastguard Worker creating a tagged PDF. 1652*c8dee2aaSAndroid Build Coastguard Worker 1653*c8dee2aaSAndroid Build Coastguard Worker * Remove CGFontRef parameter from SkCreateTypefaceFromCTFont. 1654*c8dee2aaSAndroid Build Coastguard Worker Use CTFontManagerCreateFontDescriptorFromData instead of 1655*c8dee2aaSAndroid Build Coastguard Worker CGFontCreateWithDataProvider to create CTFonts to avoid memory use issues. 1656*c8dee2aaSAndroid Build Coastguard Worker 1657*c8dee2aaSAndroid Build Coastguard Worker * Added SkCodec:: and SkAndroidCodec::getICCProfile for reporting the native 1658*c8dee2aaSAndroid Build Coastguard Worker ICC profile of an encoded image, even if it doesn't map to an SkColorSpace. 1659*c8dee2aaSAndroid Build Coastguard Worker 1660*c8dee2aaSAndroid Build Coastguard Worker * SkSurface::ReplaceBackendTexture takes ContentChangeMode as a parameter, 1661*c8dee2aaSAndroid Build Coastguard Worker which allow callers to specify whether retain a copy of the current content. 1662*c8dee2aaSAndroid Build Coastguard Worker 1663*c8dee2aaSAndroid Build Coastguard Worker * Enforce the existing documentation in SkCanvas::saveLayer that it ignores 1664*c8dee2aaSAndroid Build Coastguard Worker any mask filter on the restore SkPaint. The 'coverage' of a layer is 1665*c8dee2aaSAndroid Build Coastguard Worker ill-defined, and masking should be handled by pre-clipping or using the 1666*c8dee2aaSAndroid Build Coastguard Worker auxiliary clip mask image of the SaveLayerRec. 1667*c8dee2aaSAndroid Build Coastguard Worker 1668*c8dee2aaSAndroid Build Coastguard Worker* * * 1669*c8dee2aaSAndroid Build Coastguard Worker 1670*c8dee2aaSAndroid Build Coastguard WorkerMilestone 81 1671*c8dee2aaSAndroid Build Coastguard Worker------------ 1672*c8dee2aaSAndroid Build Coastguard Worker 1673*c8dee2aaSAndroid Build Coastguard Worker * Added support for GL_NV_fence extension. 1674*c8dee2aaSAndroid Build Coastguard Worker 1675*c8dee2aaSAndroid Build Coastguard Worker * Make SkImageInfo::validRowBytes require rowBytes to be pixel aligned. This 1676*c8dee2aaSAndroid Build Coastguard Worker makes SkBitmap match the behavior of raster SkSurfaces in rejecting 1677*c8dee2aaSAndroid Build Coastguard Worker non-aligned rowBytes. 1678*c8dee2aaSAndroid Build Coastguard Worker 1679*c8dee2aaSAndroid Build Coastguard Worker * Added an SkImage::MakeRasterFromCompressed entry point. Also updated 1680*c8dee2aaSAndroid Build Coastguard Worker SkImage::MakeFromCompressed to decompress the compressed image data if 1681*c8dee2aaSAndroid Build Coastguard Worker the GPU doesn't support the specified compression type (i.e., macOS Metal 1682*c8dee2aaSAndroid Build Coastguard Worker doesn't support BC1_RGB8_UNORM so such compressed images will always be 1683*c8dee2aaSAndroid Build Coastguard Worker decompressed on that platform). 1684*c8dee2aaSAndroid Build Coastguard Worker 1685*c8dee2aaSAndroid Build Coastguard Worker * Added support for BC1 RGBA compressed textures 1686*c8dee2aaSAndroid Build Coastguard Worker 1687*c8dee2aaSAndroid Build Coastguard Worker * Added CachingHint to SkImage::makeRasterImage 1688*c8dee2aaSAndroid Build Coastguard Worker 1689*c8dee2aaSAndroid Build Coastguard Worker * Added SkAnimatedImage::getCurrentFrame() 1690*c8dee2aaSAndroid Build Coastguard Worker 1691*c8dee2aaSAndroid Build Coastguard Worker * Add support to create an SkSurface from an MTKView, with delayed acquisition of 1692*c8dee2aaSAndroid Build Coastguard Worker the MTLDrawable. 1693*c8dee2aaSAndroid Build Coastguard Worker Entry point: SkSurface::MakeFromMTKView 1694*c8dee2aaSAndroid Build Coastguard Worker 1695*c8dee2aaSAndroid Build Coastguard Worker * Removed SkIRect::EmptyIRect(). Use SkIRect::MakeEmpty() instead. 1696*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/262382/ 1697*c8dee2aaSAndroid Build Coastguard Worker 1698*c8dee2aaSAndroid Build Coastguard Worker * Moved SkRuntimeEffect to public API. This is the new (experimental) interface to custom SkSL 1699*c8dee2aaSAndroid Build Coastguard Worker shaders and color filters. 1700*c8dee2aaSAndroid Build Coastguard Worker 1701*c8dee2aaSAndroid Build Coastguard Worker * Added BC1 compressed format support. Metal and Vulkan seem to only support the BC 1702*c8dee2aaSAndroid Build Coastguard Worker formats on desktop machines. 1703*c8dee2aaSAndroid Build Coastguard Worker 1704*c8dee2aaSAndroid Build Coastguard Worker * Added compressed format support for backend texture creation API. 1705*c8dee2aaSAndroid Build Coastguard Worker This adds the following new entry points: 1706*c8dee2aaSAndroid Build Coastguard Worker GrContext::compressedBackendFormat 1707*c8dee2aaSAndroid Build Coastguard Worker GrContext::createCompressedBackendTexture 1708*c8dee2aaSAndroid Build Coastguard Worker The latter method comes in variants that allow color-initialized and 1709*c8dee2aaSAndroid Build Coastguard Worker compressed texture data initialized. 1710*c8dee2aaSAndroid Build Coastguard Worker 1711*c8dee2aaSAndroid Build Coastguard Worker * Added SkMatrix::MakeTrans(SkIVector) 1712*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/259804 1713*c8dee2aaSAndroid Build Coastguard Worker 1714*c8dee2aaSAndroid Build Coastguard Worker* * * 1715*c8dee2aaSAndroid Build Coastguard Worker 1716*c8dee2aaSAndroid Build Coastguard WorkerMilestone 80 1717*c8dee2aaSAndroid Build Coastguard Worker------------ 1718*c8dee2aaSAndroid Build Coastguard Worker 1719*c8dee2aaSAndroid Build Coastguard Worker * For Vulkan backend, we now require that the VkDevice, Queue, and Instance outlive 1720*c8dee2aaSAndroid Build Coastguard Worker either the destruction or abandoning of the GrContext. Additionally, all 1721*c8dee2aaSAndroid Build Coastguard Worker GrBackendTextures created via GrContext::createBackendTexture calls must be deleted 1722*c8dee2aaSAndroid Build Coastguard Worker before destroying or abandoning the GrContext. 1723*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/257921 1724*c8dee2aaSAndroid Build Coastguard Worker 1725*c8dee2aaSAndroid Build Coastguard Worker * Removed SkSize& SkSize::operator=(const SkISize&) 1726*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/257880 1727*c8dee2aaSAndroid Build Coastguard Worker 1728*c8dee2aaSAndroid Build Coastguard Worker * SkISize width() and height() now constexpr 1729*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/257680 1730*c8dee2aaSAndroid Build Coastguard Worker 1731*c8dee2aaSAndroid Build Coastguard Worker * Added SkMatrix::MakeTrans(SkVector) and SkRect::makeOffset(SkVector). 1732*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/255782 1733*c8dee2aaSAndroid Build Coastguard Worker 1734*c8dee2aaSAndroid Build Coastguard Worker * Added SkImageInfo::MakeA8(SkISize) and added optional color space parameter to 1735*c8dee2aaSAndroid Build Coastguard Worker SkImageInfo::MakeN32Premul(SkISize). 1736*c8dee2aaSAndroid Build Coastguard Worker 1737*c8dee2aaSAndroid Build Coastguard Worker * Added dimensions() and getFrameCount() to SkAnimatedImage 1738*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/253542 1739*c8dee2aaSAndroid Build Coastguard Worker 1740*c8dee2aaSAndroid Build Coastguard Worker * Removed SkMatrix44 version of toXYZD50 from SkColorSpace. Switched to skcms types in 1741*c8dee2aaSAndroid Build Coastguard Worker transferFn, invTrasnferFn, and gamutTransformTo functions. 1742*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/252596 1743*c8dee2aaSAndroid Build Coastguard Worker 1744*c8dee2aaSAndroid Build Coastguard Worker * Removed rotation and YUV support from SkColorMatrix 1745*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/252188 1746*c8dee2aaSAndroid Build Coastguard Worker 1747*c8dee2aaSAndroid Build Coastguard Worker * Added kBT2020_SkYUVColorSpace. This is BT.2020's YCbCr conversion (non-constant-luminance). 1748*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/252160 1749*c8dee2aaSAndroid Build Coastguard Worker 1750*c8dee2aaSAndroid Build Coastguard Worker * Remove old async read pixels APIs 1751*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/251198 1752*c8dee2aaSAndroid Build Coastguard Worker 1753*c8dee2aaSAndroid Build Coastguard Worker * Expose SkBlendModeCoeff and SkBlendMode_AsCoeff for Porter-Duff blend modes. 1754*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/252600 1755*c8dee2aaSAndroid Build Coastguard Worker 1756*c8dee2aaSAndroid Build Coastguard Worker* * * 1757*c8dee2aaSAndroid Build Coastguard Worker 1758*c8dee2aaSAndroid Build Coastguard WorkerMilestone 79 1759*c8dee2aaSAndroid Build Coastguard Worker------------ 1760*c8dee2aaSAndroid Build Coastguard Worker 1761*c8dee2aaSAndroid Build Coastguard Worker * SkTextBlob::Iter to discover the glyph indices and typefaces in each run 1762*c8dee2aaSAndroid Build Coastguard Worker https://skia-review.googlesource.com/246296 1763*c8dee2aaSAndroid Build Coastguard Worker 1764*c8dee2aaSAndroid Build Coastguard Worker * Added support for PQ and HLG transfer functions to SkColorSpace. 1765*c8dee2aaSAndroid Build Coastguard Worker https://skia-review.googlesource.com/c/skia/+/249000 1766*c8dee2aaSAndroid Build Coastguard Worker 1767*c8dee2aaSAndroid Build Coastguard Worker * Added new api on GrContext ComputeImageSize. This replaces the hold static helper 1768*c8dee2aaSAndroid Build Coastguard Worker ComputeTextureSize. 1769*c8dee2aaSAndroid Build Coastguard Worker https://skia-review.googlesource.com/c/skia/+/247337 1770*c8dee2aaSAndroid Build Coastguard Worker 1771*c8dee2aaSAndroid Build Coastguard Worker * New versions of SkSurface async-rescale-and read APIs that allow client to extend 1772*c8dee2aaSAndroid Build Coastguard Worker the lifetime of the result data. Old versions are deprecated. 1773*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/245457 1774*c8dee2aaSAndroid Build Coastguard Worker 1775*c8dee2aaSAndroid Build Coastguard Worker * Add SkColorInfo. It's dimensionless SkImageInfo. 1776*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/245261 1777*c8dee2aaSAndroid Build Coastguard Worker 1778*c8dee2aaSAndroid Build Coastguard Worker * Added SkPixmap-based createBackendTexture method to GrContext. This allows clients to create 1779*c8dee2aaSAndroid Build Coastguard Worker backend resources (initialized with texture data) that Skia/Ganesh doesn't know about/track. 1780*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/244676 1781*c8dee2aaSAndroid Build Coastguard Worker 1782*c8dee2aaSAndroid Build Coastguard Worker * Add explicit src and dst colorspace parameters to SkColorFilter::filterColor4f() 1783*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/244882 1784*c8dee2aaSAndroid Build Coastguard Worker 1785*c8dee2aaSAndroid Build Coastguard Worker * Remove Vulkan/Metal float32 RGBA texture support 1786*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/244881 1787*c8dee2aaSAndroid Build Coastguard Worker 1788*c8dee2aaSAndroid Build Coastguard Worker * Add SkSurface::MakeFromCAMetalLayer 1789*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/242563 1790*c8dee2aaSAndroid Build Coastguard Worker 1791*c8dee2aaSAndroid Build Coastguard Worker * Added kAlpha_F16_SkColorType, kRG_F16_SkColorType and kRGBA_16161616_SkColorType. 1792*c8dee2aaSAndroid Build Coastguard Worker This is intended to help support HDR YUV uses case (e.g., P010 and P016). As such, 1793*c8dee2aaSAndroid Build Coastguard Worker the addition is focused on allowing creation of SkPixmaps and SkImages and not 1794*c8dee2aaSAndroid Build Coastguard Worker SkSurfaces (i.e., who wants to render to render to these?) 1795*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/241357 1796*c8dee2aaSAndroid Build Coastguard Worker 1797*c8dee2aaSAndroid Build Coastguard Worker * Start to move nested SkPath types (e.g. Direction, Verb) up to root level in SkPathTypes.h 1798*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/241079 1799*c8dee2aaSAndroid Build Coastguard Worker 1800*c8dee2aaSAndroid Build Coastguard Worker * Remove isRectContour and ksNestedFillRects from public 1801*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/241078 1802*c8dee2aaSAndroid Build Coastguard Worker 1803*c8dee2aaSAndroid Build Coastguard Worker * Added kRG_88_SkColorType. This is intended to help support YUV uses case (e.g., NV12). 1804*c8dee2aaSAndroid Build Coastguard Worker As such, the addition is focused on allowing creation of SkPixmaps and SkImages and not 1805*c8dee2aaSAndroid Build Coastguard Worker SkSurfaces (i.e., who wants to render to RG?) 1806*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/239930 1807*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/235797 1808*c8dee2aaSAndroid Build Coastguard Worker 1809*c8dee2aaSAndroid Build Coastguard Worker * Make the size of program/pipeline caches configurable via 1810*c8dee2aaSAndroid Build Coastguard Worker GrContextOptions::fRuntimeProgramCacheSize 1811*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/239756 1812*c8dee2aaSAndroid Build Coastguard Worker 1813*c8dee2aaSAndroid Build Coastguard Worker * Added kAlpha_16_SkColorType and kRG_1616_SkColorType. This is intended to help support HDR YUV 1814*c8dee2aaSAndroid Build Coastguard Worker uses case (e.g., P010 and P016). As such, the addition is focused on allowing creation of 1815*c8dee2aaSAndroid Build Coastguard Worker SkPixmaps and SkImages and not SkSurfaces (i.e., who wants to render to render to these?) 1816*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/239930 1817*c8dee2aaSAndroid Build Coastguard Worker 1818*c8dee2aaSAndroid Build Coastguard Worker * Add GrContext::precompileShader to allow up-front compilation of previously-cached shaders. 1819*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/239438 1820*c8dee2aaSAndroid Build Coastguard Worker 1821*c8dee2aaSAndroid Build Coastguard Worker* * * 1822*c8dee2aaSAndroid Build Coastguard Worker 1823*c8dee2aaSAndroid Build Coastguard WorkerMilestone 78 1824*c8dee2aaSAndroid Build Coastguard Worker------------ 1825*c8dee2aaSAndroid Build Coastguard Worker 1826*c8dee2aaSAndroid Build Coastguard Worker * SkDrawLooper is no longer supported in SkPaint or SkCanvas. 1827*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/230579 1828*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/231736 1829*c8dee2aaSAndroid Build Coastguard Worker 1830*c8dee2aaSAndroid Build Coastguard Worker * SkPath::Iter::next() now ignores its consumDegenerates bools. Those will so 1831*c8dee2aaSAndroid Build Coastguard Worker go away entirely 1832*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/235104 1833*c8dee2aaSAndroid Build Coastguard Worker 1834*c8dee2aaSAndroid Build Coastguard Worker * SkImage: new factories: DecodeToRaster, DecodeToTexture 1835*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/234476 1836*c8dee2aaSAndroid Build Coastguard Worker 1837*c8dee2aaSAndroid Build Coastguard Worker * SkImageFilter API refactor started: 1838*c8dee2aaSAndroid Build Coastguard Worker - Provide new factory API in include/effects/SkImageFilters 1839*c8dee2aaSAndroid Build Coastguard Worker - Consolidated enum types to use SkTileMode and SkColorChannel 1840*c8dee2aaSAndroid Build Coastguard Worker - Hide filter implementation classes 1841*c8dee2aaSAndroid Build Coastguard Worker - Hide previously public functions on SkImageFilter that were intended for 1842*c8dee2aaSAndroid Build Coastguard Worker internal use only 1843*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/230198 1844*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/230876 1845*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/231256 1846*c8dee2aaSAndroid Build Coastguard Worker 1847*c8dee2aaSAndroid Build Coastguard Worker * SkColorFilters::HSLAMatrix - new matrix color filter operating in HSLA 1848*c8dee2aaSAndroid Build Coastguard Worker space. 1849*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/231736 1850*c8dee2aaSAndroid Build Coastguard Worker 1851*c8dee2aaSAndroid Build Coastguard Worker * Modify GrBackendFormat getters to not return internal pointers. Use an enum 1852*c8dee2aaSAndroid Build Coastguard Worker class for GL formats. 1853*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/233160 1854*c8dee2aaSAndroid Build Coastguard Worker 1855*c8dee2aaSAndroid Build Coastguard Worker * Expose GrContext::dump() when SK_ENABLE_DUMP_GPU is defined. 1856*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/233557 1857*c8dee2aaSAndroid Build Coastguard Worker 1858*c8dee2aaSAndroid Build Coastguard Worker * Vulkan backend now supports YCbCr sampler for I420 Vulkan images that are 1859*c8dee2aaSAndroid Build Coastguard Worker not backed by external images. 1860*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/233776 1861*c8dee2aaSAndroid Build Coastguard Worker 1862*c8dee2aaSAndroid Build Coastguard Worker * Add SkCodec::SelectionPolicy for distinguishing between decoding a still 1863*c8dee2aaSAndroid Build Coastguard Worker image or an image sequence for a container format that has both (e.g. HEIF). 1864*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/232839 1865*c8dee2aaSAndroid Build Coastguard Worker 1866*c8dee2aaSAndroid Build Coastguard Worker * SkImage::makeTextureImage and SkImage::MakeCrossContextFromPixmap no longer 1867*c8dee2aaSAndroid Build Coastguard Worker take an SkColorSpace parameter. It was unused. 1868*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/234579 1869*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/234912 1870*c8dee2aaSAndroid Build Coastguard Worker 1871*c8dee2aaSAndroid Build Coastguard Worker * SkImage::reinterpretColorSpace - to reinterpret image contents in a new 1872*c8dee2aaSAndroid Build Coastguard Worker color space. 1873*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/234328 1874*c8dee2aaSAndroid Build Coastguard Worker 1875*c8dee2aaSAndroid Build Coastguard Worker * Removed SkImage::MakeCrossContextFromEncoded. 1876*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/234912 1877*c8dee2aaSAndroid Build Coastguard Worker 1878*c8dee2aaSAndroid Build Coastguard Worker * Add Metal support for GrFence, GrSemaphore, and GrBackendSemaphore 1879*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/233416 1880*c8dee2aaSAndroid Build Coastguard Worker 1881*c8dee2aaSAndroid Build Coastguard Worker * SkMallocPixelRef: remove MakeDirect and MakeWithProc from API. 1882*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/234660 1883*c8dee2aaSAndroid Build Coastguard Worker 1884*c8dee2aaSAndroid Build Coastguard Worker * Remove 4-parameter variant of SkRect::join() and intersect(), and 1885*c8dee2aaSAndroid Build Coastguard Worker noemptycheck variants of intersect(). 1886*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/235832 1887*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/237142 1888*c8dee2aaSAndroid Build Coastguard Worker 1889*c8dee2aaSAndroid Build Coastguard Worker * Remove unused sk_sp comparison operators. 1890*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/236942 1891*c8dee2aaSAndroid Build Coastguard Worker 1892*c8dee2aaSAndroid Build Coastguard Worker * Add SkColor4f variant to experimental_DrawEdgeAAQuad for SkiaRenderer. 1893*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/237492 1894*c8dee2aaSAndroid Build Coastguard Worker 1895*c8dee2aaSAndroid Build Coastguard Worker * Deprecated maxCount resource cache limit for Ganesh. 1896*c8dee2aaSAndroid Build Coastguard Worker This hasn't been relevant for a long time. 1897*c8dee2aaSAndroid Build Coastguard Worker 1898*c8dee2aaSAndroid Build Coastguard Worker * Changed GrContextOptions' fDisallowGLSLBinaryCaching to fShaderCacheStrategy, 1899*c8dee2aaSAndroid Build Coastguard Worker and allow caching SkSL. 1900*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/238856 1901*c8dee2aaSAndroid Build Coastguard Worker 1902*c8dee2aaSAndroid Build Coastguard Worker * Use GL_QCOM_TILED_RENDERING to explicitly discard stencil 1903*c8dee2aaSAndroid Build Coastguard Worker 1904*c8dee2aaSAndroid Build Coastguard Worker * Added RELEASE_NOTES.txt file 1905*c8dee2aaSAndroid Build Coastguard Worker https://review.skia.org/229760 1906*c8dee2aaSAndroid Build Coastguard Worker 1907*c8dee2aaSAndroid Build Coastguard Worker * Implemented internal support for OpenGL tessellation. 1908