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

Side by Side Diff: src/gpu/GrOptDrawState.h

Issue 634073002: Delay copying effects from DS or ODS till end of creating ODS (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix line length Created 6 years, 2 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
« no previous file with comments | « no previous file | src/gpu/GrOptDrawState.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef GrOptDrawState_DEFINED 8 #ifndef GrOptDrawState_DEFINED
9 #define GrOptDrawState_DEFINED 9 #define GrOptDrawState_DEFINED
10 10
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 const GrDrawTargetCaps& caps); 372 const GrDrawTargetCaps& caps);
373 373
374 /** 374 /**
375 * Loops through all the color stage effects to check if the stage will igno re color input or 375 * Loops through all the color stage effects to check if the stage will igno re color input or
376 * always output a constant color. In the ignore color input case we can ign ore all previous 376 * always output a constant color. In the ignore color input case we can ign ore all previous
377 * stages. In the constant color case, we can ignore all previous stages and 377 * stages. In the constant color case, we can ignore all previous stages and
378 * the current one and set the state color to the constant color. Once we de termine the so 378 * the current one and set the state color to the constant color. Once we de termine the so
379 * called first effective stage, we copy all the effective stages into our o ptimized 379 * called first effective stage, we copy all the effective stages into our o ptimized
380 * state. 380 * state.
381 */ 381 */
382 void copyEffectiveColorStages(const GrDrawState& ds); 382 void computeEffectiveColorStages(const GrDrawState& ds);
383 383
384 /** 384 /**
385 * Loops through all the coverage stage effects to check if the stage will i gnore color input. 385 * Loops through all the coverage stage effects to check if the stage will i gnore color input.
386 * If a coverage stage will ignore input, then we can ignore all coverage st ages before it. We 386 * If a coverage stage will ignore input, then we can ignore all coverage st ages before it. We
387 * loop to determine the first effective coverage stage, and then copy all o f our effective 387 * loop to determine the first effective coverage stage, and then copy all o f our effective
388 * coverage stages into our optimized state. 388 * coverage stages into our optimized state.
389 */ 389 */
390 void copyEffectiveCoverageStages(const GrDrawState& ds); 390 void computeEffectiveCoverageStages(const GrDrawState& ds);
391 391
392 /** 392 /**
393 * This function takes in a flag and removes the corresponding fixed functio n vertex attributes. 393 * This function reads in the fFixedFunctionVAToRemove flag and removes the corresponding fixed
394 * The flags are in the same order as GrVertexAttribBinding array. If bit i of removeVAFlags is 394 * function vertex attributes. The flags are in the same order as GrVertexAt tribBinding array.
395 * set, then vertex attributes with binding (GrVertexAttribute)i will be rem oved. 395 * If bit i of fFixedFunctionVAToRemove is set, then vertex attributes with binding
396 * (GrVertexAttribute)i will be removed.
396 */ 397 */
397 void removeFixedFunctionVertexAttribs(uint8_t removeVAFlags); 398 void removeFixedFunctionVertexAttribs();
398 399
399 /** 400 /**
400 * Alter the OptDrawState (adjusting stages, vertex attribs, flags, etc.) ba sed on the 401 * Alter the OptDrawState (adjusting stages, vertex attribs, flags, etc.) ba sed on the
401 * BlendOptFlags. 402 * BlendOptFlags.
402 */ 403 */
403 void adjustFromBlendOpts(); 404 void adjustFromBlendOpts(const GrDrawState& ds);
404 405
405 /** 406 /**
406 * Loop over the effect stages to determine various info like what data they will read and what 407 * Loop over the effect stages to determine various info like what data they will read and what
407 * shaders they require. 408 * shaders they require.
408 */ 409 */
409 void getStageStats(); 410 void getStageStats(const GrDrawState& ds);
410 411
411 /** 412 /**
412 * Calculates the primary and secondary output types of the shader. For cert ain output types 413 * Calculates the primary and secondary output types of the shader. For cert ain output types
413 * the function may adjust the blend coefficients. After this function is ca lled the src and dst 414 * the function may adjust the blend coefficients. After this function is ca lled the src and dst
414 * blend coeffs will represent those used by backend API. 415 * blend coeffs will represent those used by backend API.
415 */ 416 */
416 void setOutputStateInfo(const GrDrawTargetCaps&); 417 void setOutputStateInfo(const GrDrawState& ds, const GrDrawTargetCaps&);
417 418
418 bool isEqual(const GrOptDrawState& that) const; 419 bool isEqual(const GrOptDrawState& that) const;
419 420
420 // These fields are roughly sorted by decreasing likelihood of being differe nt in op== 421 // These fields are roughly sorted by decreasing likelihood of being differe nt in op==
421 typedef GrTGpuResourceRef<GrRenderTarget> ProgramRenderTarget; 422 typedef GrTGpuResourceRef<GrRenderTarget> ProgramRenderTarget;
422 ProgramRenderTarget fRenderTarget; 423 ProgramRenderTarget fRenderTarget;
423 GrColor fColor; 424 GrColor fColor;
424 SkMatrix fViewMatrix; 425 SkMatrix fViewMatrix;
425 GrColor fBlendConstant; 426 GrColor fBlendConstant;
426 uint32_t fFlagBits; 427 uint32_t fFlagBits;
427 const GrVertexAttrib* fVAPtr; 428 const GrVertexAttrib* fVAPtr;
428 int fVACount; 429 int fVACount;
429 size_t fVAStride; 430 size_t fVAStride;
430 GrStencilSettings fStencilSettings; 431 GrStencilSettings fStencilSettings;
431 uint8_t fCoverage; 432 uint8_t fCoverage;
432 DrawFace fDrawFace; 433 DrawFace fDrawFace;
433 GrBlendCoeff fSrcBlend; 434 GrBlendCoeff fSrcBlend;
434 GrBlendCoeff fDstBlend; 435 GrBlendCoeff fDstBlend;
435 436
436 typedef SkSTArray<4, GrFragmentStage> FragmentStageArray; 437 typedef SkSTArray<8, GrFragmentStage> FragmentStageArray;
437 SkAutoTDelete<GrGeometryStage> fGeometryProcessor; 438 SkAutoTDelete<GrGeometryStage> fGeometryProcessor;
438 FragmentStageArray fColorStages; 439 FragmentStageArray fColorStages;
439 FragmentStageArray fCoverageStages; 440 FragmentStageArray fCoverageStages;
440 441
442 // Used when creating an OptDrawState from a DrawState to keep track of whic h stages to copy
bsalomon 2014/10/07 20:20:42 Do these really belong as members? Seems like they
egdaniel 2014/10/07 21:10:06 Done.
443 // from the DS to the ODS.
444 int fFirstColorStageIdx;
445 int fFirstCoverageStageIdx;
446 bool fSeparateCoverageFromColor;
447
448 uint8_t fFixedFunctionVAToRemove;
449
441 // This is simply a different representation of info in fVertexAttribs and t hus does 450 // This is simply a different representation of info in fVertexAttribs and t hus does
442 // not need to be compared in op==. 451 // not need to be compared in op==.
443 int fFixedFunctionVertexAttribIndices[kGrFixedFunctionVertexAttribBindingCnt ]; 452 int fFixedFunctionVertexAttribIndices[kGrFixedFunctionVertexAttribBindingCnt ];
444 453
445 // These flags are needed to protect the code from creating an unused unifor m color/coverage 454 // These flags are needed to protect the code from creating an unused unifor m color/coverage
446 // which will cause shader compiler errors. 455 // which will cause shader compiler errors.
447 bool fInputColorIsUsed; 456 bool fInputColorIsUsed;
448 bool fInputCoverageIsUsed; 457 bool fInputCoverageIsUsed;
449 458
450 // These flags give aggregated info on the effect stages that are used when building programs. 459 // These flags give aggregated info on the effect stages that are used when building programs.
451 bool fReadsDst; 460 bool fReadsDst;
452 bool fReadsFragPosition; 461 bool fReadsFragPosition;
453 bool fRequiresLocalCoordAttrib; 462 bool fRequiresLocalCoordAttrib;
454 463
455 SkAutoSTArray<4, GrVertexAttrib> fOptVA; 464 SkAutoSTArray<4, GrVertexAttrib> fOptVA;
456 465
457 BlendOptFlags fBlendOptFlags; 466 BlendOptFlags fBlendOptFlags;
458 467
459 // Fragment shader color outputs 468 // Fragment shader color outputs
460 PrimaryOutputType fPrimaryOutputType : 8; 469 PrimaryOutputType fPrimaryOutputType : 8;
461 SecondaryOutputType fSecondaryOutputType : 8; 470 SecondaryOutputType fSecondaryOutputType : 8;
462 471
463 typedef SkRefCnt INHERITED; 472 typedef SkRefCnt INHERITED;
464 }; 473 };
465 474
466 GR_MAKE_BITFIELD_OPS(GrOptDrawState::BlendOptFlags); 475 GR_MAKE_BITFIELD_OPS(GrOptDrawState::BlendOptFlags);
467 476
468 #endif 477 #endif
469 478
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrOptDrawState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698