aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLShaderBuilder.cpp
Commit message (Collapse)AuthorAge
* Make GrGLProgram be available to GrGLProgramDataManagerGravatar kkinnunen2014-08-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GL APIs such as glProgramPathFragmentInputGenNV need the explicit program id in order to set the program resources. For GrGLProgramDataManager to call the APIs, the program id needs to be available to the GrGLProgramDataManager. One GrGLProgramDataManager is used to explicitly manage the resources of one GrGLProgram. Refactor the classes to reflect this: make GrGLProgram create and own GrGLProgramDataManager. This way the program id can be made available through GrGLProgram backpointer. In order to do this, remove the population of the program link results information for uniforms in GrGLProgramDataManager during shader generation. Instead, accumulate the info to the uniform list of GrGLShaderBuilder. After the generation, compilation and link is successful, this info can be used to construct both GrGLProgram and GrGLProgramDataManager. Changes names of functions to create UniformHandles and convert them to list indices. This tries to highlight that they're different lists, even though at the moment they match index-wise. E.g the contract is that handles can be created based on the shader builder state, and the object can later be set with the handle and the manager that was created with the builder. This is needed to support NV_path_rendering for GLES. R=bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/426553011
* FBFetch refactor + arm supportGravatar joshualitt2014-08-01
| | | | | | | | | BUG=skia: R=krajcevski@google.com, bsalomon@google.com Author: joshualitt@chromium.org Review URL: https://codereview.chromium.org/433603002
* 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
* 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
* 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
* Revert of Remove gpu shader optimatization for solid white or trans black ↵Gravatar egdaniel2014-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | colors (https://codereview.chromium.org/375823005/) Reason for revert: possible test and gm failures Original issue's description: > Remove gpu shader optimatization for solid white or trans black colors > > 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 TBR=bsalomon@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Author: egdaniel@google.com Review URL: https://codereview.chromium.org/385163004
* Remove gpu shader optimatization for solid white or trans black colorsGravatar egdaniel2014-07-11
| | | | | | | | | | | | | | | | | | | | | | | 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: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/375823005
* Revert of Make GrGLConfigConversionEffect work for Imagination and some ↵Gravatar bsalomon2014-07-09
| | | | | | | | | | | | | | | | | | | | | | | | | other GPUs. (https://codereview.chromium.org/277323002/) Reason for revert: Need to only use the highp variations on GLES contexts not GL contexts. http://108.170.220.120:10117/builders/Test-Mac10.6-MacMini4.1-GeForce320M-x86_64-Release/builds/3398/steps/RunTests/logs/stdio Original issue's description: > Make GrGLConfigConversionEffect work for Imagination and some other GPUs. > > BUG=372341 > > Committed: https://skia.googlesource.com/skia/+/93cf46f7d687128d2ad05762bd65fea6c4539553 R=tomhudson@chromium.org, changjun.yang@intel.com, rmistry@google.com, jcgregorio@google.com NOTREECHECKS=true NOTRY=true BUG=372341 Author: bsalomon@google.com Review URL: https://codereview.chromium.org/377263003
* Make GrGLConfigConversionEffect work for Imagination and some other GPUs.Gravatar changjun.yang2014-07-09
| | | | | | | | | BUG=372341 R=tomhudson@chromium.org, bsalomon@google.com Author: changjun.yang@intel.com Review URL: https://codereview.chromium.org/277323002
* Remove use of GrEffectRef from draw state and below.Gravatar bsalomon2014-07-07
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/372773002
* Add Instant Trace Event for shader compilation in gpu which outputs shader ↵Gravatar egdaniel2014-07-07
| | | | | | | | | | | text as attribute BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/368943002
* 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
* Fifth attempt to land faster rect blur. Remove unnecessary conditionals ↵Gravatar humper2014-06-17
| | | | | | | | | | | | | | | from the shader. approved over in https://codereview.chromium.org/331863006/; reuploading because it had the wrong base url BUG=skia:2095 R=bsalomon@google.com TBR=bsalomon Author: humper@google.com Review URL: https://codereview.chromium.org/341543005
* Revert of third try at landing improved blur rect; this time with more ↵Gravatar scroggo2014-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | correctness (https://codereview.chromium.org/331443003/) Reason for revert: Failing layout test: https://storage.googleapis.com/chromium-layout-test-archives/WebKit_Linux/32762/layout-test-results/virtual/gpu/fast/canvas/canvas-draw-canvas-on-canvas-shadow-pretty-diff.html Original issue's description: > third try at landing improved blur rect; this time with more correctness > > BUG=skia:2095 > R=bsalomon@google.com > TBR=bsalomon > > Committed: https://skia.googlesource.com/skia/+/72abfc2b4e7caead660f6b6a05e60d05eaf1a66f R=bsalomon@google.com, reed@google.com, humper@google.com TBR=bsalomon@google.com, humper@google.com, reed@google.com NOTREECHECKS=true NOTRY=true BUG=skia:2095 Author: scroggo@google.com Review URL: https://codereview.chromium.org/333763002
* third try at landing improved blur rect; this time with more correctnessGravatar humper2014-06-11
| | | | | | | | | | BUG=skia:2095 R=bsalomon@google.com TBR=bsalomon Author: humper@google.com Review URL: https://codereview.chromium.org/331443003
* Revert of second try at landing improved blur rect ↵Gravatar reed2014-06-11
| | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/325703002/) Reason for revert: broke some fast/canvas layout tests Original issue's description: > second try at landing improved blur rect > > BUG=skia:2095 > TBR=bsalomon > > Committed: https://skia.googlesource.com/skia/+/e9ea0d6b7d59ac3b7e257281e545b24bcc0d2a76 R=bsalomon@google.com, reed@chromium.org, humper@google.com TBR=bsalomon@google.com, humper@google.com, reed@chromium.org NOTREECHECKS=true NOTRY=true BUG=skia:2095 Author: reed@google.com Review URL: https://codereview.chromium.org/322423002
* second try at landing improved blur rectGravatar humper2014-06-09
| | | | | | | | | | BUG=skia:2095 R=bsalomon@google.com TBR=bsalomon Author: humper@google.com Review URL: https://codereview.chromium.org/325703002
* Use GrGLShaderBuilder::GenProgramOutput in GrGLProgram.Gravatar commit-bot@chromium.org2014-05-30
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/305203002 git-svn-id: http://skia.googlecode.com/svn/trunk@15002 2bbb7eff-a529-9590-31e7-b0007b416f81
* move all code generation under genProgram() in GrGLShaderBuilder.Gravatar commit-bot@chromium.org2014-05-30
| | | | | | | | | | R=robertphillips@google.com, jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/306063002 git-svn-id: http://skia.googlecode.com/svn/trunk@14996 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-05-30
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@14984 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make GrGLShaderBuilder store a GenProgramOutputGravatar commit-bot@chromium.org2014-05-29
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/304383002 git-svn-id: http://skia.googlecode.com/svn/trunk@14982 2bbb7eff-a529-9590-31e7-b0007b416f81
* Incremental refactoring of GrGLProgram and GrGLShaderBuilderGravatar commit-bot@chromium.org2014-05-29
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/302663006 git-svn-id: http://skia.googlecode.com/svn/trunk@14980 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move all code generation from GrGLProgram to GrGLShaderBuilderGravatar commit-bot@chromium.org2014-05-29
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/306663003 git-svn-id: http://skia.googlecode.com/svn/trunk@14974 2bbb7eff-a529-9590-31e7-b0007b416f81
* separate view matrix from rt adjustmentGravatar commit-bot@chromium.org2014-05-29
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/299943002 git-svn-id: http://skia.googlecode.com/svn/trunk@14944 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
* Use fixed function pipeline only when drawing pathsGravatar commit-bot@chromium.org2014-04-23
| | | | | | | | | | | | | | | | | | | | | | Use fixed function pipeline only when drawing paths. Previously FF vertex shader was used when drawing normal geometry if path rendering was enabled. This is required to make Chromium integration easier. This way fixed function vertex shading, including vertexshader-less programs, need not be implemented in the Chromium command buffer. Removes FF TexGen functionality, as it is not used anymore. Likewise removes the fixedFunctionSupport GL capability flag. BUG=chromium:344330 R=bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/212753002 git-svn-id: http://skia.googlecode.com/svn/trunk@14334 2bbb7eff-a529-9590-31e7-b0007b416f81
* replace old SK_TRACE_EVENT macros with new TRACE_EVENT ones, and then remove ↵Gravatar commit-bot@chromium.org2014-03-20
| | | | | | | | | | | | | them entirely! BUG=skia:353 R=tomhudson@google.com, epoger@google.com, reed@google.com, egdaniel@google.com, bsalomon@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/196133033 git-svn-id: http://skia.googlecode.com/svn/trunk@13884 2bbb7eff-a529-9590-31e7-b0007b416f81
* Don't emit declaration of gl_FragPos unless also changing the origin.Gravatar commit-bot@chromium.org2014-03-03
| | | | | | | | | | R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/182003002 git-svn-id: http://skia.googlecode.com/svn/trunk@13648 2bbb7eff-a529-9590-31e7-b0007b416f81
* Defer deletion of our shaders until after linking the gl program to work ↵Gravatar commit-bot@chromium.org2014-02-14
| | | | | | | | | | | | | around an Android emulator bug R=bsalomon@google.com, brian@thesalomons.net, bsalomon BUG=skia: Author: george@mozilla.com Review URL: https://codereview.chromium.org/164973002 git-svn-id: http://skia.googlecode.com/svn/trunk@13446 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make GrGLContextInfo have private ptr to GrGLInterfaceGravatar commit-bot@chromium.org2014-01-16
| | | | | | | | | | | BUG=skia:2042 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/140843003 git-svn-id: http://skia.googlecode.com/svn/trunk@13111 2bbb7eff-a529-9590-31e7-b0007b416f81
* Rename GrGLBinding->GrGLStandard, no longer a bitfieldGravatar commit-bot@chromium.org2014-01-16
| | | | | | | | | | | BUG=skia:2042 R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/133413003 git-svn-id: http://skia.googlecode.com/svn/trunk@13108 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added support for Chrome's gpu command buffer extension BindUniformLocation.Gravatar commit-bot@chromium.org2013-11-07
| | | | | | | | | | R=bsalomon@google.com, bsalomon Author: skaslev@chromium.org Review URL: https://codereview.chromium.org/62163004 git-svn-id: http://skia.googlecode.com/svn/trunk@12178 2bbb7eff-a529-9590-31e7-b0007b416f81
* Don't check if shaders compile or program links in release ChromiumGravatar commit-bot@chromium.org2013-10-30
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/52843003 git-svn-id: http://skia.googlecode.com/svn/trunk@12032 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
* Fix GrProgramsTest to not generate tests with too many TexCoord referencesGravatar commit-bot@chromium.org2013-10-21
| | | | | | | | | | | | | | | | | | | | | | | | | | Make GrProgramsTest check how many texture coordinate sets are available and select random effects up until the amount runs out. Otherwise, following effect sequence would fail the shader compilation when Skia is compiled with nv_path_rendering on (eg. when fixed function codepath is used): * Stage 0: TextureDomain (1 texcoord) * Stage 1: Convolution (1 texcoord) * Stage 2: Bitmap Alpha Threshold (2 texcoords) * Stage 3: DisplacementMap (2 texcoords) * Stage 4: Config Conversion (1 texcoords) * Stage 5: Two-Point Conical Gradient (2 texcoords) This would use more texture coordinate sets than 8, which is fairly common amount currently. R=bsalomon@google.com, cdalton@nvidia.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/32403002 git-svn-id: http://skia.googlecode.com/svn/trunk@11881 2bbb7eff-a529-9590-31e7-b0007b416f81
* Third wave of Win64 warning cleanupGravatar robertphillips@google.com2013-10-16
| | | | | | | | https://codereview.chromium.org/27487003/ git-svn-id: http://skia.googlecode.com/svn/trunk@11817 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
* Implement filling a path with nv_path_rendering coverGravatar commit-bot@chromium.org2013-10-09
| | | | | | | | | | | | | | | | | | Implement filling a path with nv_path_rendering cover functionality. The nv_path_rendering cover can be used if the fill is non-inverted and the draw operation does not require use of vertex shaders. Moves code for the inverted fill from GrStencilAndCoverPathRenderer down to GrGpuGL. R=bsalomon@google.com, markkilgard@gmail.com, cdalton@nvidia.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/22686002 git-svn-id: http://skia.googlecode.com/svn/trunk@11667 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use vertexless shaders when NVpr is availableGravatar commit-bot@chromium.org2013-10-04
| | | | | | | | | | | | | | | | Adds support for vertexless shaders and enables them when NV_path_rendering is available. This takes a GrGLFragmentOnlyShaderBuilder class, a GrGLTexGenEffectArray class, support for setting TexGen and the projection matrix in GrGpuGL, and code for setting the GL fixed function state where necessary. R=bsalomon@google.com, kkinnunen@nvidia.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/25846002 git-svn-id: http://skia.googlecode.com/svn/trunk@11620 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
* Repurpose GrGLCoordTransform as GrGLProgramEffectsGravatar commit-bot@chromium.org2013-10-03
| | | | | | | | | | | | | | Creates a GrGLProgramEffects class that the GrGLProgram uses to manage an array of effects. This gives us enough abstraction for the program to cleanly handle different types of coord transforms. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/25605008 git-svn-id: http://skia.googlecode.com/svn/trunk@11588 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
* Move the GL shader compilation step into GrGLShaderBuilderGravatar commit-bot@chromium.org2013-09-30
| | | | | | | | | | | | | | Moves the compilation step and a few other blocks of code from GrGLProgram to GrGLShaderBuilder. This way GrGLProgram doesn't have to know whether or not there is a vertex shader. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://codereview.chromium.org/23533066 git-svn-id: http://skia.googlecode.com/svn/trunk@11523 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
* Replace uses of GR_DEBUGCODE by SkDEBUGCODE.Gravatar commit-bot@chromium.org2013-09-06
| | | | | | | | | | | | BUG=None TEST=none, no functional changes. R=bsalomon@google.com, robertphillips@google.com Author: tfarina@chromium.org Review URL: https://chromiumcodereview.appspot.com/23703010 git-svn-id: http://skia.googlecode.com/svn/trunk@11142 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
* Rename ShaderType enum to ShaderVisibilityGravatar commit-bot@chromium.org2013-08-30
| | | | | | | | | | | | | | | | | | | | | Renames ShaderType in GrGLShaderBuilder to ShaderVisibility. It is now used solely as a bitfield. Methods that previously accepted a single ShaderType value are split into separate calls: - getShader -> vsGetShader, gsGetShader, fsGetShader - emiitFunction -> fsEmitFunction - appendTextureLookup -> fsAppendTextureLookup No change in functionality. This is a refactoring to allow us to separate the vertex/geometry and fragment parts of GrGLShaderBuilder. R=bsalomon@google.com Author: cdalton@nvidia.com Review URL: https://chromiumcodereview.appspot.com/23826002 git-svn-id: http://skia.googlecode.com/svn/trunk@11044 2bbb7eff-a529-9590-31e7-b0007b416f81
* Modify GLSL version declaration to allow access to compat. featuresGravatar commit-bot@chromium.org2013-08-30
| | | | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://chromiumcodereview.appspot.com/23526008 git-svn-id: http://skia.googlecode.com/svn/trunk@11033 2bbb7eff-a529-9590-31e7-b0007b416f81