OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 #include "SkColorCubeFilter.h" | 8 #include "SkColorCubeFilter.h" |
9 #include "SkColorPriv.h" | 9 #include "SkColorPriv.h" |
10 #include "SkOnce.h" | 10 #include "SkOnce.h" |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
330 const GrColorCubeEffect& colorCube = proc.cast<GrColorCubeEffect>(); | 330 const GrColorCubeEffect& colorCube = proc.cast<GrColorCubeEffect>(); |
331 SkScalar size = SkIntToScalar(colorCube.colorCubeSize()); | 331 SkScalar size = SkIntToScalar(colorCube.colorCubeSize()); |
332 pdman.set1f(fColorCubeSizeUni, SkScalarToFloat(size)); | 332 pdman.set1f(fColorCubeSizeUni, SkScalarToFloat(size)); |
333 pdman.set1f(fColorCubeInvSizeUni, SkScalarToFloat(SkScalarInvert(size))); | 333 pdman.set1f(fColorCubeInvSizeUni, SkScalarToFloat(SkScalarInvert(size))); |
334 } | 334 } |
335 | 335 |
336 void GrColorCubeEffect::GLProcessor::GenKey(const GrProcessor& proc, | 336 void GrColorCubeEffect::GLProcessor::GenKey(const GrProcessor& proc, |
337 const GrGLCaps&, GrProcessorKeyBuild er* b) { | 337 const GrGLCaps&, GrProcessorKeyBuild er* b) { |
338 } | 338 } |
339 | 339 |
340 GrFragmentProcessor* SkColorCubeFilter::asFragmentProcessor(GrContext* context) const { | 340 bool SkColorCubeFilter::asFragmentProcessors(GrContext* context, |
341 SkTDArray<GrFragmentProcessor*>* ar ray) const { | |
341 static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain(); | 342 static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain(); |
342 GrUniqueKey key; | 343 GrUniqueKey key; |
343 GrUniqueKey::Builder builder(&key, kDomain, 2); | 344 GrUniqueKey::Builder builder(&key, kDomain, 2); |
344 builder[0] = fUniqueID; | 345 builder[0] = fUniqueID; |
345 builder[1] = fCache.cubeDimension(); | 346 builder[1] = fCache.cubeDimension(); |
346 builder.finish(); | 347 builder.finish(); |
347 | 348 |
348 GrSurfaceDesc desc; | 349 GrSurfaceDesc desc; |
349 desc.fWidth = fCache.cubeDimension(); | 350 desc.fWidth = fCache.cubeDimension(); |
350 desc.fHeight = fCache.cubeDimension() * fCache.cubeDimension(); | 351 desc.fHeight = fCache.cubeDimension() * fCache.cubeDimension(); |
351 desc.fConfig = kRGBA_8888_GrPixelConfig; | 352 desc.fConfig = kRGBA_8888_GrPixelConfig; |
352 | 353 |
353 SkAutoTUnref<GrTexture> textureCube(context->findAndRefCachedTexture(key)); | 354 SkAutoTUnref<GrTexture> textureCube(context->findAndRefCachedTexture(key)); |
354 if (!textureCube) { | 355 if (!textureCube) { |
355 textureCube.reset(context->createTexture(desc, true, fCubeData->data(), 0)); | 356 textureCube.reset(context->createTexture(desc, true, fCubeData->data(), 0)); |
356 if (textureCube) { | 357 if (textureCube) { |
357 context->addResourceToCache(key, textureCube); | 358 context->addResourceToCache(key, textureCube); |
358 } | 359 } |
359 } | 360 } |
360 | 361 |
361 return textureCube ? GrColorCubeEffect::Create(textureCube) : NULL; | 362 GrFragmentProcessor* frag = textureCube ? GrColorCubeEffect::Create(textureC ube) : NULL; |
363 if (frag) { | |
364 if (array) { | |
365 *array->append() = frag; | |
366 } | |
367 return true; | |
Noel Gordon
2015/06/09 17:29:03
If array was NULL (maybe doesn't happen in practic
bsalomon
2015/06/12 15:20:36
Definitely not!
https://codereview.chromium.org/1
| |
368 } | |
369 return false; | |
362 } | 370 } |
363 #endif | 371 #endif |
OLD | NEW |