| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2010 Google Inc. | 2 * Copyright 2010 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 "SkGr.h" | 8 #include "SkGr.h" |
| 9 | 9 |
| 10 #include "GrXferProcessor.h" | 10 #include "GrXferProcessor.h" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 SkASSERT(pixelRef); | 172 SkASSERT(pixelRef); |
| 173 pixelRef->addGenIDChangeListener(SkNEW_ARGS(GrResourceInvalidator, (key))); | 173 pixelRef->addGenIDChangeListener(SkNEW_ARGS(GrResourceInvalidator, (key))); |
| 174 } | 174 } |
| 175 #endif | 175 #endif |
| 176 | 176 |
| 177 static GrTexture* create_texture_for_bmp(GrContext* ctx, | 177 static GrTexture* create_texture_for_bmp(GrContext* ctx, |
| 178 const GrContentKey& optionalKey, | 178 const GrContentKey& optionalKey, |
| 179 GrSurfaceDesc desc, | 179 GrSurfaceDesc desc, |
| 180 const void* pixels, | 180 const void* pixels, |
| 181 size_t rowBytes) { | 181 size_t rowBytes) { |
| 182 GrTexture* result; | 182 GrTexture* result = ctx->createTexture(desc, true, pixels, rowBytes); |
| 183 if (optionalKey.isValid() || GrPixelConfigIsCompressed(desc.fConfig)) { | 183 if (result && optionalKey.isValid()) { |
| 184 result = ctx->createTexture(desc, pixels, rowBytes); | 184 SkAssertResult(ctx->addResourceToCache(optionalKey, result)); |
| 185 if (result) { | |
| 186 SkAssertResult(ctx->addResourceToCache(optionalKey, result)); | |
| 187 } | |
| 188 } else { | |
| 189 result = ctx->refScratchTexture(desc, GrContext::kExact_ScratchTexMatch)
; | |
| 190 if (pixels && result) { | |
| 191 result->writePixels(0, 0, desc.fWidth, desc.fHeight, desc.fConfig, p
ixels, rowBytes); | |
| 192 } | |
| 193 } | 185 } |
| 194 return result; | 186 return result; |
| 195 } | 187 } |
| 196 | 188 |
| 197 // creates a new texture that is the input texture scaled up to the next power o
f two in | 189 // creates a new texture that is the input texture scaled up to the next power o
f two in |
| 198 // width or height. If optionalKey is valid it will be set on the new texture. s
tretch | 190 // width or height. If optionalKey is valid it will be set on the new texture. s
tretch |
| 199 // controls whether the scaling is done using nearest or bilerp filtering. | 191 // controls whether the scaling is done using nearest or bilerp filtering. |
| 200 GrTexture* resize_texture(GrTexture* inputTexture, Stretch stretch, | 192 GrTexture* resize_texture(GrTexture* inputTexture, Stretch stretch, |
| 201 const GrContentKey& optionalKey) { | 193 const GrContentKey& optionalKey) { |
| 202 SkASSERT(kNo_Stretch != stretch); | 194 SkASSERT(kNo_Stretch != stretch); |
| (...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 if (shader->asFragmentProcessor(context, skPaint, viewM, NULL, &paintCol
or, &fp) && fp) { | 720 if (shader->asFragmentProcessor(context, skPaint, viewM, NULL, &paintCol
or, &fp) && fp) { |
| 729 grPaint->addColorProcessor(fp)->unref(); | 721 grPaint->addColorProcessor(fp)->unref(); |
| 730 constantColor = false; | 722 constantColor = false; |
| 731 } | 723 } |
| 732 } | 724 } |
| 733 | 725 |
| 734 // The grcolor is automatically set when calling asFragmentProcessor. | 726 // The grcolor is automatically set when calling asFragmentProcessor. |
| 735 // If the shader can be seen as an effect it returns true and adds its effec
t to the grpaint. | 727 // If the shader can be seen as an effect it returns true and adds its effec
t to the grpaint. |
| 736 SkPaint2GrPaintNoShader(context, skPaint, paintColor, constantColor, grPaint
); | 728 SkPaint2GrPaintNoShader(context, skPaint, paintColor, constantColor, grPaint
); |
| 737 } | 729 } |
| OLD | NEW |