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

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

Issue 719203002: Add GrProcOptInfo class to track various output information for color and coverage stages. (Closed) Base URL: https://skia.googlesource.com/skia.git@moveIO
Patch Set: Created 6 years, 1 month 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
(Empty)
1 /*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef GrProcOptInfo_DEFINED
9 #define GrProcOptInfo_DEFINED
10
11 #include "GrColor.h"
12 #include "GrInvariantOutput.h"
13
14 class GrFragmentStage;
15 class GrGeometryProcessor;
16
17 class GrProcOptInfo {
bsalomon 2014/11/13 15:09:19 GrProcOptInfo is gathers invariant data from a set
egdaniel 2014/11/13 18:34:16 Done.
18 public:
19 GrProcOptInfo()
20 : fInOut(0, static_cast<GrColorComponentFlags>(0), false),
21 fFirstEffectStageIndex(0),
bsalomon 2014/11/13 15:09:19 style is to : fPut() , fThe() , fCommas() , fUnd
egdaniel 2014/11/13 18:34:16 Ahh I understand my error, just like TheColon I sh
22 fInputColorIsUsed(true),
23 fInputColor(0),
24 fRemoveVertexAttrib(false),
25 fReadsDst(false) {}
26
27 void calcWithInitialValues(const GrFragmentStage*, int stageCount, GrColor s tartColor,
28 GrColorComponentFlags flags, bool areCoverageStag es,
29 const GrGeometryProcessor* gp = NULL);
30
31 bool isSolidWhite() const { return fInOut.isSolidWhite(); }
32 bool isOpaque() const { return fInOut.isOpaque(); }
33
34 GrColor color() const { return fInOut.color(); }
35 uint8_t validFlags() const { return fInOut.validFlags(); }
36
37 /**
38 * Returns the index of the first effective color stage. If an intermediate stage doesn't read
39 * its input or has a known output, then we can ignore all earlier stages si nce they will not
40 * affect the final output. Thus the first effective stage index is the inde x to the first stage
41 * that will have an effect on the final output.
42 *
43 * If the firstEffectiveStageIndex is used, corresponding values from inputC olorIsUsed(),
bsalomon 2014/11/13 15:09:19 "If stages before the first effective stage are re
egdaniel 2014/11/13 18:34:16 Done.
44 * inputColorToEffectiveStage(), removeVertexAttribs(), and readsDst() must be used when setting
45 * up the draw to ensure correct drawing.
46 */
47 int firstEffectiveStageIndex() const { return fFirstEffectStageIndex; }
48
49 /**
50 * This value returns whether or not an input will be read by the starting s tage. The starting
bsalomon 2014/11/13 15:09:19 Maybe simplify to "True if the first effective sta
egdaniel 2014/11/13 18:34:16 Done.
51 * stage is assumed to be that which is indexed by firstEffectiveStageIndex( ).
52 */
53 bool inputColorIsUsed() const { return fInputColorIsUsed; }
54
55 /**
56 * This returns the color that should be inputed into the starting stage. Th is value is only
bsalomon 2014/11/13 15:09:19 "If input color is used and per-vertex colors are
egdaniel 2014/11/13 18:34:16 Done.
57 * valid if inputColorIsUsed is true and we are not using vertex attribs for color/coverage
58 * input. The starting stage is assumed to be that which is indexed by
59 * firstEffectiveStageIndex().
60 */
61 GrColor inputColorToEffectiveStage() const { return fInputColor; }
62
63 /**
64 * Returns whether or not the client should remove corresponding color/cover age vertex attribs
65 * for the given set of stages. If we remove stages because of a known outpu t at some
66 * intermediate stage, then we want to feed that known output into the start of its following
67 * stage. Thus we want to make sure we don't use color/coverage vertex attri bs for this reduced
68 * set of stages.
69 */
bsalomon 2014/11/13 15:09:19 "Given the set of optimizations determined by GrPr
egdaniel 2014/11/13 18:34:16 Done.
70 bool removeVertexAttrib() const { return fRemoveVertexAttrib; }
71
72 /**
73 * Returns whether or not any of the stages, begining with start stage, will read the dst. The
74 * start stage is determined by firstEffectiveStageIndex()
75 */
76 bool readsDst() const { return fReadsDst; }
bsalomon 2014/11/13 15:09:19 "Returns true if any of the stages preserved by Gr
egdaniel 2014/11/13 18:34:16 Done.
77
78 private:
79 GrInvariantOutput fInOut;
80 int fFirstEffectStageIndex;
81 bool fInputColorIsUsed;
82 GrColor fInputColor;
83 bool fRemoveVertexAttrib;
84 bool fReadsDst;
85 };
86
87 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrPaint.cpp ('k') | src/gpu/GrProcOptInfo.cpp » ('j') | src/gpu/GrProcOptInfo.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698