Developer
Christopher Cameron
ccameron@chromium.org
Performance
Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files | Effort |
|---|---|---|---|---|
| 6e2c1eb | This commit **introduces a new fuzzer** specifically designed to test the **AdaptiveGlobalToneMap parsing logic**, focusing on the `parse` method. It **expands the fuzzing infrastructure** by adding `fuzz/oss_fuzz/FuzzHdrAgtm.cpp` to process and validate input data, ensuring the robustness of HDR tone mapping configuration handling. This **new capability** involves **integrating the fuzzer** into the build system via `BUILD.gn` and extending `fuzz/FuzzMain.cpp` to dispatch the new `hdr_agtm` fuzzer type. The primary goal is to proactively identify and prevent issues related to malformed or unexpected input within the **AdaptiveGlobalToneMap** component, thereby enhancing its stability and security. | Mar 30 | 3 | grow |
| 81ef223 | This commit delivers a **bug fix** and **robustness improvement** to the **`skhdr::AGTM` module's** implementation of **PCHIP slope computations** for SMPTE ST 2094-50. The `PopulateSlopeFromPCHIP` function in `src/codec/SkHdrAgtm.cpp` was updated to correctly handle repeated control points and various edge cases, including changing indices to signed integers as required by the specification. This ensures more accurate and reliable **HDR tone mapping** and metadata processing. New tests were added in `tests/HdrMetadataTest.cpp` to thoroughly validate these enhanced computations. | Mar 24 | 2 | waste |
| 9c227d1 | This commit **introduces a `uint16` interface** for the **`skhdr::ContentLightLevelInformation` structure**, adding helper functions like `getUint16MaxCLL` and `getUint16MaxFALL` in `include/private/SkHdrMetadata.h`. This **new capability** simplifies integration with CTA-defined libraries that expect integer-only Content Light Level Information, eliminating the need for frequent `float` to `uint16_t` casts. The `serialize` method in `src/codec/SkHdrMetadata.cpp` is **refactored** to utilize these new helpers, improving internal consistency. Ultimately, this change streamlines data access and **enhances the usability** of `SkHdrMetadata` for consumers requiring `uint16` representations. | Mar 19 | 2 | grow |
| df5f123 | This commit delivers a **bug fix** addressing an **out-of-bounds read** vulnerability within the `SkJpegMultiPictureParameters::Make` function in `src/codec/SkJpegMultiPicture.cpp`. The issue arose from an overflow in bounds checking when processing `MPEntries` arrays, which could lead to crashes or incorrect data handling. The solution involves utilizing `SkSafeMath` for secure size calculations and ensuring that each `MPEntry` data subset is safely extracted, failing gracefully if the extraction is unsuccessful. This significantly enhances the **robustness and security** of the **JPEG multi-picture parameter parsing** subsystem. | Mar 9 | 1 | waste |
| 4ff32fa | This commit **fixes a bug** in the **`skhdr::Agtm`** component by enforcing normalization of component mixing coefficients during parsing. Previously, various implementations used inconsistent "close enough to 1" thresholds, leading to potential inaccuracies. The `parse` function in `src/codec/SkHdrAgtmParse.cpp` now explicitly normalizes these coefficients to ensure they sum to 1, strictly adhering to the specification. This **maintenance** change guarantees **consistent and accurate HDR metadata processing**. A new `Mix-Normalization` test case in `tests/HdrMetadataTest.cpp` has been added to verify this correct normalization behavior. | Feb 12 | 2 | waste |
| a4ed47c | This commit **introduces `kR16_float_SkColorType`**, a new single-channel half-float color type, which is more semantically appropriate for representing single-channel float16 data than `kA16_float_SkColorType`. This **new capability** involves comprehensive updates across **core Skia modules** such as `SkImageInfo`, `SkPixmap`, and `SkRasterPipeline` to correctly process this format. Furthermore, it extends support to **GPU rendering backends** for both Ganesh (D3D, GL, Metal, Vulkan) and Graphite (Dawn, Metal, Vulkan), ensuring seamless handling of R16F textures and operations. The change enables efficient and accurate processing of single-channel float16 data throughout the entire rendering pipeline, from pixel conversions to GPU texture management. | Feb 9 | 40 | grow |
| 2e456f4 | This commit introduces **new feature support** for the `kR8_unorm_SkColorType` across the **Direct3D** and **Metal GPU backends**. It updates `GrD3DCaps` and `GrMtlCaps` to correctly recognize `GrColorType::kR_8` with `DXGI_FORMAT_R8_UNORM` and `MTLPixelFormatR8Unorm` respectively, expanding the range of supported color formats for these platforms. Concurrently, a **bug fix** is applied to **Skia's core color handling** in `src/core/SkPixmap.cpp`. This fix corrects an erroneous scaling factor in `SkPixmap::getColor` and `SkPixmap::getColor4f` for `kR16G16_unorm_SkColorType`. The change ensures proper 16-bit color component conversion, preventing incorrect color values when retrieving pixel data and improving both **GPU rendering capabilities** and the **accuracy of color data retrieval** within Skia. | Feb 3 | 3 | waste |
| 6f9511c | This commit **enhances color type support** by adding recognition for `kR8_unorm_SkColorType` and `kR16_unorm_SkColorType`. The `SkYUVAPixmapInfo::NumChannelsAndDataType` function is updated to correctly identify channels and data types for `kR8_unorm_SkColorType`. Crucially, the **Vulkan backend** (`GrVkCaps`) now properly supports these new R-channel color types, including their Vulkan formats in `initFormatTable` and adding them to `getTestingCombinations`. This **feature enhancement** expands the range of supported pixel formats, particularly for **Vulkan rendering**, ensuring proper handling and testing of single-channel unorm textures. | Jan 30 | 2 | grow |
| 7578ad6 | This commit **enhances the robustness and compliance** of the `skhdr::AdaptiveGlobalToneMap` subsystem by **implementing comprehensive validation** for HDR metadata. New `Validate` functions in `src/codec/SkHdrAgtm.cpp` enforce normative constraints from ST 2094-50 CD2, rejecting invalid metadata during both serialization and deserialization within `src/codec/SkHdrAgtmParse.cpp`. Additionally, comments referencing specification clauses are updated in `src/codec/SkHdrAgtmPriv.h`, and the `tests/HdrMetadataTest.cpp` suite is expanded with new validation tests and improved serialization checks to ensure correct binary output and equivalence handling. This work ensures that the HDR tone mapping metadata strictly adheres to the specified standard, preventing malformed data from being processed. | Jan 27 | 5 | grow |
| 2512697 | This commit **updates the `skhdr::AdaptiveGlobalToneMap` component** to conform with the **2094-50 committee draft 2 specification**. It **modifies the encoding of control point Y values** in AGTM metadata from `[-12, 12]` to `[-6, 0]` or `[0, 6]`, and introduces separate `application_version` and `minimum_application_version` fields. This **spec compliance update** primarily affects the **parsing and serialization logic** within `src/codec/SkHdrAgtmParse.cpp`, ensuring accurate handling of AGTM data. The `parse_application_info`, `write_application_info`, `parse`, and `serialize` functions are specifically updated to reflect these changes. Corresponding **test cases** in `tests/HdrMetadataTest.cpp` have been adjusted to validate these updated encoding and decoding rules, maintaining data integrity. | Jan 24 | 2 | grow |
| 6060659 | This commit performs a **refactoring** of the **HDR metadata handling** within Skia by **removing the `skhdr::Agtm` interface**. The `Agtm` class definition, its implementation in `src/codec/SkHdrMetadata.cpp`, and corresponding tests in `tests/HdrMetadataTest.cpp` are eliminated, with the `Metadata` structure now exclusively using the `skhdr::AdaptiveGlobalToneMap` member. This **maintenance** effort streamlines the internal representation and access of adaptive global tone mapping parameters, ensuring consistency with the intended new interface for the `SkHdrMetadata` component. | Jan 23 | 5 | maint |
| e3f6bfa | This commit provides a **bug fix** and **optimization** for the **Adaptive Global Tone Mapping (AGTM)** system within `skhdr::`. It resolves an issue where the gain curve parameters, stored in a texture, were using an F32 format that failed on real implementations, by switching to a more compatible **F16** texture format. Additionally, the commit **optimizes** resource usage by dynamically sizing this parameter texture in `MakeGainCurveXYMImage` to precisely match the number of images and control points, rather than a theoretical maximum. This improves the robustness and efficiency of AGTM processing. | Jan 20 | 1 | waste |
| 5cef23e | This commit **enhances the `skhdr::AdaptiveGlobalToneMap` structure** by introducing an `operator==` for robust comparison of its instances and related `SkHdrMetadata` structs. It also **refactors the initialization process** for `AdaptiveGlobalToneMap` and `HeadroomAdaptiveToneMap` to support **designated aggregate initialization**. This is achieved by removing explicit default constructors and providing default member values, making these **HDR metadata structures** easier and safer to instantiate. The changes simplify client code and tests, which are updated to leverage the new initialization pattern and implicitly verify the comparison operators. | Jan 20 | 4 | maint |
| bc94efd | This commit **completes the shader implementation** for `skhdr::Metadata::makeToneMapColorFilter`, introducing **new capabilities** for **HDR content processing**. It now compensates for the input color space's white level by scaling colors in linear space to match the white level specified in AGTM metadata. Additionally, it implements **default RWTMO tone mapping** for PQ or HLG inputs, automatically deriving HDR headroom from CLLI or MDCV metadata when available. This enhancement to the **HDR rendering pipeline** within the `SkHdrAgtm` and `SkHdrMetadata` modules ensures more accurate and consistent display of HDR content. | Jan 20 | 4 | grow |
| 99ca068 | This commit **enhances the SkColorSpace core library** by introducing an `operator==` for the `SkColorSpacePrimaries` struct. This **new capability** allows for direct, semantic comparison of color space primary definitions, simplifying equality checks within the **color management subsystem**. The addition provides a convenient and robust way to determine if two `SkColorSpacePrimaries` instances represent the same set of color primaries, improving code clarity and maintainability. A corresponding release note documents this new API for users. | Jan 15 | 4 | grow |
| b4b89d7 | This commit **enhances API consistency** and **facilitates Chromium integration** by adding and refactoring equality operators for several core Skia structures. It introduces a **new default `operator==`** for the `SkColorSpacePrimaries` struct within the **SkColorSpace module**, along with a macro `SKIA_COLOR_SPACE_PRIMARIES_OPERATOR_EQUAL` to signal its presence. Concurrently, it **refactors existing `operator==` implementations** for `ContentLightLevelInformation`, `MasteringDisplayColorVolume`, and nested structs in `AdaptiveGlobalToneMap` within the **SkHdrMetadata module** to use default definitions. This **maintenance and growth work** is crucial for **preventing compile errors during Chromium integration** and improves the overall usability of these data structures. | Jan 15 | 6 | grow |
| 50baf92 | This commit **refactors** the **Adaptive Global Tone Mapping (AGTM)** subsystem within the `skhdr` module, preparing for the removal of the `skhdr::Agtm` interface. It moves core helper functions, such as `ApplyGain` and `MakeColorFilter`, from `skhdr::AgtmImpl` into a new `skhdr::AgtmHelpers` namespace to improve modularity. Concurrently, **new capabilities** are introduced for **HDR metadata management** via `skhdr::Metadata::get/setAdaptiveGlobalToneMap` methods. A new helper, `AgtmHelpers::PopulateToneMapAgtmParams`, is added to facilitate default tone mapping for HDR content and adjust for reference white metadata, alongside a new `makeToneMapColorFilter` helper, enhancing the project's **HDR content processing** and **API evolution**. | Jan 14 | 5 | maint |
| 0b5631b | This commit performs **maintenance** and **refactoring** within the **Skia HDR metadata handling** by modifying the `skhdr::AdaptiveGlobalToneMap` structure. It **adds the `SK_API` macro** to several of its nested sub-structures in `include/private/SkHdrMetadata.h`, ensuring proper symbol export and API visibility for these components. Additionally, the commit **removes the declarations for `operator==` and `operator!=`** from these structures, as their implementations were missing, thus cleaning up the API surface without functional change. This work improves the **robustness and correctness of the Skia API** for HDR metadata, particularly for cross-module usage. | Jan 13 | 1 | maint |
| 8f31342 | This commit **fixes a bug** by adding the missing `SK_API` macro to the `AdaptiveGlobalToneMap` struct definition in `include/private/SkHdrMetadata.h`. This **maintenance change** ensures proper **API visibility** for the **HDR metadata handling** component within the `skhdr` namespace. By correctly marking the `AdaptiveGlobalToneMap` struct, it prevents potential **linking errors** for external consumers of the Skia library when built as a shared library, thereby improving the robustness of the Skia API. | Jan 12 | 1 | maint |
| 309216d | This commit introduces **public HDR metadata handling** by adding a new `AdaptiveGlobalToneMap` struct to `include/private/SkHdrMetadata.h`. This **new feature** provides essential methods like `parse` and `serialize` for representing and exchanging HDR metadata, specifically enabling **IPC serialization for Chrome**. Concurrently, it **refactors** the existing `skhdr::AdaptiveGlobalToneMap` by moving it to this private header and adds warnings about its impending removal. This change enhances Skia's ability to manage and communicate HDR display characteristics, with a direct impact on **Chrome's inter-process communication** of HDR data. | Jan 9 | 2 | grow |
This commit **introduces a new fuzzer** specifically designed to test the **AdaptiveGlobalToneMap parsing logic**, focusing on the `parse` method. It **expands the fuzzing infrastructure** by adding `fuzz/oss_fuzz/FuzzHdrAgtm.cpp` to process and validate input data, ensuring the robustness of HDR tone mapping configuration handling. This **new capability** involves **integrating the fuzzer** into the build system via `BUILD.gn` and extending `fuzz/FuzzMain.cpp` to dispatch the new `hdr_agtm` fuzzer type. The primary goal is to proactively identify and prevent issues related to malformed or unexpected input within the **AdaptiveGlobalToneMap** component, thereby enhancing its stability and security.
This commit delivers a **bug fix** and **robustness improvement** to the **`skhdr::AGTM` module's** implementation of **PCHIP slope computations** for SMPTE ST 2094-50. The `PopulateSlopeFromPCHIP` function in `src/codec/SkHdrAgtm.cpp` was updated to correctly handle repeated control points and various edge cases, including changing indices to signed integers as required by the specification. This ensures more accurate and reliable **HDR tone mapping** and metadata processing. New tests were added in `tests/HdrMetadataTest.cpp` to thoroughly validate these enhanced computations.
This commit **introduces a `uint16` interface** for the **`skhdr::ContentLightLevelInformation` structure**, adding helper functions like `getUint16MaxCLL` and `getUint16MaxFALL` in `include/private/SkHdrMetadata.h`. This **new capability** simplifies integration with CTA-defined libraries that expect integer-only Content Light Level Information, eliminating the need for frequent `float` to `uint16_t` casts. The `serialize` method in `src/codec/SkHdrMetadata.cpp` is **refactored** to utilize these new helpers, improving internal consistency. Ultimately, this change streamlines data access and **enhances the usability** of `SkHdrMetadata` for consumers requiring `uint16` representations.
This commit delivers a **bug fix** addressing an **out-of-bounds read** vulnerability within the `SkJpegMultiPictureParameters::Make` function in `src/codec/SkJpegMultiPicture.cpp`. The issue arose from an overflow in bounds checking when processing `MPEntries` arrays, which could lead to crashes or incorrect data handling. The solution involves utilizing `SkSafeMath` for secure size calculations and ensuring that each `MPEntry` data subset is safely extracted, failing gracefully if the extraction is unsuccessful. This significantly enhances the **robustness and security** of the **JPEG multi-picture parameter parsing** subsystem.
This commit **fixes a bug** in the **`skhdr::Agtm`** component by enforcing normalization of component mixing coefficients during parsing. Previously, various implementations used inconsistent "close enough to 1" thresholds, leading to potential inaccuracies. The `parse` function in `src/codec/SkHdrAgtmParse.cpp` now explicitly normalizes these coefficients to ensure they sum to 1, strictly adhering to the specification. This **maintenance** change guarantees **consistent and accurate HDR metadata processing**. A new `Mix-Normalization` test case in `tests/HdrMetadataTest.cpp` has been added to verify this correct normalization behavior.
This commit **introduces `kR16_float_SkColorType`**, a new single-channel half-float color type, which is more semantically appropriate for representing single-channel float16 data than `kA16_float_SkColorType`. This **new capability** involves comprehensive updates across **core Skia modules** such as `SkImageInfo`, `SkPixmap`, and `SkRasterPipeline` to correctly process this format. Furthermore, it extends support to **GPU rendering backends** for both Ganesh (D3D, GL, Metal, Vulkan) and Graphite (Dawn, Metal, Vulkan), ensuring seamless handling of R16F textures and operations. The change enables efficient and accurate processing of single-channel float16 data throughout the entire rendering pipeline, from pixel conversions to GPU texture management.
This commit introduces **new feature support** for the `kR8_unorm_SkColorType` across the **Direct3D** and **Metal GPU backends**. It updates `GrD3DCaps` and `GrMtlCaps` to correctly recognize `GrColorType::kR_8` with `DXGI_FORMAT_R8_UNORM` and `MTLPixelFormatR8Unorm` respectively, expanding the range of supported color formats for these platforms. Concurrently, a **bug fix** is applied to **Skia's core color handling** in `src/core/SkPixmap.cpp`. This fix corrects an erroneous scaling factor in `SkPixmap::getColor` and `SkPixmap::getColor4f` for `kR16G16_unorm_SkColorType`. The change ensures proper 16-bit color component conversion, preventing incorrect color values when retrieving pixel data and improving both **GPU rendering capabilities** and the **accuracy of color data retrieval** within Skia.
This commit **enhances color type support** by adding recognition for `kR8_unorm_SkColorType` and `kR16_unorm_SkColorType`. The `SkYUVAPixmapInfo::NumChannelsAndDataType` function is updated to correctly identify channels and data types for `kR8_unorm_SkColorType`. Crucially, the **Vulkan backend** (`GrVkCaps`) now properly supports these new R-channel color types, including their Vulkan formats in `initFormatTable` and adding them to `getTestingCombinations`. This **feature enhancement** expands the range of supported pixel formats, particularly for **Vulkan rendering**, ensuring proper handling and testing of single-channel unorm textures.
This commit **enhances the robustness and compliance** of the `skhdr::AdaptiveGlobalToneMap` subsystem by **implementing comprehensive validation** for HDR metadata. New `Validate` functions in `src/codec/SkHdrAgtm.cpp` enforce normative constraints from ST 2094-50 CD2, rejecting invalid metadata during both serialization and deserialization within `src/codec/SkHdrAgtmParse.cpp`. Additionally, comments referencing specification clauses are updated in `src/codec/SkHdrAgtmPriv.h`, and the `tests/HdrMetadataTest.cpp` suite is expanded with new validation tests and improved serialization checks to ensure correct binary output and equivalence handling. This work ensures that the HDR tone mapping metadata strictly adheres to the specified standard, preventing malformed data from being processed.
This commit **updates the `skhdr::AdaptiveGlobalToneMap` component** to conform with the **2094-50 committee draft 2 specification**. It **modifies the encoding of control point Y values** in AGTM metadata from `[-12, 12]` to `[-6, 0]` or `[0, 6]`, and introduces separate `application_version` and `minimum_application_version` fields. This **spec compliance update** primarily affects the **parsing and serialization logic** within `src/codec/SkHdrAgtmParse.cpp`, ensuring accurate handling of AGTM data. The `parse_application_info`, `write_application_info`, `parse`, and `serialize` functions are specifically updated to reflect these changes. Corresponding **test cases** in `tests/HdrMetadataTest.cpp` have been adjusted to validate these updated encoding and decoding rules, maintaining data integrity.
This commit performs a **refactoring** of the **HDR metadata handling** within Skia by **removing the `skhdr::Agtm` interface**. The `Agtm` class definition, its implementation in `src/codec/SkHdrMetadata.cpp`, and corresponding tests in `tests/HdrMetadataTest.cpp` are eliminated, with the `Metadata` structure now exclusively using the `skhdr::AdaptiveGlobalToneMap` member. This **maintenance** effort streamlines the internal representation and access of adaptive global tone mapping parameters, ensuring consistency with the intended new interface for the `SkHdrMetadata` component.
This commit provides a **bug fix** and **optimization** for the **Adaptive Global Tone Mapping (AGTM)** system within `skhdr::`. It resolves an issue where the gain curve parameters, stored in a texture, were using an F32 format that failed on real implementations, by switching to a more compatible **F16** texture format. Additionally, the commit **optimizes** resource usage by dynamically sizing this parameter texture in `MakeGainCurveXYMImage` to precisely match the number of images and control points, rather than a theoretical maximum. This improves the robustness and efficiency of AGTM processing.
This commit **enhances the `skhdr::AdaptiveGlobalToneMap` structure** by introducing an `operator==` for robust comparison of its instances and related `SkHdrMetadata` structs. It also **refactors the initialization process** for `AdaptiveGlobalToneMap` and `HeadroomAdaptiveToneMap` to support **designated aggregate initialization**. This is achieved by removing explicit default constructors and providing default member values, making these **HDR metadata structures** easier and safer to instantiate. The changes simplify client code and tests, which are updated to leverage the new initialization pattern and implicitly verify the comparison operators.
This commit **completes the shader implementation** for `skhdr::Metadata::makeToneMapColorFilter`, introducing **new capabilities** for **HDR content processing**. It now compensates for the input color space's white level by scaling colors in linear space to match the white level specified in AGTM metadata. Additionally, it implements **default RWTMO tone mapping** for PQ or HLG inputs, automatically deriving HDR headroom from CLLI or MDCV metadata when available. This enhancement to the **HDR rendering pipeline** within the `SkHdrAgtm` and `SkHdrMetadata` modules ensures more accurate and consistent display of HDR content.
This commit **enhances the SkColorSpace core library** by introducing an `operator==` for the `SkColorSpacePrimaries` struct. This **new capability** allows for direct, semantic comparison of color space primary definitions, simplifying equality checks within the **color management subsystem**. The addition provides a convenient and robust way to determine if two `SkColorSpacePrimaries` instances represent the same set of color primaries, improving code clarity and maintainability. A corresponding release note documents this new API for users.
This commit **enhances API consistency** and **facilitates Chromium integration** by adding and refactoring equality operators for several core Skia structures. It introduces a **new default `operator==`** for the `SkColorSpacePrimaries` struct within the **SkColorSpace module**, along with a macro `SKIA_COLOR_SPACE_PRIMARIES_OPERATOR_EQUAL` to signal its presence. Concurrently, it **refactors existing `operator==` implementations** for `ContentLightLevelInformation`, `MasteringDisplayColorVolume`, and nested structs in `AdaptiveGlobalToneMap` within the **SkHdrMetadata module** to use default definitions. This **maintenance and growth work** is crucial for **preventing compile errors during Chromium integration** and improves the overall usability of these data structures.
This commit **refactors** the **Adaptive Global Tone Mapping (AGTM)** subsystem within the `skhdr` module, preparing for the removal of the `skhdr::Agtm` interface. It moves core helper functions, such as `ApplyGain` and `MakeColorFilter`, from `skhdr::AgtmImpl` into a new `skhdr::AgtmHelpers` namespace to improve modularity. Concurrently, **new capabilities** are introduced for **HDR metadata management** via `skhdr::Metadata::get/setAdaptiveGlobalToneMap` methods. A new helper, `AgtmHelpers::PopulateToneMapAgtmParams`, is added to facilitate default tone mapping for HDR content and adjust for reference white metadata, alongside a new `makeToneMapColorFilter` helper, enhancing the project's **HDR content processing** and **API evolution**.
This commit performs **maintenance** and **refactoring** within the **Skia HDR metadata handling** by modifying the `skhdr::AdaptiveGlobalToneMap` structure. It **adds the `SK_API` macro** to several of its nested sub-structures in `include/private/SkHdrMetadata.h`, ensuring proper symbol export and API visibility for these components. Additionally, the commit **removes the declarations for `operator==` and `operator!=`** from these structures, as their implementations were missing, thus cleaning up the API surface without functional change. This work improves the **robustness and correctness of the Skia API** for HDR metadata, particularly for cross-module usage.
This commit **fixes a bug** by adding the missing `SK_API` macro to the `AdaptiveGlobalToneMap` struct definition in `include/private/SkHdrMetadata.h`. This **maintenance change** ensures proper **API visibility** for the **HDR metadata handling** component within the `skhdr` namespace. By correctly marking the `AdaptiveGlobalToneMap` struct, it prevents potential **linking errors** for external consumers of the Skia library when built as a shared library, thereby improving the robustness of the Skia API.
This commit introduces **public HDR metadata handling** by adding a new `AdaptiveGlobalToneMap` struct to `include/private/SkHdrMetadata.h`. This **new feature** provides essential methods like `parse` and `serialize` for representing and exchanging HDR metadata, specifically enabling **IPC serialization for Chrome**. Concurrently, it **refactors** the existing `skhdr::AdaptiveGlobalToneMap` by moving it to this private header and adds warnings about its impending removal. This change enhances Skia's ability to manage and communicate HDR display characteristics, with a direct impact on **Chrome's inter-process communication** of HDR data.
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.