Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: src/core/SkRasterPipeline.h

Issue 2449243003: Initial implementation of a SkColorSpace_A2B xform (Closed)
Patch Set: updated implementation to use SkRasterPipeline Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkRasterPipeline_DEFINED 8 #ifndef SkRasterPipeline_DEFINED
9 #define SkRasterPipeline_DEFINED 9 #define SkRasterPipeline_DEFINED
10 10
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 * 1) call st->next() with its mutated arguments, chaining to the next stage o f the pipeline; or 47 * 1) call st->next() with its mutated arguments, chaining to the next stage o f the pipeline; or
48 * 2) return, indicating the pipeline is complete for these pixels. 48 * 2) return, indicating the pipeline is complete for these pixels.
49 * 49 *
50 * Some stages that typically return are those that write a color to a destinati on pointer, 50 * Some stages that typically return are those that write a color to a destinati on pointer,
51 * but any stage can short-circuit the rest of the pipeline by returning instead of calling next(). 51 * but any stage can short-circuit the rest of the pipeline by returning instead of calling next().
52 */ 52 */
53 53
54 // TODO: There may be a better place to stuff tail, e.g. in the bottom alignment bits of 54 // TODO: There may be a better place to stuff tail, e.g. in the bottom alignment bits of
55 // the Stage*. This mostly matters on 64-bit Windows where every register is pr ecious. 55 // the Stage*. This mostly matters on 64-bit Windows where every register is pr ecious.
56 56
57 #define DECLARE_GAMMA(M, name) M(name##_r) M(name##_g) M(name##_b) M(name##_a)
58
57 #define SK_RASTER_PIPELINE_STAGES(M) \ 59 #define SK_RASTER_PIPELINE_STAGES(M) \
58 M(move_src_dst) M(clamp_0) M(clamp_a) M(unpremul) M(premul) \ 60 M(move_src_dst) M(clamp_0) M(clamp_a) M(unpremul) M(premul) \
59 M(constant_color) M(store_f32) \ 61 M(constant_color) M(store_f32) \
60 M(load_s_565) M(load_d_565) M(store_565) \ 62 M(load_s_565) M(load_d_565) M(store_565) \
61 M(load_s_srgb) M(load_d_srgb) M(store_srgb) \ 63 M(load_s_srgb) M(load_d_srgb) M(store_srgb) \
62 M(load_s_f16) M(load_d_f16) M(store_f16) \ 64 M(load_s_f16) M(load_d_f16) M(store_f16) \
65 M(load_s_linear_rgba) M(load_s_linear_bgra) \
66 M(store_linear_rgba) M(store_linear_bgra) \
63 M(scale_u8) M(scale_constant_float) \ 67 M(scale_u8) M(scale_constant_float) \
64 M(lerp_u8) M(lerp_565) M(lerp_constant_float) \ 68 M(lerp_u8) M(lerp_565) M(lerp_constant_float) \
65 M(dst) \ 69 M(dst) \
66 M(dstatop) M(dstin) M(dstout) M(dstover) \ 70 M(dstatop) M(dstin) M(dstout) M(dstover) \
67 M(srcatop) M(srcin) M(srcout) M(srcover) \ 71 M(srcatop) M(srcin) M(srcout) M(srcover) \
68 M(clear) M(modulate) M(multiply) M(plus_) M(screen) M(xor_) \ 72 M(clear) M(modulate) M(multiply) M(plus_) M(screen) M(xor_) \
69 M(colorburn) M(colordodge) M(darken) M(difference) \ 73 M(colorburn) M(colordodge) M(darken) M(difference) \
70 M(exclusion) M(hardlight) M(lighten) M(overlay) M(softlight) \ 74 M(exclusion) M(hardlight) M(lighten) M(overlay) M(softlight) \
71 M(luminance_to_alpha) M(matrix_4x5) 75 M(luminance_to_alpha) M(matrix_4x4) M(matrix_4x5) \
76 DECLARE_GAMMA(M, param_gamma) DECLARE_GAMMA(M, table_gamma) \
77 M(clut) M(labtoxyz)
72 78
73 class SkRasterPipeline { 79 class SkRasterPipeline {
74 public: 80 public:
75 // No pipeline may be more than kMaxStages long. 81 // No pipeline may be more than kMaxStages long.
76 static const int kMaxStages = 32; 82 static const int kMaxStages = 32;
77 83
78 SkRasterPipeline(); 84 SkRasterPipeline();
79 85
80 enum StockStage { 86 enum StockStage {
81 #define M(stage) stage, 87 #define M(stage) stage,
(...skipping 13 matching lines...) Expand all
95 StockStage stage; 101 StockStage stage;
96 void* ctx; 102 void* ctx;
97 }; 103 };
98 104
99 private: 105 private:
100 int fNum = 0; 106 int fNum = 0;
101 Stage fStages[kMaxStages]; 107 Stage fStages[kMaxStages];
102 }; 108 };
103 109
104 #endif//SkRasterPipeline_DEFINED 110 #endif//SkRasterPipeline_DEFINED
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698