aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrDrawState.h
Commit message (Collapse)AuthorAge
* Split GrDrawState and GrOptDrawState into separate classes and remove base ↵Gravatar egdaniel2014-09-26
| | | | | | | | | | | | | class. Besides splitting the two classes, there are no logical changes here and mostly moving code around. BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/597323002
* Patch to create a distinct geometry processor. The vast majority of this patchGravatar joshualitt2014-09-23
| | | | | | | | | | | | | is just a rename. The meat is in GrGeometryProcessor, GrProcessor, GrGL*Processor, GrProcessorStage, Gr*BackendProcessorFactory, GrProcessUnitTestFactory, and the builders BUG=skia: R=bsalomon@google.com Author: joshualitt@chromium.org Review URL: https://codereview.chromium.org/582963002
* Calculate Primary and Secondary output types in the GrOptDrawStateGravatar egdaniel2014-09-22
| | | | | | | | | | | Follow up CL to https://codereview.chromium.org/545693004/ BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/554833002
* Move IOType to GrGpuRef and rename that to GrIORef. Template GrPendingIORef ↵Gravatar bsalomon2014-09-19
| | | | | | | | | | | on IOType. BUG=skia:2889 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/579403003
* Rename GrProgramResource to GrGpuResourceRefGravatar bsalomon2014-09-17
| | | | | | | | | BUG=skia:2889 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/574333003
* Make templated GrProgramTResource subclass of GrProgramResourceGravatar bsalomon2014-09-16
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/563963004
* Attach GrOptDrawState into shader building pipelineGravatar egdaniel2014-09-16
| | | | | | | | | | | | | | | | | The OptDrawState is now used for creating the actual gl shader. Current optimizations dones in GrOptDrawState include: All blend optimizations Constant color/coverage stage optimizations BUG=skia: Committed: https://skia.googlesource.com/skia/+/ee6206572b42fec11f83ad0c1e6d435903640518 R=bsalomon@google.com, joshualitt@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/504203004
* Revert of Attach GrOptDrawState into shader building pipeline (patchset #11 ↵Gravatar egdaniel2014-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:220001 of https://codereview.chromium.org/504203004/) Reason for revert: Failing some msaa gm's Original issue's description: > Attach GrOptDrawState into shader building pipeline > > The OptDrawState is now used for creating the actual gl shader. Current > optimizations dones in GrOptDrawState include: > All blend optimizations > Constant color/coverage stage optimizations > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/ee6206572b42fec11f83ad0c1e6d435903640518 R=bsalomon@google.com, joshualitt@google.com TBR=bsalomon@google.com, joshualitt@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Author: egdaniel@google.com Review URL: https://codereview.chromium.org/560443004
* Attach GrOptDrawState into shader building pipelineGravatar egdaniel2014-09-16
| | | | | | | | | | | | | | The OptDrawState is now used for creating the actual gl shader. Current optimizations dones in GrOptDrawState include: All blend optimizations Constant color/coverage stage optimizations BUG=skia: R=bsalomon@google.com, joshualitt@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/504203004
* BUG=skia:Gravatar joshualitt2014-09-15
| | | | | | | | R=bsalomon@google.com, egdaniel@google.com, jvanverth@google.com, robertphillips@google.com Author: joshualitt@chromium.org Review URL: https://codereview.chromium.org/543623004
* Create an optimized draw state but not hooked in yet to gpu pipelineGravatar egdaniel2014-09-15
| | | | | | | | | BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/508663002
* Make GrDrawState and GrEffectStage use the pending io/exec ref mechanisms.Gravatar bsalomon2014-09-05
| | | | | | | | | BUG=skia:2889 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/542723004
* "NULL !=" = NULLGravatar bsalomon2014-09-05
| | | | | | | | R=reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/544233002
* Don't take a ref on GP in AutoEffectRestore.Gravatar bsalomon2014-09-05
| | | | | | | | | BUG=skia:2889 R=joshualitt@chromium.org, robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/546043002
* Change behavior of GrDS::AutoEffectRestort wrt GPs.Gravatar bsalomon2014-09-05
| | | | | | | | | BUG=skia:2889 R=robertphillips@google.com, joshualitt@chromium.org Author: bsalomon@google.com Review URL: https://codereview.chromium.org/545253002
* Initial change to create GeometryProcessorGravatar joshualitt2014-09-04
| | | | | | | | | BUG=skia: R=bsalomon@google.com, robertphillips@google.com, egdaniel@google.com, jvanverth@google.com Author: joshualitt@chromium.org Review URL: https://codereview.chromium.org/509153002
* Remove GrDrawTarget::AutoRenderTargetRestore.Gravatar bsalomon2014-09-03
| | | | | | | | | | | Pass GrRenderTarget in GrGpuG clear\bind methods. BUG=skia:2889 R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/533883004
* Make setVertexAttribs in GrDrawState take a stride parameter.Gravatar egdaniel2014-08-28
| | | | | | | | | | | | BUG=skia: Committed: https://skia.googlesource.com/skia/+/af013bf8afc4c77ab8ff230f536e2ade973427fa R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/511593004
* Revert of Make setVertexAttribs in GrDrawState take a stride parameter. ↵Gravatar djsollen2014-08-27
| | | | | | | | | | | | | | | | | | | | | | | | (patchset #5 of https://codereview.chromium.org/511593004/) Reason for revert: GM failures on http://108.170.220.120:10115/builders/Test-Ubuntu12-ShuttleA-GTX660-x86-Release/builds/1867/ Original issue's description: > Make setVertexAttribs in GrDrawState take a stride parameter. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/af013bf8afc4c77ab8ff230f536e2ade973427fa R=bsalomon@google.com, egdaniel@google.com TBR=bsalomon@google.com, egdaniel@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Author: djsollen@google.com Review URL: https://codereview.chromium.org/502533004
* Make setVertexAttribs in GrDrawState take a stride parameter.Gravatar egdaniel2014-08-27
| | | | | | | | | BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/511593004
* Create Read-only Base class for GrDrawState that holds data members and gettersGravatar egdaniel2014-08-26
| | | | | | | | | | | Base class will but used also in follow up cl that will create an OptDrawState class which will share much of the same data/functions as DrawState. Thus the base class BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/506803003
* Store vertex size in DrawState when setVertexAttribs is calledGravatar egdaniel2014-08-22
| | | | | | | | | | | | This will avoid recalculating vertex size throughout code, and will allow for a set original vertex size once optimizations start removing VA's BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/498483002
* Remove State struct from GrDrawStateGravatar egdaniel2014-08-21
| | | | | | | | | BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/464363002
* Always use both a color and coverage attribute in GrAARectRenderer.Gravatar bsalomon2014-08-11
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/435743002
* Add an opaqueness hint to GrDrawState.Gravatar bsalomon2014-08-08
| | | | | | | | | | Check it when deciding whether to combine draw states. R=egdaniel@google.com, robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/446953002
* Create struct in GrDrawState to hold key DrawState data.Gravatar egdaniel2014-08-06
| | | | | | | | | | | Eventually this struct will be used to easily set values for a reduced, optimized drawstate BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/448453002
* Move functions from GrDrawState.h to GrDrawState.cpp and delete unused ↵Gravatar bsalomon2014-08-05
| | | | | | | | | | functions. R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/427713005
* Don't compare constant color and coverage between GrDrawStates when they are ↵Gravatar bsalomon2014-08-05
| | | | | | | | | | provided by vertex attributes. R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/439273007
* Replace op== with CombineIfPossible in GrDrawState.Gravatar bsalomon2014-08-05
| | | | | | | | R=egdaniel@google.com, robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/439853002
* Don't compare coord change matrices to determine effect compatibility when ↵Gravatar bsalomon2014-08-04
| | | | | | | | | | using explicit local coords. R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/438053002
* Remove kDisableBlend_BlendOptFlag as it is no longer neededGravatar egdaniel2014-07-30
| | | | | | | | | BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/425153003
* Revert of Remove gpu support for willUseHWAALines. ↵Gravatar egdaniel2014-07-29
| | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/423943003/) Reason for revert: Breaking windows 7 compare gm's Original issue's description: > Remove gpu support for willUseHWAALines. > > By removing willUseHWAALines, we also no long reference the blend opt flag kDisableBlend so it has been removed > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/e6dfba868c19b00562f8c733b9bf37dd4ec9e68c R=bsalomon@google.com TBR=bsalomon@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Author: egdaniel@google.com Review URL: https://codereview.chromium.org/430493003
* Remove gpu support for willUseHWAALines.Gravatar egdaniel2014-07-29
| | | | | | | | | | | By removing willUseHWAALines, we also no long reference the blend opt flag kDisableBlend so it has been removed BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/423943003
* Remove gpu shader optimatization for solid white or trans black colorsGravatar egdaniel2014-07-21
| | | | | | | | | | | | | | | | | | | | | | | | | | Running test on the added bench which draws a grid of all white paths, all blue paths, or alternating checkered white/blue paths. With optimization in (ms): White Blue Checkered Linux ~80 ~80 ~160 N7 ~800 ~1100 ~1500 Moto-e ~830 ~1100 ~2500 Without optimization in (ms): White Blue Checkered Linux ~80 ~80 ~80 N7 ~1100 ~1100 ~1100 Moto-e ~1100 ~1100 ~1500 BUG=skia: Committed: https://skia.googlesource.com/skia/+/5f78d2251a440443c9eaa321dad058d7a32bfef7 R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/375823005
* Cache the return values of getBlendOpts in GrDrawStateGravatar egdaniel2014-07-18
| | | | | | | | | BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/404473007
* Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*.Gravatar bsalomon2014-07-08
| | | | | | | | | | | | | | Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef* Make GrEffectRef a typedef for GrEffect. Committed: https://skia.googlesource.com/skia/+/2011fe9cdfa63b83489a146cea6a724cede352c8 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/377503004
* Revert of Make GrDrawState and GrPaint take GrEffect* instead of ↵Gravatar reed2014-07-07
| | | | | | | | | | | | | | | | | | | | | | | | | GrEffectRef*. (https://codereview.chromium.org/377503004/) Reason for revert: broke linux builders Original issue's description: > Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*. > > Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef* > > Make GrEffectRef a typedef for GrEffect. > > Committed: https://skia.googlesource.com/skia/+/2011fe9cdfa63b83489a146cea6a724cede352c8 R=robertphillips@google.com, bsalomon@google.com TBR=bsalomon@google.com, robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: reed@google.com Review URL: https://codereview.chromium.org/372053003
* Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*.Gravatar bsalomon2014-07-07
| | | | | | | | | | | | Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef* Make GrEffectRef a typedef for GrEffect. R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/377503004
* Remove GrDrawState::CommonStateGravatar bsalomon2014-07-07
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/367163002
* Remove deferred version of GrDrawState.Gravatar bsalomon2014-07-07
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/368913003
* Reduce integer divides in GrAllocatorGravatar bsalomon2014-07-02
| | | | | | | | R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/362023002
* Fall back to using clip effect for outer rect in drawdrrectGravatar bsalomon2014-06-03
| | | | | | | | R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/310483010
* Move GrIPoint16 to SkIPoint16 (and remove GrPoint.h)Gravatar robertphillips2014-06-02
| | | | | | | | R=bsalomon@google.com, reed@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/309683002
* SK_SUPPORT_LEGACY_GRTYPES to hide duplicate types from SkTypes.hGravatar commit-bot@chromium.org2014-03-28
| | | | | | | | | | | BUG=skia: R=bsalomon@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/216503004 git-svn-id: http://skia.googlecode.com/svn/trunk@13982 2bbb7eff-a529-9590-31e7-b0007b416f81
* Apply hairline optimization only if the path renderer wants itGravatar commit-bot@chromium.org2013-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | Make the decision to convert thin, non-hairline paths to hairline paths at the renderer level. The current nv_path_rendering implementation does not render hairlines. Rendering the hairlines with normal renderers cause unneccessary gl program changes, which is quite slow. Changes the behavior of non-nv_path_rendering paths to always perform the optimization if the shape ends up being painted by a renderer that wants the optimization. Previously the optimization was applied only when callgraph started with SkCanvas::drawPath. Applies the optimization for GrAAHairLineRenderer and GrDefaultPathRenderer. This changes gm results for dashing3_{msaa4,gpu} and drawlooper_msaa4. R=bsalomon@google.com, jvanverth@google.com, rmistry@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/38573007 git-svn-id: http://skia.googlecode.com/svn/trunk@12357 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Do not apply hairline optimization for paths if nv_path_rendering is ↵Gravatar bsalomon@google.com2013-11-08
| | | | | | | | | | used" This reverts commit r12185. Review URL: https://codereview.chromium.org/66813002 git-svn-id: http://skia.googlecode.com/svn/trunk@12187 2bbb7eff-a529-9590-31e7-b0007b416f81
* Do not apply hairline optimization for paths if nv_path_rendering is usedGravatar commit-bot@chromium.org2013-11-08
| | | | | | | | | | | | | | | | | | | | | | | | Do not convert thin, non-hairline paths to hairline paths if nv_path_rendering is used. The current nv_path_rendering implementation does not render hairlines. Rendering the hairlines with normal renderers cause unneccessary gl program changes, which is quite slow. Changes the behavior of non-nv_path_rendering paths to always perform the optimization if the shape ends up being painted by the path-drawing code (GrContext::drawPathInternal). Previously the optimization was applied only when callgraph started with SkCanvas::drawPath. This changes drawlooper_msaa4, dashing3_msaa4 and dashing3_gpu R=bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/38573007 git-svn-id: http://skia.googlecode.com/svn/trunk@12185 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement SkColorFilter as a GrGLEffectGravatar commit-bot@chromium.org2013-10-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds GrEffect::willUseInputColor() which indicates whether or not the input color affects the output of the effect. This is needed for certain Xfermodes, such as kSrc_Mode. For these modes the color filter will not use the input color. An effect with GrEffect::willUseInputColor() true will cause all color or coverage effects before it to be discarded, as their computations cannot affect the output. In these cases program is marked as having white input color. This fixes an assert when Skia is compiled in a mode that prefers using uniforms instead of attributes for constants. (Flags GR_GL_USE_NV_PATH_RENDERING or GR_GL_NO_CONSTANT_ATTRIBUTES). Using attributes hides the problem where the fragment shader does not need input color for color filters that ignore DST part of the filter. The assert would be hit when uniform manager tries to bind an uniform which has been optimized away by the shader compiler. Adds specific GrGLSLExpr4 and GrGLSLExpr1 classes. This way the GLSL expressions like "(v - src.a)" can remain somewhat readable in form of "(v - src.a())". The GrGLSLExpr<typename> template implements the generic functionality, GrGLSLExprX is the specialization that exposes the type-safe interface to this functionality. Also adds operators so that GLSL binary operators of the form "(float * vecX)" can be expressed in C++. Before only the equivalent "(vecX * float)" was possible. This reverts the common blending calculations to more conventional order, such as "(1-a) * c" instead of "c * (1-a)". Changes GrGLSLExpr1::OnesStr from 1 to 1.0 in order to preserve the color filter blending formula string the same (with the exception of variable name change). Shaders change in case of input color being needed: - vec4 filteredColor; - filteredColor = (((1.0 - uFilterColor.a) * output_Stage0) + uFilterColor); - fsColorOut = filteredColor; + vec4 output_Stage1; + { // Stage 1: ModeColorFilterEffect + output_Stage1 = (((1.0 - uFilterColor_Stage1.a) * output_Stage0) + uFilterColor_Stage1); + } + fsColorOut = output_Stage1; Shaders change in case of input color being not needed: -uniform vec4 uFilterColor; -in vec4 vColor; +uniform vec4 uFilterColor_Stage0; out vec4 fsColorOut; void main() { - vec4 filteredColor; - filteredColor = uFilterColor; - fsColorOut = filteredColor; + vec4 output_Stage0; + { // Stage 0: ModeColorFilterEffect + output_Stage0 = uFilterColor_Stage0; + } + fsColorOut = output_Stage0; } R=bsalomon@google.com, robertphillips@google.com, jvanverth@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/25023003 git-svn-id: http://skia.googlecode.com/svn/trunk@11912 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make sure attribute indexes are correct after restoring vertex attributesGravatar commit-bot@chromium.org2013-10-16
| | | | | | | | | | | | | | | | | | Fix an assert due to GrDrawState::CommonState::fFixedFunctionVertexAttribIndices getting out of sync. The assertion in GrDrawState::CommonState::operator== would fire after using AutoVertexAttribRestore. AutoVertexAttribRestore would change GrDrawState::fCommon.fVAPtr and fVACount without updating GrDrawState::fCommon.fFixedFunctionVertexAttribIndices. R=jvanverth@google.com, bsalomon@google.com, robertphillips@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/26922004 git-svn-id: http://skia.googlecode.com/svn/trunk@11807 2bbb7eff-a529-9590-31e7-b0007b416f81
* Replace uses of GrNoncopyable by SkNoncopyable.Gravatar commit-bot@chromium.org2013-09-18
| | | | | | | | | | | | BUG=None TEST=None, no functional changes. R=bsalomon@google.com, robertphillips@google.com Author: tfarina@chromium.org Review URL: https://chromiumcodereview.appspot.com/23483042 git-svn-id: http://skia.googlecode.com/svn/trunk@11341 2bbb7eff-a529-9590-31e7-b0007b416f81