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

Side by Side Diff: src/gpu/GrSWMaskHelper.cpp

Issue 1148793007: change SkDraw and all Blitters to use pixmap instead of bitmap (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 5 years, 6 months 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 2012 Google Inc. 2 * Copyright 2012 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 "GrSWMaskHelper.h" 8 #include "GrSWMaskHelper.h"
9 9
10 #include "GrPipelineBuilder.h" 10 #include "GrPipelineBuilder.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 int cmpSz = SkTextureCompressor::GetCompressedDataSize( 195 int cmpSz = SkTextureCompressor::GetCompressedDataSize(
196 fCompressedFormat, cmpWidth, cmpHeight); 196 fCompressedFormat, cmpWidth, cmpHeight);
197 197
198 SkASSERT(cmpSz > 0); 198 SkASSERT(cmpSz > 0);
199 SkASSERT(NULL == fCompressedBuffer.get()); 199 SkASSERT(NULL == fCompressedBuffer.get());
200 fCompressedBuffer.reset(cmpSz); 200 fCompressedBuffer.reset(cmpSz);
201 fCompressionMode = kBlitter_CompressionMode; 201 fCompressionMode = kBlitter_CompressionMode;
202 } 202 }
203 } 203 }
204 204
205 sk_bzero(&fDraw, sizeof(fDraw));
206
205 // If we don't have a custom blitter, then we either need a bitmap to compre ss 207 // If we don't have a custom blitter, then we either need a bitmap to compre ss
206 // from or a bitmap that we're going to use as a texture. In any case, we sh ould 208 // from or a bitmap that we're going to use as a texture. In any case, we sh ould
207 // allocate the pixels for a bitmap 209 // allocate the pixels for a bitmap
208 const SkImageInfo bmImageInfo = SkImageInfo::MakeA8(cmpWidth, cmpHeight); 210 const SkImageInfo bmImageInfo = SkImageInfo::MakeA8(cmpWidth, cmpHeight);
209 if (kBlitter_CompressionMode != fCompressionMode) { 211 if (kBlitter_CompressionMode != fCompressionMode) {
210 if (!fBM.tryAllocPixels(bmImageInfo)) { 212 if (!fBM.tryAllocPixels(bmImageInfo)) {
211 return false; 213 return false;
212 } 214 }
213
214 sk_bzero(fBM.getPixels(), fBM.getSafeSize()); 215 sk_bzero(fBM.getPixels(), fBM.getSafeSize());
jvanverth1 2015/06/08 13:21:10 Add a comment explaining why we're peeking at the
reed1 2015/06/08 17:00:22 removed fBM
216 if (!fBM.peekPixels(&fDraw.fDst)) {
217 return false;
218 }
215 } else { 219 } else {
216 // Otherwise, we just need to remember how big the buffer is... 220 // Otherwise, we just need to remember how big the buffer is...
217 fBM.setInfo(bmImageInfo); 221 fBM.setInfo(bmImageInfo);
222 fDraw.fDst.reset(bmImageInfo);
218 } 223 }
219
220 sk_bzero(&fDraw, sizeof(fDraw));
221
222 fRasterClip.setRect(bounds); 224 fRasterClip.setRect(bounds);
223 fDraw.fRC = &fRasterClip; 225 fDraw.fRC = &fRasterClip;
224 fDraw.fClip = &fRasterClip.bwRgn(); 226 fDraw.fClip = &fRasterClip.bwRgn();
225 fDraw.fMatrix = &fMatrix; 227 fDraw.fMatrix = &fMatrix;
226 fDraw.fBitmap = &fBM;
227 return true; 228 return true;
228 } 229 }
229 230
230 /** 231 /**
231 * Get a texture (from the texture cache) of the correct size & format. 232 * Get a texture (from the texture cache) of the correct size & format.
232 */ 233 */
233 GrTexture* GrSWMaskHelper::createTexture() { 234 GrTexture* GrSWMaskHelper::createTexture() {
234 GrSurfaceDesc desc; 235 GrSurfaceDesc desc;
235 desc.fWidth = fBM.width(); 236 desc.fWidth = fBM.width();
236 desc.fHeight = fBM.height(); 237 desc.fHeight = fBM.height();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 maskMatrix.preTranslate(SkIntToScalar(-rect.fLeft), SkIntToScalar(-rect.fTop )); 373 maskMatrix.preTranslate(SkIntToScalar(-rect.fLeft), SkIntToScalar(-rect.fTop ));
373 374
374 pipelineBuilder->addCoverageProcessor( 375 pipelineBuilder->addCoverageProcessor(
375 GrSimpleTextureEffect::Create(texture, 376 GrSimpleTextureEffect::Create(texture,
376 maskMatrix, 377 maskMatrix,
377 GrTextureParams::kNone_Fi lterMode, 378 GrTextureParams::kNone_Fi lterMode,
378 kDevice_GrCoordSet))->unr ef(); 379 kDevice_GrCoordSet))->unr ef();
379 380
380 target->drawBWRect(pipelineBuilder, color, SkMatrix::I(), dstRect, NULL, &in vert); 381 target->drawBWRect(pipelineBuilder, color, SkMatrix::I(), dstRect, NULL, &in vert);
381 } 382 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698