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

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

Issue 13121002: Make GrGLShaderBuilder::TextureSampler extract only required info from GrTextureAccess. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
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 "GrDrawState.h" 8 #include "GrDrawState.h"
9 #include "GrPaint.h" 9 #include "GrPaint.h"
10 10
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 229
230 bool GrDrawState::srcAlphaWillBeOne(GrAttribBindings bindings) const { 230 bool GrDrawState::srcAlphaWillBeOne(GrAttribBindings bindings) const {
231 231
232 uint32_t validComponentFlags; 232 uint32_t validComponentFlags;
233 GrColor color; 233 GrColor color;
234 // Check if per-vertex or constant color may have partial alpha 234 // Check if per-vertex or constant color may have partial alpha
235 if (bindings & kColor_AttribBindingsBit) { 235 if (bindings & kColor_AttribBindingsBit) {
236 validComponentFlags = 0; 236 validComponentFlags = 0;
237 color = 0; // not strictly necessary but we get false alarms from tools about uninit. 237 color = 0; // not strictly necessary but we get false alarms from tools about uninit.
238 } else { 238 } else {
239 validComponentFlags = GrEffect::kAll_ValidComponentFlags; 239 validComponentFlags = kRGBA_GrColorComponentFlags;
240 color = this->getColor(); 240 color = this->getColor();
241 } 241 }
242 242
243 // Run through the color stages 243 // Run through the color stages
244 int stageCnt = getFirstCoverageStage(); 244 int stageCnt = getFirstCoverageStage();
245 for (int s = 0; s < stageCnt; ++s) { 245 for (int s = 0; s < stageCnt; ++s) {
246 const GrEffectRef* effect = this->getStage(s).getEffect(); 246 const GrEffectRef* effect = this->getStage(s).getEffect();
247 if (NULL != effect) { 247 if (NULL != effect) {
248 (*effect)->getConstantColorComponents(&color, &validComponentFlags); 248 (*effect)->getConstantColorComponents(&color, &validComponentFlags);
249 } 249 }
(...skipping 18 matching lines...) Expand all
268 color |= (SkMulDiv255Round(a, b) << (c * 8)); 268 color |= (SkMulDiv255Round(a, b) << (c * 8));
269 } 269 }
270 } 270 }
271 for (int s = this->getFirstCoverageStage(); s < GrDrawState::kNumStages; ++s) { 271 for (int s = this->getFirstCoverageStage(); s < GrDrawState::kNumStages; ++s) {
272 const GrEffectRef* effect = this->getStage(s).getEffect(); 272 const GrEffectRef* effect = this->getStage(s).getEffect();
273 if (NULL != effect) { 273 if (NULL != effect) {
274 (*effect)->getConstantColorComponents(&color, &validComponentFla gs); 274 (*effect)->getConstantColorComponents(&color, &validComponentFla gs);
275 } 275 }
276 } 276 }
277 } 277 }
278 return (GrEffect::kA_ValidComponentFlag & validComponentFlags) && 0xff == Gr ColorUnpackA(color); 278 return (kA_GrColorComponentFlag & validComponentFlags) && 0xff == GrColorUnp ackA(color);
279 } 279 }
280 280
281 bool GrDrawState::hasSolidCoverage(GrAttribBindings bindings) const { 281 bool GrDrawState::hasSolidCoverage(GrAttribBindings bindings) const {
282 // If we're drawing coverage directly then coverage is effectively treated a s color. 282 // If we're drawing coverage directly then coverage is effectively treated a s color.
283 if (this->isCoverageDrawing()) { 283 if (this->isCoverageDrawing()) {
284 return true; 284 return true;
285 } 285 }
286 286
287 GrColor coverage; 287 GrColor coverage;
288 uint32_t validComponentFlags; 288 uint32_t validComponentFlags;
289 // Initialize to an unknown starting coverage if per-vertex coverage is spec ified. 289 // Initialize to an unknown starting coverage if per-vertex coverage is spec ified.
290 if (bindings & kCoverage_AttribBindingsBit) { 290 if (bindings & kCoverage_AttribBindingsBit) {
291 validComponentFlags = 0; 291 validComponentFlags = 0;
292 } else { 292 } else {
293 coverage = fCommon.fCoverage; 293 coverage = fCommon.fCoverage;
294 validComponentFlags = GrEffect::kAll_ValidComponentFlags; 294 validComponentFlags = kRGBA_GrColorComponentFlags;
295 } 295 }
296 296
297 // Run through the coverage stages and see if the coverage will be all ones at the end. 297 // Run through the coverage stages and see if the coverage will be all ones at the end.
298 for (int s = this->getFirstCoverageStage(); s < GrDrawState::kNumStages; ++s ) { 298 for (int s = this->getFirstCoverageStage(); s < GrDrawState::kNumStages; ++s ) {
299 const GrEffectRef* effect = this->getStage(s).getEffect(); 299 const GrEffectRef* effect = this->getStage(s).getEffect();
300 if (NULL != effect) { 300 if (NULL != effect) {
301 (*effect)->getConstantColorComponents(&coverage, &validComponentFlag s); 301 (*effect)->getConstantColorComponents(&coverage, &validComponentFlag s);
302 } 302 }
303 } 303 }
304 return (GrEffect::kAll_ValidComponentFlags == validComponentFlags) && (0xff ffffff == coverage); 304 return (kRGBA_GrColorComponentFlags == validComponentFlags) && (0xffffffff == coverage);
305 } 305 }
306 306
307 //////////////////////////////////////////////////////////////////////////////// 307 ////////////////////////////////////////////////////////////////////////////////
308 308
309 // Some blend modes allow folding a fractional coverage value into the color's a lpha channel, while 309 // Some blend modes allow folding a fractional coverage value into the color's a lpha channel, while
310 // others will blend incorrectly. 310 // others will blend incorrectly.
311 bool GrDrawState::canTweakAlphaForCoverage() const { 311 bool GrDrawState::canTweakAlphaForCoverage() const {
312 /* 312 /*
313 The fractional coverage is f. 313 The fractional coverage is f.
314 The src and dst coeffs are Cs and Cd. 314 The src and dst coeffs are Cs and Cd.
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 } 505 }
506 fRestoreMask |= (1 << s); 506 fRestoreMask |= (1 << s);
507 GrEffectStage* stage = drawState->fStages + s; 507 GrEffectStage* stage = drawState->fStages + s;
508 stage->saveCoordChange(&fSavedCoordChanges[s]); 508 stage->saveCoordChange(&fSavedCoordChanges[s]);
509 stage->localCoordChange(invVM); 509 stage->localCoordChange(invVM);
510 } 510 }
511 } 511 }
512 drawState->viewMatrix()->reset(); 512 drawState->viewMatrix()->reset();
513 return true; 513 return true;
514 } 514 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698