xref: /aosp_15_r20/external/skia/RELEASE_NOTES.md (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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