Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ImagePipeline v2 #235

Merged
merged 1 commit into from
May 13, 2019
Merged

ImagePipeline v2 #235

merged 1 commit into from
May 13, 2019

Conversation

kean
Copy link
Owner

@kean kean commented May 9, 2019

A prerequisite for #227 Caching Processing Image.

ImagePipeline v2

The first iteration of ImagePipeline introduced in Nuke 7 has some technical debt which needs to be addressed. The primary reason for adding tech debt was introduction of progressive decoding without rethinking the existing solution.

Before #227 Caching Processing Image can be implemented this tech debt needs to be addressed.

Problem

The current solution is no longer adequate for the requirements.

Most of the complexity in the current solution lies in the imperative nature of the pipeline – it goes from step 1 to the final step and also the fact that it doesn't fully embrace the progressive decoding.

Solution

The solution suggested is to rethink the way we think about the pipeline. Instead of going from step 1, it's actually best to start at the last step. This way we would naturally create a dependency graph between steps. In order to do that we also introduce a new Task abstraction with support for one-to-many observers which we need for duplications and for progressive decoding. By doing that we can also:

  • Remove CancellationTokenSource
  • Remove Property
  • Remove private isDecodingEnabled from ImageRequest and introduce proper loadData API to the pipeline (not in the scope of the MR).

@kean kean mentioned this pull request May 9, 2019
@kean kean changed the title Rework the Pipeline ImagePipeline v2 May 11, 2019
@kean kean force-pushed the rework-deduplication branch 10 times, most recently from 8e6ab64 to 58f8e13 Compare May 12, 2019 17:31
  - Rewrite ImagePipeline on top of a new Task abstraction which supports multiple observers, priorities, subtasks
  - Remove ImageContainer, Property, CancellationTokenSource
  - Remove CancellationToken source usage from RateLimiter
  - Remove PreheaterKey
  - Remove metrics for now, will be re-implemented in the future with a new API
  - Update Third Party Libraries guide
@kean kean force-pushed the rework-deduplication branch from 58f8e13 to ab59a38 Compare May 13, 2019 05:21
@kean kean merged commit bd55380 into nuke8 May 13, 2019
@kean kean deleted the rework-deduplication branch May 14, 2019 18:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant