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

Side by Side Diff: src/effects/gradients/SkSweepGradient.cpp

Issue 778453002: Remove backend factories (Closed) Base URL: https://skia.googlesource.com/skia.git@unichoice
Patch Set: more clang warnings Created 6 years 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 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkSweepGradient.h" 9 #include "SkSweepGradient.h"
10 10
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 *dstC++ = cache[toggle + index]; 170 *dstC++ = cache[toggle + index];
171 toggle = next_dither_toggle16(toggle); 171 toggle = next_dither_toggle16(toggle);
172 } 172 }
173 } 173 }
174 } 174 }
175 175
176 ///////////////////////////////////////////////////////////////////// 176 /////////////////////////////////////////////////////////////////////
177 177
178 #if SK_SUPPORT_GPU 178 #if SK_SUPPORT_GPU
179 179
180 #include "GrTBackendProcessorFactory.h" 180 #include "SkGr.h"
181 #include "gl/builders/GrGLProgramBuilder.h" 181 #include "gl/builders/GrGLProgramBuilder.h"
182 #include "SkGr.h"
183 182
184 class GrGLSweepGradient : public GrGLGradientEffect { 183 class GrGLSweepGradient : public GrGLGradientEffect {
185 public: 184 public:
186 185
187 GrGLSweepGradient(const GrBackendProcessorFactory& factory, 186 GrGLSweepGradient(const GrProcessor&) {}
188 const GrProcessor&) : INHERITED (factory) { }
189 virtual ~GrGLSweepGradient() { } 187 virtual ~GrGLSweepGradient() { }
190 188
191 virtual void emitCode(GrGLFPBuilder*, 189 virtual void emitCode(GrGLFPBuilder*,
192 const GrFragmentProcessor&, 190 const GrFragmentProcessor&,
193 const char* outputColor, 191 const char* outputColor,
194 const char* inputColor, 192 const char* inputColor,
195 const TransformedCoordsArray&, 193 const TransformedCoordsArray&,
196 const TextureSamplerArray&) SK_OVERRIDE; 194 const TextureSamplerArray&) SK_OVERRIDE;
197 195
198 static void GenKey(const GrProcessor& processor, const GrGLCaps&, GrProcesso rKeyBuilder* b) { 196 static void GenKey(const GrProcessor& processor, const GrGLCaps&, GrProcesso rKeyBuilder* b) {
199 b->add32(GenBaseGradientKey(processor)); 197 b->add32(GenBaseGradientKey(processor));
200 } 198 }
201 199
202 private: 200 private:
203 201
204 typedef GrGLGradientEffect INHERITED; 202 typedef GrGLGradientEffect INHERITED;
205 203
206 }; 204 };
207 205
208 ///////////////////////////////////////////////////////////////////// 206 /////////////////////////////////////////////////////////////////////
209 207
210 class GrSweepGradient : public GrGradientEffect { 208 class GrSweepGradient : public GrGradientEffect {
211 public: 209 public:
212 static GrFragmentProcessor* Create(GrContext* ctx, const SkSweepGradient& sh ader, 210 static GrFragmentProcessor* Create(GrContext* ctx, const SkSweepGradient& sh ader,
213 const SkMatrix& m) { 211 const SkMatrix& m) {
214 return SkNEW_ARGS(GrSweepGradient, (ctx, shader, m)); 212 return SkNEW_ARGS(GrSweepGradient, (ctx, shader, m));
215 } 213 }
216 virtual ~GrSweepGradient() { } 214 virtual ~GrSweepGradient() { }
217 215
218 static const char* Name() { return "Sweep Gradient"; } 216 virtual const char* name() const SK_OVERRIDE { return "Sweep Gradient"; }
219 virtual const GrBackendFragmentProcessorFactory& getFactory() const SK_OVERR IDE { 217
220 return GrTBackendFragmentProcessorFactory<GrSweepGradient>::getInstance( ); 218 virtual void getGLProcessorKey(const GrGLCaps& caps,
219 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
220 GrGLSweepGradient::GenKey(*this, caps, b);
221 } 221 }
222 222
223 typedef GrGLSweepGradient GLProcessor; 223 virtual GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE {
224 return SkNEW_ARGS(GrGLSweepGradient, (*this));
225 }
224 226
225 private: 227 private:
226 GrSweepGradient(GrContext* ctx, 228 GrSweepGradient(GrContext* ctx,
227 const SkSweepGradient& shader, 229 const SkSweepGradient& shader,
228 const SkMatrix& matrix) 230 const SkMatrix& matrix)
229 : INHERITED(ctx, shader, matrix, SkShader::kClamp_TileMode) { } 231 : INHERITED(ctx, shader, matrix, SkShader::kClamp_TileMode) {
232 this->initClassID<GrSweepGradient>();
233 }
230 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; 234 GR_DECLARE_FRAGMENT_PROCESSOR_TEST;
231 235
232 typedef GrGradientEffect INHERITED; 236 typedef GrGradientEffect INHERITED;
233 }; 237 };
234 238
235 ///////////////////////////////////////////////////////////////////// 239 /////////////////////////////////////////////////////////////////////
236 240
237 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSweepGradient); 241 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrSweepGradient);
238 242
239 GrFragmentProcessor* GrSweepGradient::TestCreate(SkRandom* random, 243 GrFragmentProcessor* GrSweepGradient::TestCreate(SkRandom* random,
(...skipping 17 matching lines...) Expand all
257 } 261 }
258 262
259 ///////////////////////////////////////////////////////////////////// 263 /////////////////////////////////////////////////////////////////////
260 264
261 void GrGLSweepGradient::emitCode(GrGLFPBuilder* builder, 265 void GrGLSweepGradient::emitCode(GrGLFPBuilder* builder,
262 const GrFragmentProcessor& fp, 266 const GrFragmentProcessor& fp,
263 const char* outputColor, 267 const char* outputColor,
264 const char* inputColor, 268 const char* inputColor,
265 const TransformedCoordsArray& coords, 269 const TransformedCoordsArray& coords,
266 const TextureSamplerArray& samplers) { 270 const TextureSamplerArray& samplers) {
267 const GrGradientEffect& ge = fp.cast<GrGradientEffect>(); 271 const GrSweepGradient& ge = fp.cast<GrSweepGradient>();
268 this->emitUniforms(builder, ge); 272 this->emitUniforms(builder, ge);
269 SkString coords2D = builder->getFragmentShaderBuilder()->ensureFSCoords2D(co ords, 0); 273 SkString coords2D = builder->getFragmentShaderBuilder()->ensureFSCoords2D(co ords, 0);
270 const GrGLContextInfo ctxInfo = builder->ctxInfo(); 274 const GrGLContextInfo ctxInfo = builder->ctxInfo();
271 SkString t; 275 SkString t;
272 // 0.1591549430918 is 1/(2*pi), used since atan returns values [-pi, pi] 276 // 0.1591549430918 is 1/(2*pi), used since atan returns values [-pi, pi]
273 // On Intel GPU there is an issue where it reads the second arguement to ata n "- %s.x" as an int 277 // On Intel GPU there is an issue where it reads the second arguement to ata n "- %s.x" as an int
274 // thus must us -1.0 * %s.x to work correctly 278 // thus must us -1.0 * %s.x to work correctly
275 if (kIntel_GrGLVendor != ctxInfo.vendor()){ 279 if (kIntel_GrGLVendor != ctxInfo.vendor()){
276 t.printf("atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5", 280 t.printf("atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5",
277 coords2D.c_str(), coords2D.c_str()); 281 coords2D.c_str(), coords2D.c_str());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 str->appendScalar(fCenter.fX); 329 str->appendScalar(fCenter.fX);
326 str->append(", "); 330 str->append(", ");
327 str->appendScalar(fCenter.fY); 331 str->appendScalar(fCenter.fY);
328 str->append(") "); 332 str->append(") ");
329 333
330 this->INHERITED::toString(str); 334 this->INHERITED::toString(str);
331 335
332 str->append(")"); 336 str->append(")");
333 } 337 }
334 #endif 338 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkRadialGradient.cpp ('k') | src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698