NavigaraNavigara
OrganizationsDistributionCompareResearch
NavigaraNavigara
OrganizationsDistributionCompareResearch
All developers

Greg Daniel

Developer

Greg Daniel

egdaniel@google.com

38 commits~6 files/commit

Performance

YoY:+164%
2026Previous year

Insights

Key patterns and highlights from this developer's activity.

Peak MonthOct'25199 performance
Growth Trend↓85%vs prior period
Avg Files/Commit6files per commit
Active Days28of 455 days
Top Reposkia38 commits

Effort Over Time

Breakdown of growth, maintenance, and fixes effort over time.

Bug Behavior

Beta

Bugs introduced vs. fixed over time.

Investment Quality

Beta

Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.

49%Productive TimeGrowth 24% + Fixes 76%
35%Maintenance Time
16%Wasted Time
How it works

Methodology

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.

Relationship to Growth / Maintenance / Fixes

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.

Proposed API Endpoint

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
    }
  ]
}

Recent Activity

Latest analyzed commits from this developer.

HashMessageDateFilesEffort
812c2e2This commit performs a **revert** of a previous re-land, effectively **restoring** the design where mipmap data is stored directly within the **`SkBitmap`** class. This **refactoring** reintroduces the `fMips` member to `SkBitmap` and updates its constructors and methods to manage mipmaps internally. Consequently, the `SkImage_Raster` class no longer directly stores mipmaps, and the Ganesh GPU backend is significantly refactored to remove the `GrMippedBitmap` class, instead utilizing `SkBitmap` directly for mipmap-aware operations like proxy creation and fragment processing. The **CPU rendering backend** (`SkBitmapDevice`, `SkDraw`) is also updated to rely on `SkBitmap`'s internal mipmap storage, simplifying `drawBitmap` calls. This change centralizes mipmap ownership within `SkBitmap`, impacting both **CPU and GPU rendering paths** that handle mipmapped images.Mar 1046maint
0cab3e4This commit implements a **bug fix** to ensure the correct **glyph mask format** is consistently used throughout the text rendering pipeline, preventing issues with atlas selection and glyph drawing. It involves a significant **refactoring** of the **Ganesh and Graphite GPU backends' text subsystems**, specifically updating `GlyphEntryKey` and related data structures to explicitly include the mask format. Functions such as `makeGlyphFromID`, `getGlyph`, `addGlyphToAtlas`, and `initBackendData` were modified to accept and propagate this format, ensuring proper glyph caching and atlas management. This change impacts core **text rendering** by improving the accuracy of glyph placement and preventing potential out-of-bounds atlas access, and is validated by a new `AtlasOobTest`.Mar 1016waste
9a58840This commit **optimizes Vulkan descriptor pool allocation** within the **Graphite rendering backend** by implementing a **dynamic sizing strategy**. Instead of pre-allocating large descriptor pools, the system now starts with smaller pools and grows them incrementally as more descriptor sets are required. This **refactoring** of the `VulkanDescriptorPool` and `VulkanResourceProvider` aims to **reduce memory consumption** and processing time associated with descriptor set management. Specifically, the `VulkanDescriptorPool::Make` function was updated to accept a `numSets` parameter, enabling `VulkanResourceProvider` to manage pool sizes more efficiently during the `findOrCreateDescriptorSet` process. This change improves **resource management** for the **Graphite Vulkan backend**.Mar 54maint
54e54ddThis commit **removes a specific test case** from `VkBackendSurfaceMutableStateTest` within the **Vulkan backend's testing suite**. The removed test case attempted to move a non-external `VkImage` to an external queue, an operation now clarified by the **Vulkan specification** as disallowed. This **test refinement** ensures the test suite aligns with the latest Vulkan spec, preventing tests of invalid behavior. It also addresses the practical limitation of not having a second queue available in the test environment to properly execute such a transfer.Mar 42–
128390fThis commit **fixes a bug** in the **Ganesh Vulkan backend** by **preventing the creation of protected vertex and index buffers**. The `GrVkBuffer::Make` function in `src/gpu/ganesh/vk/GrVkBuffer.cpp` is modified to ensure these buffer types are not allocated as protected resources. This **corrects an issue** where protected memory access, which is disallowed in the vertex stage by Vulkan, could be incorrectly requested for vertex and index data. The change **improves the robustness and correctness** of Vulkan resource management within Ganesh, preventing potential rendering errors or crashes.Jan 201waste
6f7ad85This commit **fixes the initialization** of `VulkanCaps::DepthStencilFormatInfo` within the **Graphite Vulkan backend**, addressing an issue where depth and stencil format capabilities might be incorrectly reported. It involves a **refactoring** of the `VulkanCaps` class, introducing dedicated `ForInit` methods like `getDepthStencilFormatInfoForInit` to clearly separate format information retrieval for initialization from constant access. This **maintenance** change simplifies depth/stencil support checks and ensures that **Vulkan device capabilities** are accurately determined, preventing potential rendering issues related to misidentified hardware support.Jan 202maint
95ad05aThis commit introduces a **new utility** in `tools/DeserialProcsUtils` to centralize the setting of default deserialization procedures for **Skia Picture (SKP) decoding**, specifically for images and typefaces. This **refactoring** ensures that various **Skia tools** like `nanobench`, `dm`, `skp_parser`, `skpbench`, and `viewer` consistently and correctly decode SKP files. By providing a shared mechanism via `get_default_skp_deserial_procs`, it **fixes issues where SKPs were not fully rendered** due to missing deserialization logic, significantly improving the reliability of SKP processing across the project.Jan 1413maint
2c4be9fThis commit **updates the `.gitignore` rules** for the **Android viewer application's assets** located at `platform_tools/android/apps/viewer/src/main/assets`. It refines the ignore strategy to now **ignore all files by default** within this directory, then explicitly re-include the `.gitignore` file itself. This **maintenance chore** addresses an issue where previous rules were not effectively catching all unwanted asset files. The change ensures that all unintended asset files are properly excluded from version control, improving repository cleanliness and streamlining asset management for the **Android viewer**.Jan 141maint
b5f637dThis commit **updates the CI/CD infrastructure** to **refine Graphite testing coverage and stability**. It **removes the problematic Ubuntu Graphite ASAN test configuration** due to persistent timeouts, which was causing pipeline flakiness. Concurrently, a **new Android Graphite HWASAN test configuration** is introduced for `Test-Android-Clang-Pixel4a-GPU-Adreno618-arm64-Debug-All-Android_Graphite_Native_HWASAN`, expanding memory safety validation on a specific Android device. This **maintenance and growth** change, reflected in `infra/bots/jobs.json` and `infra/bots/tasks.json`, improves the reliability of the automated testing pipeline and extends crucial test coverage.Nov 52grow
45af4e8This commit performs **maintenance refactoring** within the **Continuous Quality (CQ) system** to **shift Graphite-related test workloads** off macOS devices. Specifically, it **removes a Mac-based ASAN Graphite Native Metal test task** and introduces a new **Ubuntu-based ASAN Graphite Native Vulkan test task** in `infra/bots/tasks.json`. Concurrently, the `infra/bots/jobs.json` configuration is adjusted to reflect these changes, optimizing resource allocation and expanding Graphite testing coverage on different platforms and graphics APIs. This ensures more efficient and diverse testing for Graphite.Nov 42maint
ce928c4This commit **fixes a bug** by modifying the **Skia infrastructure bots** to **skip the `vkmsaa4` configuration** when running **DM (Display Manager)** tasks for **Imagination (IMG) GPUs**. Specifically, the `dmFlags` function in `infra/bots/gen_tasks_logic/dm_flags.go` is updated to conditionally exclude this setting. This **configuration adjustment** prevents potential issues or incorrect behavior on Ganesh Imagination setups, ensuring more stable and correct testing on these specific hardware targets.Oct 292waste
83789d3This commit performs a **cleanup and refactoring** within the **Vulkan backend** following a previous refactor of `VulkanYcbcrConversionInfo`. It updates `src/gpu/ganesh/vk/AHardwareBufferVk.cpp` to access `externalFormat` via a getter method in `make_vk_backend_texture`. Concurrently, it removes redundant `fFormatFeatures` initialization and associated conditional logic from the `VulkanYcbcrConversionInfo` constructor and `toVkSamplerYcbcrConversionCreateInfo` function in `src/gpu/vk/VulkanUtilsPriv.cpp`. This **maintenance** work streamlines the handling of **Vulkan YCbCr conversion information**, improving code clarity and efficiency.Oct 293maint
bc0b20dThis commit **refactors** the **Vulkan** backend by adding the `SK_API` macro to the `VulkanYcbcrConversionInfo` struct definition within `include/gpu/vk/VulkanTypes.h`. This change ensures that the `VulkanYcbcrConversionInfo` struct is properly exported as part of Skia's public API. It is a **maintenance** update crucial for **API visibility and stability**, allowing external consumers of the Skia library to correctly access and utilize this Vulkan-specific structure. The modification makes the struct available for downstream integration, particularly for applications interacting with Vulkan YCbCr conversion functionalities.Oct 271maint
0d44e07This commit provides a **maintenance fix** for the **Graphite rendering backend's Android precompile test suite**. It **updates the expected pipeline labels** within `tests/graphite/precompile/AndroidPrecompileTest.cpp` to align with recent changes in how hardware image identifiers are generated or used. This ensures the **Android precompile tests** correctly validate the system's behavior and do not produce false failures due to outdated expectations. The change improves the **reliability of the Graphite testing infrastructure** by keeping test expectations current with underlying system behavior.Oct 221maint
3754c58This commit **fixes a bug** in the **Graphite and Ganesh Vulkan backends** by addressing inconsistent handling of **YCbCr feature flags**. Previously, these flags were dropped during conversions between `VulkanYcbcrConversionInfo` and `ImmutableSamplerInfo`, causing a **mismatch** in YCbCr object properties between `ImageViews` and `Samplers` when `chromeFilter` or main sampler filters were downgraded. This **refactoring** ensures that all YCbCr conversion decisions, including feature flags, are **tracked consistently** from the initial creation of `VulkanYcbcrConversionInfo` objects through all subsequent conversions. This **maintenance** work prevents potential rendering artifacts or incorrect filtering within the **Vulkan rendering pipeline** by guaranteeing proper YCbCr configuration across related objects.Oct 2218maint
e1555f6This commit **fixes a bug** (b/387306744) in the **Ganesh GPU backend** that prevented proper handling of drawing an image into a surface backed by the same texture. It introduces a **refactoring** to plumb the `targetSurface` proxy into `ProxyChooser::chooseProxy`, enabling the system to detect self-drawing scenarios and perform a necessary copy-on-write. This change modifies the `skgpu::ganesh::AsView` function signature and updates numerous image drawing functions and their call sites to correctly pass the `targetProxy` or `nullptr`. The update ensures robust image rendering by preventing illegal operations and is verified by a new test case.Oct 821waste
05f7251This commit **fixes a bug** in the **Ganesh GL backend** by refining the application of a **PowerVR workaround**. It ensures that when **ANGLE** is utilized as the GLES driver, the system correctly checks **ANGLE's internal driver version** rather than the irrelevant top-level driver version. This adjustment, implemented in `GrGLCaps.cpp` within the `applyDriverCorrectnessWorkarounds` function, prevents incorrect or missed application of the workaround. The change improves **rendering stability and correctness** for users running Ganesh with ANGLE on PowerVR hardware.Apr 11waste
af5aa0dThis commit performs a significant **refactoring** within the **Ganesh GPU backend** by plumbing `SurfaceDrawContext` directly through numerous `asFragmentProcessor` calls and related functions. This change updates how **fragment processors**, **image processing**, and various **drawing operations** (e.g., `SkPaintToGrPaint` functions, `Device` draw methods) access rendering context information, replacing or deriving `GrRecordingContext` with `SurfaceDrawContext`. The work is **preparatory maintenance**, simplifying argument passing and centralizing access to surface-specific properties. Specifically, it modifies `GrFPArgs` constructors, `GrFragmentProcessors::Make` functions, and `SkPaintToGrPaint` family of functions to accept `SurfaceDrawContext`. This foundational change is crucial for an upcoming feature that will require checking the target surface to determine copy-on-write behavior.Mar 3131maint
b85e599This commit performs **code cleanup** by **removing unused `makeSpecial` factory methods** from the **Ganesh Device** implementation. Consequently, the **test suite** is updated to remove the corresponding `MakeSpecial` helper methods and their test cases from `tests/DeviceTest.cpp`. This **maintenance** task streamlines the `Ganesh Device` interface, eliminating dead code and ensuring the test coverage accurately reflects the current API.Mar 2711maint
d54c36dThis commit **reverts** a previous, incorrect **bug fix** related to `copyOnWrite` logic within **Ganesh** image handling, specifically for **dual-proxies**. It undoes changes to the `surfaceMustCopyOnWrite` method in `SkImage_Ganesh.cpp` and `SkImage_Ganesh.h`, which had mistakenly compared an `SkSurface`'s cached image proxy to the surface's proxy. This **maintenance** revert restores the prior behavior, acknowledging that the previous fix did not correctly address the intended problem of comparing the input image to a draw command with the canvas/surface.Mar 213waste
812c2e2Mar 10

This commit performs a **revert** of a previous re-land, effectively **restoring** the design where mipmap data is stored directly within the **`SkBitmap`** class. This **refactoring** reintroduces the `fMips` member to `SkBitmap` and updates its constructors and methods to manage mipmaps internally. Consequently, the `SkImage_Raster` class no longer directly stores mipmaps, and the Ganesh GPU backend is significantly refactored to remove the `GrMippedBitmap` class, instead utilizing `SkBitmap` directly for mipmap-aware operations like proxy creation and fragment processing. The **CPU rendering backend** (`SkBitmapDevice`, `SkDraw`) is also updated to rely on `SkBitmap`'s internal mipmap storage, simplifying `drawBitmap` calls. This change centralizes mipmap ownership within `SkBitmap`, impacting both **CPU and GPU rendering paths** that handle mipmapped images.

46 filesmaint
0cab3e4Mar 10

This commit implements a **bug fix** to ensure the correct **glyph mask format** is consistently used throughout the text rendering pipeline, preventing issues with atlas selection and glyph drawing. It involves a significant **refactoring** of the **Ganesh and Graphite GPU backends' text subsystems**, specifically updating `GlyphEntryKey` and related data structures to explicitly include the mask format. Functions such as `makeGlyphFromID`, `getGlyph`, `addGlyphToAtlas`, and `initBackendData` were modified to accept and propagate this format, ensuring proper glyph caching and atlas management. This change impacts core **text rendering** by improving the accuracy of glyph placement and preventing potential out-of-bounds atlas access, and is validated by a new `AtlasOobTest`.

16 fileswaste
9a58840Mar 5

This commit **optimizes Vulkan descriptor pool allocation** within the **Graphite rendering backend** by implementing a **dynamic sizing strategy**. Instead of pre-allocating large descriptor pools, the system now starts with smaller pools and grows them incrementally as more descriptor sets are required. This **refactoring** of the `VulkanDescriptorPool` and `VulkanResourceProvider` aims to **reduce memory consumption** and processing time associated with descriptor set management. Specifically, the `VulkanDescriptorPool::Make` function was updated to accept a `numSets` parameter, enabling `VulkanResourceProvider` to manage pool sizes more efficiently during the `findOrCreateDescriptorSet` process. This change improves **resource management** for the **Graphite Vulkan backend**.

4 filesmaint
54e54ddMar 4

This commit **removes a specific test case** from `VkBackendSurfaceMutableStateTest` within the **Vulkan backend's testing suite**. The removed test case attempted to move a non-external `VkImage` to an external queue, an operation now clarified by the **Vulkan specification** as disallowed. This **test refinement** ensures the test suite aligns with the latest Vulkan spec, preventing tests of invalid behavior. It also addresses the practical limitation of not having a second queue available in the test environment to properly execute such a transfer.

2 files–
128390fJan 20

This commit **fixes a bug** in the **Ganesh Vulkan backend** by **preventing the creation of protected vertex and index buffers**. The `GrVkBuffer::Make` function in `src/gpu/ganesh/vk/GrVkBuffer.cpp` is modified to ensure these buffer types are not allocated as protected resources. This **corrects an issue** where protected memory access, which is disallowed in the vertex stage by Vulkan, could be incorrectly requested for vertex and index data. The change **improves the robustness and correctness** of Vulkan resource management within Ganesh, preventing potential rendering errors or crashes.

1 fileswaste
6f7ad85Jan 20

This commit **fixes the initialization** of `VulkanCaps::DepthStencilFormatInfo` within the **Graphite Vulkan backend**, addressing an issue where depth and stencil format capabilities might be incorrectly reported. It involves a **refactoring** of the `VulkanCaps` class, introducing dedicated `ForInit` methods like `getDepthStencilFormatInfoForInit` to clearly separate format information retrieval for initialization from constant access. This **maintenance** change simplifies depth/stencil support checks and ensures that **Vulkan device capabilities** are accurately determined, preventing potential rendering issues related to misidentified hardware support.

2 filesmaint
95ad05aJan 14

This commit introduces a **new utility** in `tools/DeserialProcsUtils` to centralize the setting of default deserialization procedures for **Skia Picture (SKP) decoding**, specifically for images and typefaces. This **refactoring** ensures that various **Skia tools** like `nanobench`, `dm`, `skp_parser`, `skpbench`, and `viewer` consistently and correctly decode SKP files. By providing a shared mechanism via `get_default_skp_deserial_procs`, it **fixes issues where SKPs were not fully rendered** due to missing deserialization logic, significantly improving the reliability of SKP processing across the project.

13 filesmaint
2c4be9fJan 14

This commit **updates the `.gitignore` rules** for the **Android viewer application's assets** located at `platform_tools/android/apps/viewer/src/main/assets`. It refines the ignore strategy to now **ignore all files by default** within this directory, then explicitly re-include the `.gitignore` file itself. This **maintenance chore** addresses an issue where previous rules were not effectively catching all unwanted asset files. The change ensures that all unintended asset files are properly excluded from version control, improving repository cleanliness and streamlining asset management for the **Android viewer**.

1 filesmaint
b5f637dNov 5

This commit **updates the CI/CD infrastructure** to **refine Graphite testing coverage and stability**. It **removes the problematic Ubuntu Graphite ASAN test configuration** due to persistent timeouts, which was causing pipeline flakiness. Concurrently, a **new Android Graphite HWASAN test configuration** is introduced for `Test-Android-Clang-Pixel4a-GPU-Adreno618-arm64-Debug-All-Android_Graphite_Native_HWASAN`, expanding memory safety validation on a specific Android device. This **maintenance and growth** change, reflected in `infra/bots/jobs.json` and `infra/bots/tasks.json`, improves the reliability of the automated testing pipeline and extends crucial test coverage.

2 filesgrow
45af4e8Nov 4

This commit performs **maintenance refactoring** within the **Continuous Quality (CQ) system** to **shift Graphite-related test workloads** off macOS devices. Specifically, it **removes a Mac-based ASAN Graphite Native Metal test task** and introduces a new **Ubuntu-based ASAN Graphite Native Vulkan test task** in `infra/bots/tasks.json`. Concurrently, the `infra/bots/jobs.json` configuration is adjusted to reflect these changes, optimizing resource allocation and expanding Graphite testing coverage on different platforms and graphics APIs. This ensures more efficient and diverse testing for Graphite.

2 filesmaint
ce928c4Oct 29

This commit **fixes a bug** by modifying the **Skia infrastructure bots** to **skip the `vkmsaa4` configuration** when running **DM (Display Manager)** tasks for **Imagination (IMG) GPUs**. Specifically, the `dmFlags` function in `infra/bots/gen_tasks_logic/dm_flags.go` is updated to conditionally exclude this setting. This **configuration adjustment** prevents potential issues or incorrect behavior on Ganesh Imagination setups, ensuring more stable and correct testing on these specific hardware targets.

2 fileswaste
83789d3Oct 29

This commit performs a **cleanup and refactoring** within the **Vulkan backend** following a previous refactor of `VulkanYcbcrConversionInfo`. It updates `src/gpu/ganesh/vk/AHardwareBufferVk.cpp` to access `externalFormat` via a getter method in `make_vk_backend_texture`. Concurrently, it removes redundant `fFormatFeatures` initialization and associated conditional logic from the `VulkanYcbcrConversionInfo` constructor and `toVkSamplerYcbcrConversionCreateInfo` function in `src/gpu/vk/VulkanUtilsPriv.cpp`. This **maintenance** work streamlines the handling of **Vulkan YCbCr conversion information**, improving code clarity and efficiency.

3 filesmaint
bc0b20dOct 27

This commit **refactors** the **Vulkan** backend by adding the `SK_API` macro to the `VulkanYcbcrConversionInfo` struct definition within `include/gpu/vk/VulkanTypes.h`. This change ensures that the `VulkanYcbcrConversionInfo` struct is properly exported as part of Skia's public API. It is a **maintenance** update crucial for **API visibility and stability**, allowing external consumers of the Skia library to correctly access and utilize this Vulkan-specific structure. The modification makes the struct available for downstream integration, particularly for applications interacting with Vulkan YCbCr conversion functionalities.

1 filesmaint
0d44e07Oct 22

This commit provides a **maintenance fix** for the **Graphite rendering backend's Android precompile test suite**. It **updates the expected pipeline labels** within `tests/graphite/precompile/AndroidPrecompileTest.cpp` to align with recent changes in how hardware image identifiers are generated or used. This ensures the **Android precompile tests** correctly validate the system's behavior and do not produce false failures due to outdated expectations. The change improves the **reliability of the Graphite testing infrastructure** by keeping test expectations current with underlying system behavior.

1 filesmaint
3754c58Oct 22

This commit **fixes a bug** in the **Graphite and Ganesh Vulkan backends** by addressing inconsistent handling of **YCbCr feature flags**. Previously, these flags were dropped during conversions between `VulkanYcbcrConversionInfo` and `ImmutableSamplerInfo`, causing a **mismatch** in YCbCr object properties between `ImageViews` and `Samplers` when `chromeFilter` or main sampler filters were downgraded. This **refactoring** ensures that all YCbCr conversion decisions, including feature flags, are **tracked consistently** from the initial creation of `VulkanYcbcrConversionInfo` objects through all subsequent conversions. This **maintenance** work prevents potential rendering artifacts or incorrect filtering within the **Vulkan rendering pipeline** by guaranteeing proper YCbCr configuration across related objects.

18 filesmaint
e1555f6Oct 8

This commit **fixes a bug** (b/387306744) in the **Ganesh GPU backend** that prevented proper handling of drawing an image into a surface backed by the same texture. It introduces a **refactoring** to plumb the `targetSurface` proxy into `ProxyChooser::chooseProxy`, enabling the system to detect self-drawing scenarios and perform a necessary copy-on-write. This change modifies the `skgpu::ganesh::AsView` function signature and updates numerous image drawing functions and their call sites to correctly pass the `targetProxy` or `nullptr`. The update ensures robust image rendering by preventing illegal operations and is verified by a new test case.

21 fileswaste
05f7251Apr 1

This commit **fixes a bug** in the **Ganesh GL backend** by refining the application of a **PowerVR workaround**. It ensures that when **ANGLE** is utilized as the GLES driver, the system correctly checks **ANGLE's internal driver version** rather than the irrelevant top-level driver version. This adjustment, implemented in `GrGLCaps.cpp` within the `applyDriverCorrectnessWorkarounds` function, prevents incorrect or missed application of the workaround. The change improves **rendering stability and correctness** for users running Ganesh with ANGLE on PowerVR hardware.

1 fileswaste
af5aa0dMar 31

This commit performs a significant **refactoring** within the **Ganesh GPU backend** by plumbing `SurfaceDrawContext` directly through numerous `asFragmentProcessor` calls and related functions. This change updates how **fragment processors**, **image processing**, and various **drawing operations** (e.g., `SkPaintToGrPaint` functions, `Device` draw methods) access rendering context information, replacing or deriving `GrRecordingContext` with `SurfaceDrawContext`. The work is **preparatory maintenance**, simplifying argument passing and centralizing access to surface-specific properties. Specifically, it modifies `GrFPArgs` constructors, `GrFragmentProcessors::Make` functions, and `SkPaintToGrPaint` family of functions to accept `SurfaceDrawContext`. This foundational change is crucial for an upcoming feature that will require checking the target surface to determine copy-on-write behavior.

31 filesmaint
b85e599Mar 27

This commit performs **code cleanup** by **removing unused `makeSpecial` factory methods** from the **Ganesh Device** implementation. Consequently, the **test suite** is updated to remove the corresponding `MakeSpecial` helper methods and their test cases from `tests/DeviceTest.cpp`. This **maintenance** task streamlines the `Ganesh Device` interface, eliminating dead code and ensuring the test coverage accurately reflects the current API.

11 filesmaint
d54c36dMar 21

This commit **reverts** a previous, incorrect **bug fix** related to `copyOnWrite` logic within **Ganesh** image handling, specifically for **dual-proxies**. It undoes changes to the `surfaceMustCopyOnWrite` method in `SkImage_Ganesh.cpp` and `SkImage_Ganesh.h`, which had mistakenly compared an `SkSurface`'s cached image proxy to the surface's proxy. This **maintenance** revert restores the prior behavior, acknowledging that the previous fix did not correctly address the intended problem of comparing the input image to a draw command with the canvas/surface.

3 fileswaste

Work Patterns

Beta

Commit activity distribution by hour and day of week. Shows when this developer is most active.

Collaboration

Beta

Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.

NavigaraNavigara
OrganizationsDistributionCompareResearch