aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrAARectRenderer.cpp
Commit message (Collapse)AuthorAge
* Initial refactor of shaderbuilder to prepare for geometry shadersGravatar joshualitt2014-08-21
| | | | | | | | | | | gitignore for eclipse BUG=skia: R=bsalomon@google.com, bsalomon@chromium.org Author: joshualitt@chromium.org Review URL: https://codereview.chromium.org/491673002
* Use combined color/coverage attribute when possible in aa rect renderer.Gravatar bsalomon2014-08-13
| | | | | | | | | | Also restore the is_irect test to detect AA rects that are integer aligned. R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/466873002
* 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
* Rename GrGLUniformManager to GrGLProgramDataManagerGravatar kkinnunen2014-07-30
| | | | | | | | | | | | | Rename GrGLUniformManager to GrGLProgramDataManager in anticipation that the class would be used to manage shader resources that are not uniforms. This is needed in order to implement NVPR on GLES. R=bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/365853002
* round and bevel hairline rects show the same as miter hairline rectsGravatar yunchao.he2014-07-28
| | | | | | | | | | | | | | | So round and bevel hairline rects can generate the vertices and indices the same as miter rects do. The original code behaves the same as bevel rects for round and bevel hairline rects. This small CL can save (vertices and indices) buffer memory as well as improve performance (draw less triangles). gm cases show no difference after this CL is applied. BUG=skia: R=robertphillips@google.com Author: yunchao.he@intel.com Review URL: https://codereview.chromium.org/417113002
* Allow GrGLEffects to produce variable length keys.Gravatar bsalomon2014-07-21
| | | | | | | | R=robertphillips@google.com, jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/385713005
* This moves us towards variable length effect keys. The overall program key ↵Gravatar bsalomon2014-07-11
| | | | | | | | | | now allows for it. After the header it stores an array of offsets to effect keys. This allows us to grab the effect keys to pass to effects when they generate code. It also ensures that we can't get a collision by sets of keys that are different lengths but are the same when appended together. R=robertphillips@google.com, jvanverth@google.com, egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/356513003
* Goodbye GrEffectRef.Gravatar bsalomon2014-07-08
| | | | | | | | | | Also, reworked some var names and comments around SkShader::asNewEffect. R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/374923002
* Make GrGLShaderBuilder::fragmentPosition() return a vec4, with 1.0 as the zw ↵Gravatar bsalomon2014-06-24
| | | | | | | | | | | | | | components when in the y-flip case. This works around an Adreno driver bug. Revert "Stop referencing gl_FragCoord z and w components." This reverts commit 160a52ba217012ed73c240f6d67b3bbf2b4879d6. R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/354663002
* Stop referencing gl_FragCoord z and w components.Gravatar bsalomon2014-06-20
| | | | | | | | | | This fixes an Adreno driver bug where GL programs fail to link if the FS refers to these components of gl_FragCoord. R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/345083002
* Push dash checks into GrContext.Gravatar egdaniel2014-06-11
| | | | | | | | | | Add class to hold stroke and dash info. R=bsalomon@google.com, robertphillips@google.com, jvanverth@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/311183002
* Rename from "(un)lock" to "(un)map" for geometry buffers.Gravatar commit-bot@chromium.org2014-05-07
| | | | | | | | | | | | This better reflects OpenGL terminology and is less overloaded ("lock" is used w.r.t. the resource cache). R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/275493004 git-svn-id: http://skia.googlecode.com/svn/trunk@14628 2bbb7eff-a529-9590-31e7-b0007b416f81
* Convert GrCrash->SkFAIL GrDebugCrash->SkDEBUGFAILGravatar commit-bot@chromium.org2014-04-30
| | | | | | | | | | R=robertphillips@google.com, reed@google.com, mtklein@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/257393004 git-svn-id: http://skia.googlecode.com/svn/trunk@14460 2bbb7eff-a529-9590-31e7-b0007b416f81
* 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
* Fix compilation with SK_ENABLE_INST_COUNT=1Gravatar commit-bot@chromium.org2013-12-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add INHERITED declarations to class declarations that prevent compilation with the flag. Remove SK_DEFINE_INST_COUNT from all class implementations. Instead, use function-local static variables in the reference count helper classes to create the global instances to store the needed info. The accessor functions are defined inline in the helper classes, so definitions are not needed. The initialization point of the variables should be as well defined as previously. Remove SK_DECLARE_INST_COUNT_TEMPLATE and use SK_DECLARE_INST_COUNT instead. This avoids possible future compilation errors further. For SK_ENABLE_INST_COUNT=0 compilation, add an empty static member function to all classes that use SK_DECLARE_INST_COUNT and SK_DECLARE_INST_COUNT_ROOT macros. The function ensures that classes contain public INHERITED typedef. This member function seems to be compiled away. This shouĺd ensure that part of the compilation errors are caught earlier. Also adds DSK_DECLARE_INST_COUNT to few SkPDFDict subclasses. R=robertphillips@google.com, richardlin@chromium.org, bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/98703002 git-svn-id: http://skia.googlecode.com/svn/trunk@12501 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-11-07
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@12161 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add bevel-stroke support in GrAARectRendererGravatar commit-bot@chromium.org2013-11-06
| | | | | | | | | | | | Committed: http://code.google.com/p/skia/source/detail?r=12082 R=robertphillips@google.com, bsalomon@google.com Author: yunchao.he@intel.com Review URL: https://codereview.chromium.org/23712005 git-svn-id: http://skia.googlecode.com/svn/trunk@12148 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverting r12082 (Add bevel-stroke support in GrAARectRenderer) due to GM ↵Gravatar robertphillips@google.com2013-11-01
| | | | | | failures git-svn-id: http://skia.googlecode.com/svn/trunk@12091 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add bevel-stroke support in GrAARectRendererGravatar commit-bot@chromium.org2013-11-01
| | | | | | | | | | R=robertphillips@google.com, bsalomon@google.com Author: yunchao.he@intel.com Review URL: https://codereview.chromium.org/23712005 git-svn-id: http://skia.googlecode.com/svn/trunk@12082 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
* Express (GLSL expression, possibly known value) pairs as a classGravatar commit-bot@chromium.org2013-10-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Express (GLSL expression, possibly known value) pairs as a class instead of two variables Introduces GrGLSLExpr<N> to encapsulate the expression and possibly constant-folded value of the expression. This simplifies passing of the expressions to functions. Changes the shaders with following patterns: { // Stage 0: Linear Gradient vec4 colorTemp = mix(uGradientStartColor_Stage0, uGradientEndColor_Stage0, clamp(vMatrixCoord_Stage0.x, 0.0, 1 colorTemp.rgb *= colorTemp.a; - output_Stage0 = vec4((vColor) * (colorTemp)); + output_Stage0 = (vColor * colorTemp); + } Previously the vector cast was always added if constant folding was effective, regardless of the term dimensions. Now the vector upcast is not inserted in places where it is not needed, ie. when the binary operator term is of the target dimension. Also, some parentheses can be omitted. It is assumed that GrGLSLExpr<N>("string") constructors construct a simple expression or parenthesized expression. Otherwise the shader code remains identical. R=jvanverth@google.com, bsalomon@google.com, robertphillips@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/25048002 git-svn-id: http://skia.googlecode.com/svn/trunk@11690 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move VertexBuilder to a GrGLFullShaderBuilder subclassGravatar commit-bot@chromium.org2013-10-04
| | | | | | | | | | | | | | | | | | | Removes the VertexBuilder nested class from GrGLShaderBuilder in favor of a new GrGLFullShaderBuilder subclass, and adds an optional emitCode overload to GrGLEffect that takes a GrGLFullShaderBuilder. Makes setData virtual in GrGLEffectArray and adds a GrGLVertexEffectArray subclass that gets built using a GrGLFullShaderBuilder. Also adds a new GrGLVertexEffect subclass that makes the GrGLFullShaderBuilder overload required for emitCode, and updates GrGLEffects to inherit from GrGLVertexEffect where needed. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/25474006 git-svn-id: http://skia.googlecode.com/svn/trunk@11612 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make GPU coord transforms automaticGravatar bsalomon@google.com2013-10-02
| | | | | | | | | | | | | Adds a GrCoordTransform class and updates the framework to handle coord transforms similar to how it handles textures with GrTextureAccess. Renames GrGLEffectMatrix to GrGLCoordTransform and slightly repurposes it to be used by the framework instead of effects. R=bsalomon@google.com, robertphillips@google.com Review URL: https://codereview.chromium.org/24853002 git-svn-id: http://skia.googlecode.com/svn/trunk@11569 2bbb7eff-a529-9590-31e7-b0007b416f81
* Mark when effects and programs have vertex codeGravatar commit-bot@chromium.org2013-09-30
| | | | | | | | | | | | | | | | Adds a 'hasVertexCode' method to GrEffect and a 'fHasVertexCode' field to GrGLProgramDesc::KeyHeader. Also adds a GrVertexEffect class that effects have to inherit from in order to set the 'hasVertexCode' flag and be able to emit vertex code, and updates the existing effects to use it as needed. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/23653059 git-svn-id: http://skia.googlecode.com/svn/trunk@11537 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Add a requiresVertexShader method to GrGLEffect"Gravatar commit-bot@chromium.org2013-09-30
| | | | | | | | | | | | | This reverts commit 1a30a3af805b7ea688d4a0f0bfe373c204085a27. We're going to take a different direction for vertexless shaders. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/23464082 git-svn-id: http://skia.googlecode.com/svn/trunk@11521 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change old PRG to be SkLCGRandom; change new one to SkRandomGravatar commit-bot@chromium.org2013-09-09
| | | | | | | | | | | | | | The goal here is to get people to start using the new random number generator, while leaving the old one in place so we don't have to rebaseline GMs. R=reed@google.com, bsalomon@google.com Author: jvanverth@google.com Review URL: https://chromiumcodereview.appspot.com/23576015 git-svn-id: http://skia.googlecode.com/svn/trunk@11169 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove GrRefCnt.h in favor of SkRefCnt.hGravatar commit-bot@chromium.org2013-09-09
| | | | | | | | | | | | | | | | | This removes GrRefCnt.h with all its tyepdefs and #defines and just switch them to the Sk* equivalents. GrSafeSetNull was promoted to SkSafeSetNull in SkRefCnt.h. BUG=None TEST=none, no functional changes. R=bsalomon@google.com, robertphillips@google.com Author: tfarina@chromium.org Review URL: https://chromiumcodereview.appspot.com/23904003 git-svn-id: http://skia.googlecode.com/svn/trunk@11151 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add a requiresVertexShader method to GrGLEffectGravatar commit-bot@chromium.org2013-09-06
| | | | | | | | | | | | | | | | Adds requiresVertexShader to GrGLEffect and updates the necessary effects to override it and return true. Also reworks GrGLProgram and GrGLShaderBuilder so the program creates all the GL effects at the beginning, and determines if it needs a vertex shader before creating the shader builder. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://chromiumcodereview.appspot.com/23471008 git-svn-id: http://skia.googlecode.com/svn/trunk@11140 2bbb7eff-a529-9590-31e7-b0007b416f81
* Isolate VertexBuilder from GrGLShaderBuilderGravatar commit-bot@chromium.org2013-08-30
| | | | | | | | | | | | | | | Adds a nested class to GrGLShaderBuilder called VertexBuilder. Now GrGLShaderBuilder can only modify the fragment shader directly. In order to modify the vertex shader, the client code needs to call getVertexShader, which will return null for vertex-less shaders. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://chromiumcodereview.appspot.com/23754003 git-svn-id: http://skia.googlecode.com/svn/trunk@11046 2bbb7eff-a529-9590-31e7-b0007b416f81
* Replace uses of GR_DEBUG by SK_DEBUG.Gravatar commit-bot@chromium.org2013-08-28
| | | | | | | | | | | BUG=None R=bsalomon@google.com, robertphillips@google.com Author: tfarina@chromium.org Review URL: https://chromiumcodereview.appspot.com/23137022 git-svn-id: http://skia.googlecode.com/svn/trunk@10978 2bbb7eff-a529-9590-31e7-b0007b416f81
* Replace uses of GrAssert by SkASSERT.Gravatar tfarina@chromium.org2013-08-17
| | | | | | | | R=bsalomon@google.com Review URL: https://codereview.chromium.org/22850006 git-svn-id: http://skia.googlecode.com/svn/trunk@10789 2bbb7eff-a529-9590-31e7-b0007b416f81
* Replace all instances of GrRect with SkRect.Gravatar commit-bot@chromium.org2013-07-17
| | | | | | | | | | | | And remove the typedef in GrRect.h. The same with GrIRect. R=robertphillips@google.com Author: tfarina@chromium.org Review URL: https://chromiumcodereview.appspot.com/19449002 git-svn-id: http://skia.googlecode.com/svn/trunk@10130 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-07-02
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@9856 2bbb7eff-a529-9590-31e7-b0007b416f81
* Partial revert of r9812 & put rest of r9812 behind a compile flagGravatar robertphillips@google.com2013-07-01
| | | | | | | | https://codereview.chromium.org/18317003/ git-svn-id: http://skia.googlecode.com/svn/trunk@9832 2bbb7eff-a529-9590-31e7-b0007b416f81
* GPU "fix" for thin stroked rectsGravatar robertphillips@google.com2013-06-28
| | | | | | | | https://codereview.chromium.org/17845003/ git-svn-id: http://skia.googlecode.com/svn/trunk@9812 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change general fill rect shader code to match geometry versGravatar egdaniel@google.com2013-06-14
| | | | | | | | | | | | -Matches shader implemented for alligned rects -Uses multiplication instead of min (used in geom version) to combine width and height coverages R=bsalomon@google.com, robertphillips@google.com Review URL: https://codereview.chromium.org/17035012 git-svn-id: http://skia.googlecode.com/svn/trunk@9626 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix for r9609Gravatar robertphillips@google.com2013-06-14
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@9618 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update Alligned Rect Shader to match geometry versionGravatar commit-bot@chromium.org2013-06-14
| | | | | | | | | | | | | -Also update to combine width and height coverage using multiplication instead of using min R=bsalomon@google.com, robertphillips@google.com Author: egdaniel@google.com Review URL: https://chromiumcodereview.appspot.com/16854012 git-svn-id: http://skia.googlecode.com/svn/trunk@9609 2bbb7eff-a529-9590-31e7-b0007b416f81
* Replace fixed-size array of effect stages in GrDrawState with two appendable ↵Gravatar bsalomon@google.com2013-06-13
| | | | | | | | | | arrays, one for color, one for coverage. R=robertphillips@google.com Review URL: https://codereview.chromium.org/16952006 git-svn-id: http://skia.googlecode.com/svn/trunk@9592 2bbb7eff-a529-9590-31e7-b0007b416f81
* Decrease GPU drawn brightness for < 1 pixel wide/high rectsGravatar robertphillips@google.com2013-05-28
| | | | | | | | https://codereview.chromium.org/15715012/ git-svn-id: http://skia.googlecode.com/svn/trunk@9288 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-05-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@9189 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add special handling of rectori case for gpuGravatar robertphillips@google.com2013-05-17
| | | | | | | | https://codereview.chromium.org/15080010/ git-svn-id: http://skia.googlecode.com/svn/trunk@9175 2bbb7eff-a529-9590-31e7-b0007b416f81
* Re-add isIRect test for AA rect drawingGravatar robertphillips@google.com2013-05-14
| | | | | | | | https://codereview.chromium.org/14820035/ git-svn-id: http://skia.googlecode.com/svn/trunk@9128 2bbb7eff-a529-9590-31e7-b0007b416f81
* Further defer devRect computation in gpu rect drawingGravatar robertphillips@google.com2013-05-10
| | | | | | | | https://codereview.chromium.org/14798007/ git-svn-id: http://skia.googlecode.com/svn/trunk@9090 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update shader rect drawing path for r9087 (removal of isIRect "opt")Gravatar robertphillips@google.com2013-05-10
| | | | | | | | | | https://codereview.chromium.org/14972013/ (SkipBuildbotRuns) git-svn-id: http://skia.googlecode.com/svn/trunk@9089 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove isIRect "optimization" & defer computation of device Rect in AA rect ↵Gravatar robertphillips@google.com2013-05-10
| | | | | | | | | | rendering https://chromiumcodereview.appspot.com/14890021/ git-svn-id: http://skia.googlecode.com/svn/trunk@9087 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make GrGLShaderBuilder check whether GrEffect advertised that it would ↵Gravatar commit-bot@chromium.org2013-05-09
| | | | | | | | | | | | require the dst color or fragment position R=senorblanco@chromium.org, robertphillips@google.com Author: bsalomon@google.com Review URL: https://chromiumcodereview.appspot.com/14998007 git-svn-id: http://skia.googlecode.com/svn/trunk@9074 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-05-03
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@8976 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add geometry-based rotated AA rect drawing pathGravatar robertphillips@google.com2013-05-02
| | | | | | | | https://codereview.chromium.org/14854005/ git-svn-id: http://skia.googlecode.com/svn/trunk@8961 2bbb7eff-a529-9590-31e7-b0007b416f81
* Axis aligned shader-based rect drawingGravatar robertphillips@google.com2013-05-02
| | | | | | | | https://codereview.chromium.org/14314004/ git-svn-id: http://skia.googlecode.com/svn/trunk@8960 2bbb7eff-a529-9590-31e7-b0007b416f81