|
3b040eb8
|
2015-08-17T16:51:33
|
|
Revert "Add full support for line continuation in the preprocessor"
Warning in the Linux/Mac builders:
In file included from ../../third_party/angle/src/tests/preprocessor_tests/input_test.cpp:7:
In file included from ../../third_party/angle/src/tests/preprocessor_tests/PreprocessorTest.h:7:
../../testing/gtest/include/gtest/gtest.h:1392:16: error: comparison of integers of different signs: 'const int' and 'const unsigned long' [-Werror,-Wsign-compare]
if (expected == actual) {
~~~~~~~~ ^ ~~~~~~
../../testing/gtest/include/gtest/gtest.h:1422:12: note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<int, unsigned long>' requested here
return CmpHelperEQ(expected_expression, actual_expression, expected,
^
../../third_party/angle/src/tests/preprocessor_tests/input_test.cpp:171:5: note: in instantiation of function template specialization 'testing::internal::EqHelper<false>::Compare<int, unsigned long>' requested here
EXPECT_EQ(3, input.read(buf, maxSize, &lineNo));
^
BUG=angleproject:1125
This reverts commit c1157d1963170c7411eb6c32e2b2fbce02c5a170.
Change-Id: Ic6fa286d190b006cccc5154d86e21ecc03175763
Reviewed-on: https://chromium-review.googlesource.com/294080
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
c1157d19
|
2015-08-14T14:16:19
|
|
Add full support for line continuation in the preprocessor
Line continuation in ESSL 3.00 needs to be processed before tokenization,
since tokens can span the line continuation. On the other hand, ANGLE's
tokenizer keeps track of line numbers, and whenever a line continuation
appears the line number still needs to be incremented by one, just like
on a regular newline.
That's why line continuation is now implemented as follows: when the
shader strings are concatenated in Input, they are also checked for line
continuation. Whenever line continuation is encountered, the string
is cut before that point. When the tokenizer asks for more input, the
string starting from the character after line continuation is passed
to it, and the line number is incremented from Input. This way the
tokenizer can parse tokens that span multiple lines - it never sees the
line continuation - but still keeps track of the line number correctly.
Relevant spec is in ESSL 3.00 section 3.2 "Source strings".
Support for line continuation also applies to ESSL 1.00. ESSL 3.00
spec section 1.5 says that line continuation support is mandated when
an ESSL 1.00 shader is used with the OpenGL ES 3.0 API, and is optional
when ESSL 1.00 is used with the OpenGL ES 2.0 API.
TEST=dEQP-GLES3.functional.shaders.preprocessor.line_continuation.*
(all pass),
angle_unittests
BUG=angleproject:1125
Change-Id: I1c1de49602e7cd755d6072c3c0aa5524cd0313b4
Reviewed-on: https://chromium-review.googlesource.com/293721
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
59f9a641
|
2015-08-06T20:38:26
|
|
Remove EOpInternalFunctionCall
It's cleaner to mark internal functions by using the TName class,
similarly to TIntermSymbol.
TEST=angle_unittests
BUG=angleproject:1116
Change-Id: I12a03a3dea42b3fc571fa25a1b11d0161f24de72
Reviewed-on: https://chromium-review.googlesource.com/291621
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
f5cfc8df
|
2015-08-06T16:36:39
|
|
Track whether a name is internal to ANGLE in a separate class
The AST contains identifiers in a few different places: besides symbols,
there are also function names, which show up in function signatures
and function calls. Any of these can be coming either from the original
shader or from inside ANGLE. A class that encapsulates a string and its
internalness will be useful for implementing a unified way of handling
all names in shader translation. Start implementing this by splitting
the functionality out of TSymbol.
TEST=angle_unittests
BUG=angleproject:1116
Change-Id: I0a1b5936dcccd0d5fc1c0c13c712102fbfff2a79
Reviewed-on: https://chromium-review.googlesource.com/291280
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
ec17d54a
|
2015-08-13T12:19:28
|
|
Fix angle miscompiling shaders on x86_64 Android.
BUG=487341
Change-Id: I792e0c9419566facb0bec0ad93f3646294e5a2a7
Reviewed-on: https://chromium-review.googlesource.com/293500
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
|
|
217fe6ec
|
2015-08-05T13:25:08
|
|
Detect when built-in modf requires an l-value in AST traversal
This fixes an omission that out parameter tracking had inherited from
EmulatePrecision. Accurate tracking of when values are written is
required for converting dynamic indexing of vectors and matrices to
function calls.
A new test covering this is added to angle_unittests.
TEST=angle_unittests
BUG=angleproject:1116
Change-Id: I05c5fd60355117d0053b84110748ae221375a790
Reviewed-on: https://chromium-review.googlesource.com/290562
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
3fc9337f
|
2015-08-11T14:50:59
|
|
Refactor l-value tracking to a separate traverser parent class
This makes TIntermTraverser implementation easier to understand and
removes the overhead of maintaining the user-defined GLSL function table
from the traversers that don't need it.
Some logic is duplicated between TIntermTraverser and its new subclass
TLValueTrackingTraverser, but duplication is hard to eliminate completely
since there are some differences scattered throughout the code.
BUG=angleproject:1116
TEST=angle_unittests
Change-Id: Iab4a0c1d4320ecfafaf18ea3a45824d756890774
Reviewed-on: https://chromium-review.googlesource.com/292721
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
6cb4c7f0
|
2015-08-13T11:27:17
|
|
Set __VERSION__ macro when the #version directive is parsed
__VERSION__ macro needs to be set to 300 when #version 300 es is on the
first line of the shader, since section 3.4 of ESSL 3.00.4 spec mentions
that the value of __VERSION__ should match the shading language being
parsed. The value from parsing the version directive replaces the default
value 100.
BUG=angleproject:524
TEST=dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.*
(4 tests start passing, 2 still fail)
dEQP-GLES3.functional.shaders.preprocessor.conditionals.*
(2 tests start passing)
dEQP-GLES2.functional.shaders.preprocessor.predefined_macros.*
(no regression)
Change-Id: I15bfdeb73d1e343d131ded56b1fd52ca5ef32408
Reviewed-on: https://chromium-review.googlesource.com/293440
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
4d61f7ed
|
2015-08-12T10:56:50
|
|
Reland Fixed compiler warning C4267 'conversion from 'size_t' to 'type', possible loss of data'
Additional warnings found with more testing and added C4267 warning disable only for angle_libpng
BUG=angleproject:1120
Change-Id: Ic403dcff5a8018056fa51a8c408e64207f3362eb
Reviewed-on: https://chromium-review.googlesource.com/293028
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8b76e9fb
|
2015-08-12T15:22:58
|
|
Fix warnings on Linux
BUG=
Change-Id: I24ed2a2ee85a152ef79fc9cb2c3b067bbbaedf05
Reviewed-on: https://chromium-review.googlesource.com/293310
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
b195643c
|
2015-08-12T17:35:20
|
|
Revert "Fixed compiler warning C4267 'conversion from 'size_t' to 'type', possible loss of data'"
Seems to have quite a few warnings in 64-bit on my machine.
BUG=angleproject:1120
This reverts commit c5cf9bc47d0ee028adbbf9e9f94ca567eec601dc.
Change-Id: I86768b900aeba52e7a2242d9ae8949f93f1a5ba9
Reviewed-on: https://chromium-review.googlesource.com/293280
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
56193ce3
|
2015-08-12T15:55:09
|
|
Clean up parseMatrixFields
Applying field selection directly on matrices is not mentioned in ESSL
1.00 or 3.00 specs. Remove erroneous code that generated odd error
messages when a shader tried to apply certain kinds of field selection
on a matrix.
BUG=angleproject:1118
TEST=angle_unittests, dEQP-GLES3.functional.shaders.swizzles.*
Change-Id: I7bbf5d0cbaee3f21d20b830d904c0feef445dd78
Reviewed-on: https://chromium-review.googlesource.com/293190
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
391befef
|
2015-08-12T16:30:38
|
|
Revert "Add pragma errors for malformed pragmas."
Since this commit was made, dEQP tests were fixed to check that
unrecognized pragma tokens only generate warnings, not errors.
This applies to both ESSL1.00 and ESSL3.00, which specify this
behavior in section 3.4 Preprocessor.
BUG=angleproject:989
TEST=dEQP-GLES2.functional.shaders.preprocessor.pragmas.*
This reverts commit d3c29f57aaeb451b149bbb9fd17b3f1f99101c52.
Change-Id: Ie4e0ec061fa3164d6f3872ac0016a063056ed110
Reviewed-on: https://chromium-review.googlesource.com/293181
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c5cf9bc4
|
2015-08-06T10:46:48
|
|
Fixed compiler warning C4267 'conversion from 'size_t' to 'type', possible loss of data'
BUG=angleproject:1120
Change-Id: I01ef10bea7f487c2b394d030c76628f38d2ea645
Reviewed-on: https://chromium-review.googlesource.com/292780
Tested-by: Cooper Partin <coopp@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
27446bda
|
2015-08-10T14:59:53
|
|
Move traverse functions under TIntermTraverser
This enables implementing specialized variants of TIntermTraverser.
Intermediate subclasses of TIntermTraverser are expected to maintain
contextual information in their traverse* functions, which is then used
by the visit* functions in the actual traversers.
This approach is better than adding a flag to TIntermTraverser, since
it will make the code cleaner and easier to understand.
Traverse() functions in TIntermNode subclasses are still kept around to
redirect calls to TIntermTraverser traversal functions. This is less
hacky than choosing the function with switch/case in TIntermTraverser
would be, and if new TIntermNode subclasses get added, it's not as likely
that adding the traversal support would be forgotten.
TEST=angle_unittests
BUG=angleproject:1116
Change-Id: Ie6889be1d7e955518f13cd3390dce17871ba49b5
Reviewed-on: https://chromium-review.googlesource.com/292720
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
4f488494
|
2015-08-07T16:05:25
|
|
Fixed compiler warning C4457 'declaration of 'node' hides function parameter'.
BUG=angleproject:1119
Change-Id: Ie3de5a776b5860b1ca502cee9e2b19c41cd3bfb2
Reviewed-on: https://chromium-review.googlesource.com/292051
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Cooper Partin <coopp@microsoft.com>
|
|
149e6e69
|
2015-08-07T16:18:18
|
|
Fixed compiler warning C4458 'declaration of variable hides class member'.
BUG=angleproject:1119
Change-Id: Ibc7cfdea72abe402cbfa1c10e0ada7576fa1cfa2
Reviewed-on: https://chromium-review.googlesource.com/292052
Tested-by: Cooper Partin <coopp@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8afe1e1b
|
2015-08-05T18:00:01
|
|
Track that indices of l-values are not required to be l-values
In an expression like a[ind]++, a[ind] is required to be an l-value but
ind is not. Reset the l-value required flags before traversing the index
of an indexing operation, so that this is accurately tracked. After the
index has been traversed, the previous state of the l-value required
flags is restored.
New tests are added to angle_unittests cover this functionality.
TEST=angle_unittests
BUG=angleproject:1116
Change-Id: I8929ec01e85e672c83ef7d385e455b7df8682f4b
Reviewed-on: https://chromium-review.googlesource.com/290561
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
a26ad58d
|
2015-08-04T13:51:47
|
|
Track where l-values are required in AST traversal
This functionality is refactored out of EmulatePrecision to be a common
feature of TIntermTraverser. This is done since tracking where l-values
are required will be useful for other traversers. For example, it will
be needed for converting dynamic indexing of matrices and vectors to
function calls. This change adds some overhead to all tree traversers,
but the overhead is expected to be small for typical shaders which don't
contain too many user-defined functions.
BUG=angleproject:1116
TEST=angle_unittests
Change-Id: I54d34c2b5093ef028f2b24d854c11c0195dc1dbb
Reviewed-on: https://chromium-review.googlesource.com/290514
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
b18609b9
|
2015-07-16T14:13:11
|
|
Implement ES 2,3 parts of EXT_blend_func_extended for shader translation
Exposes gl_SecondaryFragColor, glSecondaryFragData[] and
gl_MaxDualSourceDrawBuffers to GLES SL 1.0.
Relaxes rules for undefined output locations for GLES SL 3.0
and exposes gl_MaxDualSourceDrawBuffers.
If the output GL context is GL ES 2.0 or 3.0:
The emulation layer is expected to turn on EXT_blend_func_extended
if the output GL context supports it.
If the output GL context is GL:
The emulation layer is expected to turn on EXT_blend_func_extended
if the output GL context supports ARB_blend_func_extended or if GL
context is 3.2 or later.
If the source shader spec is GLES SL 2.0: The emulation layer is
expected to inspect the shader compilation output variables upon
linking. If output target is GL SL, the emulation layer should bind
color location 0, index 1 to "angle_SecondaryFragColor" if variable
"gl_SecondaryFragColorEXT" is used. Alternatively, emulation layer
should bind "angle_SecondaryFragData" to locations 0,1,2,3,..., all
color index 1, if "gl_SecondaryFragData" array is used.
(The caller can not bind the locations or specify output variables.)
If the source shader spec is GLES SL 3.0:
The emulation layer is expected to do location auto-resolve of the
the output variables that have undefined output locations that have
not been bound by the caller.
(The caller can not use gl_ built-ins, so nothing to do with those.)
BUG=angleproject:1085
TEST=angle_unittest
Change-Id: I5cafe205b0c29478b0dcd24aa89a7b0000f5d046
Reviewed-on: https://chromium-review.googlesource.com/287580
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Kimmo Kinnunen <kkinnunen@nvidia.com>
|
|
43613b03
|
2015-08-04T11:02:21
|
|
Make sure that the AST root is always a sequence node
This enables inserting helper functions as an AST transformation.
BUG=angleproject:1116
TEST=angle_unittests
Change-Id: I169d4d3a726d0e389cb3444fe9dfb4c6c5d80155
Reviewed-on: https://chromium-review.googlesource.com/290513
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
cc36b983
|
2015-07-10T14:14:18
|
|
Implement ESSL 3.00 shader input/output variable type rules
ESSL 3.00 allows a wider variety of types of input/output variables
than ESSL 1.00, but there are still specific restrictions on structs,
matrices and arrays.
Some of the checks need to be implemented twice: once for array syntax
where the brackets are after the type, and another time for array syntax
where the brackets are after the variable name.
This requires fixes to constant folding unit tests which were previously
incorrectly using matrix outputs in fragment shaders.
New unit tests are added for several of the rules introduced, but some
cases are also covered by dEQP.
TEST=angle_unittests, dEQP-GLES.functional.shaders.linkage.varying.rules.*
BUG=angleproject:1061
Change-Id: I655b054cfe56d376db775b96a2bb41b3ac5740b0
Reviewed-on: https://chromium-review.googlesource.com/285482
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
13e7c7e6
|
2015-07-30T14:17:29
|
|
Revert "Names of built-in functions cannot be redeclared as functions"
Causing failures in the WebGL1 test: conformance/glsl/misc/shader-with-non-reserved-words.html
This reverts commit b5f88853ea80ea112368bb15999b363db0e4c648.
Change-Id: I2105c8040057665abda00435e8c0ff8a83af3645
Reviewed-on: https://chromium-review.googlesource.com/289192
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
b5f88853
|
2015-07-23T17:37:39
|
|
Names of built-in functions cannot be redeclared as functions
With ESSL 3.00, names of built-in functions cannot be redeclared as
functions and therefore overloading or redefining builtin functions
is an error.
This is fixed by inserting unmangled built-ins into the symbol table
and then checking if the new function declaration matches any of the
built-in in symbol table.
BUG=angleproject:1066
TEST=angle_unittests(new: ParseESSLFunctionsTest), dEQP Tests
dEQP-GLES3.functional.shaders.functions.invalid.overload_builtin_function*
(2 tests started passing with this change)
Change-Id: I0e027e588664e604f29c130028178315c3e21631
Reviewed-on: https://chromium-review.googlesource.com/287801
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
b98c3a82
|
2015-07-23T14:26:04
|
|
Reformat style in ParseContext.cpp.
Using git cl format.
BUG=None
Change-Id: Ia0ce03ae8115f45c3bcc4b022acd7e3e88518062
Reviewed-on: https://chromium-review.googlesource.com/287833
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
1a4b1b3c
|
2015-07-23T18:27:13
|
|
Fix use-after-delete in ParseContext.cpp.
This bug was exposed after a refactoring from the translator.
BUG=None
TEST=angle_unittests,angle_end2end_tests
Change-Id: I13fddcbe84f87826068a557f139f6e35c674571e
Reviewed-on: https://chromium-review.googlesource.com/287832
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
e2bfe2cd
|
2015-07-23T21:25:45
|
|
Revert "Implement gl_FragDepth for GLES SL 3.0"
assertion failures in WebGL2 CTS.
This reverts commit 544809610a131fe7040f2212789c62e212bbaf24.
Change-Id: I2e0c7045c5b6ef9031a6e6c5916504fe68f51077
Reviewed-on: https://chromium-review.googlesource.com/287910
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
54480961
|
2015-07-22T10:30:35
|
|
Implement gl_FragDepth for GLES SL 3.0
Makes it an error to access gl_FragDepthEXT in #version 300 es shader.
TODO:
Lacks the feature to make "#extension GL_EXT_frag_depth : require" an
error for #version 300 es.
BUG=angleproject:1102
TEST=angle_unittest
Change-Id: Ic313a0e1ed6369550d53885290f300fab1aaf304
Reviewed-on: https://chromium-review.googlesource.com/287570
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
0932df61
|
2015-07-21T14:35:11
|
|
Expose GL built-in output variables in ShGetOutputVariables
Expose GL built-in output variables in ShGetOutputVariables.
Currently gl_FragColor, gl_FragData and gl_FragDepthEXT are exposed.
The output variable names in the returned array are the input shader names,
not the output shader names.
This is needed in future features in which the emulation layer (command
buffer/libANGLE) needs to know which output variables caller used.
Example of such a feature is EXT_blend_func_extended, where
gl_SecondaryFragColorEXT and gl_SecondaryFragDataEXT cause the need
to bind the emulated output variables to their respective color
indices.
BUG=angleproject:1085
TEST=angle_unittests
Change-Id: I7ca3e0fe6bdd3e3c66113518aa771cbb013fc014
Reviewed-on: https://chromium-review.googlesource.com/287230
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Kimmo Kinnunen <kkinnunen@nvidia.com>
|
|
01c796ac
|
2015-07-21T18:53:58
|
|
Revert "Emulate the pack/unpack functions for unorms."
Causing MSAN failures on Linux.
This reverts commit 1915652ee82109d7756dc8349562c3c11ea39b77.
Change-Id: Ib23bec16eab22288930be0b41186e54cd8d1f921
Reviewed-on: https://chromium-review.googlesource.com/287127
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
c4c7442d
|
2015-07-20T13:09:26
|
|
Fix missing uint cases for GLSL and ESSL output.
These were causing assertions in several WebGL2 conformance tests.
BUG=angleproject:882
BUG=angleproject:1084
BUG=483282
Change-Id: I7651c359a528c95469dcbfb5da2715ae4616b49b
Reviewed-on: https://chromium-review.googlesource.com/286592
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
9a4c8c46
|
2015-07-21T11:03:51
|
|
Initialize all members in the default TType constructor.
This is an attempt to fix use-of-uninitialized-value errors.
Example failure: https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_msan_rel_ng/builds/68/steps/cc_unittests%20%28with%20patch%29/logs/EnlargedTextureWithAlphaThresholdFilter.GL
BUG=angleproject:1044
Change-Id: I5906c67a55da553e2e5fd15320a5dd4186644e87
Reviewed-on: https://chromium-review.googlesource.com/287191
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8518e7f6
|
2015-07-16T14:54:08
|
|
Make all fragment shader out variables require location layout qualifier
Make all fragment shader out variables require location layout
qualifier. Previously, the last variable did not need a location layout
qualifier if the previous variables had those.
TEST=angle_unittests
BUG=angleproject:1070
Change-Id: Ifb66ee52b811409f5278eaad330d6cd9b8ea059f
Reviewed-on: https://chromium-review.googlesource.com/287100
Tested-by: Kimmo Kinnunen <kkinnunen@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
6d276c8e
|
2015-07-20T19:00:38
|
|
Revert "Make all fragment shader out variables require location layout qualifier"
Causes a warning on Windows:
compiler\translator\ValidateOutputs.cpp(37): warning C4804: '>' : unsafe use of type 'bool' in operation
BUG=angleproject:1070
This reverts commit 140941d066c11238ba4f2f15647fb2d65ae56faf.
Change-Id: Ieed42cdda22f17c6e15c38ee1c059184869e6919
Reviewed-on: https://chromium-review.googlesource.com/286820
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
140941d0
|
2015-07-16T14:54:08
|
|
Make all fragment shader out variables require location layout qualifier
Make all fragment shader out variables require location layout
qualifier. Previously, the last variable did not need a location layout
qualifier if the previous variables had those.
TEST=angle_unittests
BUG=angleproject:1070
Change-Id: I3763b8ca38b1e14ee8456a54592c01e0fd89692c
Reviewed-on: https://chromium-review.googlesource.com/286101
Tested-by: Kimmo Kinnunen <kkinnunen@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
9d82be8f
|
2015-07-20T14:36:50
|
|
HLSL: Fix uniform packing for non-square matrices.
We were neglecting to transpose the types here, so were getting
incorrect registers counts for rows and columns.
BUG=angleproject:1072
TEST=dEQP-GLES3.functional.shaders.matrix.*
Change-Id: Ia0ab89bbba8b9e2d8f39e84ef4e8ad3c03bb118d
Reviewed-on: https://chromium-review.googlesource.com/286771
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
8b6587a7
|
2015-07-20T14:16:59
|
|
Use the type cache for the types used in the emulated GLSL functions.
BUG=angleproject:1044
Change-Id: I7c4bde80448b2cd64921b809a3a0dfb37c4e0f47
Reviewed-on: https://chromium-review.googlesource.com/286643
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
b081e78b
|
2015-07-20T05:40:04
|
|
Compiler: avoid an undefined behavior when using erase-remove
Using that idiom on an empty vector results in an undefined behavior
that I have seen cause a vector to get length -1 with clang 3.6 on
Linux.
BUG=
Change-Id: I3bb8d8884efa29a17672b458263067644dbf0fec
Reviewed-on: https://chromium-review.googlesource.com/286740
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
1915652e
|
2015-06-18T09:40:14
|
|
Emulate the pack/unpack functions for unorms.
BUG=angleproject:1044
Change-Id: I0e7bee366398159ae6b87a820f36cb51c05cb064
Reviewed-on: https://chromium-review.googlesource.com/280362
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
185fb403
|
2015-06-12T15:48:48
|
|
Move function prototypes and declarations out of the .y
This will make the code easier to edit and maintain.
BUG=none
TEST=angle_unittests,angle_end2end_tests
Change-Id: I955307d1209170fa99142103bc4d361c9eab1cc8
Reviewed-on: https://chromium-review.googlesource.com/286145
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
c1ac41bb
|
2015-07-10T13:53:46
|
|
Apply array restriction on qualified types only on ESSL1.00
Add a test that checks that uniforms with an array type are allowed in
ESSL3.00.
TEST=angle_unittests
BUG=angleproject:1061
Change-Id: I6c9e8eeb3e8a6b81522c87039b93bcc0008ae317
Reviewed-on: https://chromium-review.googlesource.com/285481
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
abb0c381
|
2015-07-13T12:01:12
|
|
Check that layout qualifiers may only appear in declarations
In the shading language grammar, layout qualifiers may appear in loop
conditions and function declarations, but this is not valid ESSL 3.00
according to section 4.3.8.
TEST=angle_unittests, dEQP-GLES3.functional.shaders.*layout*
BUG=angleproject:1064
Change-Id: I73f805247bf6678b953f2e1d45a23391e9eacb96
Reviewed-on: https://chromium-review.googlesource.com/285040
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
e0f623a4
|
2015-07-10T11:58:30
|
|
Check that block instance name isn't reserved
BUG=angleproject:1060
TEST=dEQP-GLES3.functional.shaders.uniform_block.invalid.*
Change-Id: I6de3aa0f714d585e7821798744530f3e51ddee7f
Reviewed-on: https://chromium-review.googlesource.com/284259
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
01971113
|
2015-07-10T14:54:00
|
|
Cache TTypes.
*re-land with build fix for Win/Release*
This change saves us ~70KiB per compiler with just ~3KiB of cache.
BUG=492725
Change-Id: I4382c55b2480f70b00c5d117fcb7e0c51d0dfbb4
Reviewed-on: https://chromium-review.googlesource.com/284735
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Dmitry Skiba <dskiba@google.com>
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
|
|
53b76107
|
2015-07-10T18:52:58
|
|
Revert "Cache TTypes."
Unused variable warning in Release:
warning C4189: 'MaxEnumValue' : local variable is initialized but not referenced
I'll handle fixing this.
BUG=492725
This reverts commit b25d14e4b39ee273fad3bb585c3a3a929b3f794c.
Change-Id: I502fc5288d5d3c48ecd43f84acdf66b7e300ad22
Reviewed-on: https://chromium-review.googlesource.com/284863
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
44897140
|
2015-07-10T09:50:00
|
|
clang/win: Fix -Wunused-private-field warnings in debug builds.
No intended behavior change.
BUG=505317
Change-Id: I5dfa1d67715b18133f3373ca00a6d1d96b678043
Reviewed-on: https://chromium-review.googlesource.com/284850
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Nico Weber <thakis@chromium.org>
|
|
07e57df7
|
2015-06-16T16:55:52
|
|
Added non square matrix construction
Added new construction operations for
non square matrices, along with the
required changes to the related
translation functions.
Change-Id: I04ae7d4b2d1bb363b35d088cea45c0e7c4bc8a13
Reviewed-on: https://chromium-review.googlesource.com/277729
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
b25d14e4
|
2015-06-23T17:43:14
|
|
Cache TTypes.
This change saves us ~70KiB per compiler with just ~3KiB of cache.
BUG=492725
Change-Id: I7b8053c032c9c68f646162baf61abf6db3afe52e
Reviewed-on: https://chromium-review.googlesource.com/284003
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
fb6ab2ce
|
2015-07-09T20:55:28
|
|
Matrix layout qualifiers are valid for non-matrices
Uniform block members may be structs containing matrices, and there's
no explicit mention in the spec that the matrix qualifiers would only
be valid for matrix fields. Only generate a warning when an extraneous
matrix layout qualifier is used.
TEST=dEQP-GLES3.functional.shaders.*layout* (all pass with this patch)
BUG=angleproject:1058
Change-Id: Ifb2f2392d84100d997cc2d68fd55e9ad17a17cea
Reviewed-on: https://chromium-review.googlesource.com/284112
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
b5841ef2
|
2015-07-08T17:25:22
|
|
Disallow texture lookup functions in global initializers
Do this by simply disallowing all function calls in global initializers
- all built-in math ops are handled as other ops, not function calls.
This change was tested extensively with popular WebGL content, with no
regressions found.
TEST=angle_unittests
BUG=angleproject:988
Change-Id: Id1107fa294ae4012d5dd3949539d0b7b4cd21943
Reviewed-on: https://chromium-review.googlesource.com/283703
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
58832204
|
2015-07-06T16:11:13
|
|
Calculate TFunction::mangledName lazily.
This saves us ~15KiB per compiler instance on 32-bit Android.
BUG=492725
Change-Id: I9db2998482941b5ab2eb5cb4925cbd1fb58ab4be
Reviewed-on: https://chromium-review.googlesource.com/283584
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
0c5409f8
|
2015-07-08T15:17:53
|
|
Support constant folding of fragment processing built-ins
This change adds constant folding support for following derivative
functions:
- dFdx, dFdy and fwidth.
As per spec, derivatives of constant arguments should be 0, so this
change just sets result components to zero when the above operations
are performed on constant argument.
BUG=angleproject:913
TEST=dEQP Tests
dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.
fragment_processing.*
(All 12 tests started passing with this change.)
Change-Id: I67b7c5abd970b740e15e3bd1ee56721e81bbecc4
Reviewed-on: https://chromium-review.googlesource.com/283759
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
551279e5
|
2015-07-07T18:18:23
|
|
Support constant folding of more common built-ins
This change adds const folding support for below mentioned common
built-ins:
- isnan, ininf, floatBitsToInt, floatBitsToUint,
intBitsToFloat and uintBitsToFloat
BUG=angleproject:913
TEST=angle_unittests(new: MathUtilTest.isNan/inInf), dEQP Tests
dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common.*
(20 more tests started passing with this change)
Change-Id: Ifdedb251cd8b183b4999314c0f5de857bc20702f
Reviewed-on: https://chromium-review.googlesource.com/283767
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ab2b9a23
|
2015-07-06T18:27:56
|
|
Refactor unary operation constant folding code
This change splits TIntermConstantUnion::foldUnary into two
functions:
- foldUnaryWithDifferentReturnType:
- Handles constant folding of operations where the return
type has a different number of components compared to the
operand type.
- foldUnaryWithSameReturnType:
- Handles constant folding of unary operations where the
return type is the same as operand type.
BUG=angleproject:913
TEST=angle_unittests, dEQP Tests
(dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.*)
Change-Id: I675891138d4e17fd2390c03e9f710e0be0b7c7b6
Reviewed-on: https://chromium-review.googlesource.com/283464
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cdfa8f50
|
2015-06-30T17:48:25
|
|
Constant fold float pack/unpack functions
This change adds constant folding support for following floating
point pack and unpack functions:
- packSnorm2x16, unpackSnorm2x16, packUnorm2x16, unpackUnorm2x16,
packHalf2x16, and unpackHalf2x16.
BUG=angleproject:913
TEST=angle_unittests(new: MathUtilTest.packAndUnpack*), dEQP Tests
dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack.*
(all 10 tests started passing with this change)
Change-Id: I2b69faebee4127e5e13900b3a9485b7145950277
Reviewed-on: https://chromium-review.googlesource.com/282683
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
846fe05f
|
2015-07-07T17:41:21
|
|
Disable using globals as l-values in global initializers
It should not be possible to use globals as l-values in global initializers.
This change was tested extensively with popular WebGL content, with no
regressions found.
TEST=angle_unittests
BUG=angleproject:988
Change-Id: I21ab731eb1d92aeae25795856ccae280792ad1f0
Reviewed-on: https://chromium-review.googlesource.com/283910
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
2f232370
|
2015-07-07T21:57:55
|
|
Revert "Cache TTypes."
Lots of compile errors.
BUG=492725
This reverts commit 5377720aae042c5bfae0e8a37032c90dc3ab78cf.
Change-Id: I64889b99b1f1f48d39b87ebb668f6a32a3abac45
Reviewed-on: https://chromium-review.googlesource.com/283945
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
5377720a
|
2015-06-23T17:43:14
|
|
Cache TTypes.
This change saves us ~70KiB per compiler with just ~3KiB of cache.
BUG=492725
Change-Id: I2ee748f7271b1afe0834083cbff6f0b84104aa53
Reviewed-on: https://chromium-review.googlesource.com/281411
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Dmitry Skiba <dskiba@google.com>
|
|
ce39f6ff
|
2015-07-06T15:25:19
|
|
Disallow user-defined function calls in global variable init
Generate an error message when an user-defined function call is found in
a global variable initializer.
Even before this patch, the call graph already marked functions that were
only called from the global scope as unused.
This change was tested extensively with popular WebGL content, with no
regressions found.
TEST=angle_unittests
BUG=angleproject:988
Change-Id: Iec1b16d2af386f1e5c383f86926d80cef553b694
Reviewed-on: https://chromium-review.googlesource.com/283291
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
e6e8c7c5
|
2015-07-01T16:48:31
|
|
Fix 'unused private field' warnings for clang.
BUG=505317
Change-Id: I731b6e5ae5d5eba50f556314eeeebc6a3d29fc7a
Reviewed-on: https://chromium-review.googlesource.com/282932
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
7f17a50c
|
2015-06-22T15:08:39
|
|
Store TFunction::returnType by a const pointer.
On 32-bit Android this change saves ~30KiB per compiler instance.
BUG=492725
Change-Id: I8bea48d57ee7eac0a0ee417035085c0d335aea09
Reviewed-on: https://chromium-review.googlesource.com/281047
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Dmitry Skiba <dskiba@google.com>
|
|
efa3d8eb
|
2015-06-22T14:52:10
|
|
Change TSymbolTable::insertBuiltIn() TType* pointers to const.
Const types make it possible to implement caching and
other optimizations.
BUG=492725
Change-Id: I64398bb9effcc909dd052a038acbb5ec0ca730e8
Reviewed-on: https://chromium-review.googlesource.com/281046
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Dmitry Skiba <dskiba@google.com>
|
|
5a0edc62
|
2015-06-30T12:36:07
|
|
Change intializer list order to match field order.
BUG=505304
Change-Id: I38149e72732f0b4eb7d398f90b5d11660e2a7fbc
Reviewed-on: https://chromium-review.googlesource.com/282465
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8273e006
|
2015-06-15T13:40:19
|
|
Add new GLSL target versions.
Test the emulated GLSL functions against multiple GL versions.
BUG=angleproject:1044
Change-Id: I1e12523301042f0d541ab2f4e73f02319d1584ef
Reviewed-on: https://chromium-review.googlesource.com/277702
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
b3a6a8f3
|
2015-06-23T16:10:14
|
|
Error when encountering non-preprocessor tokens before #extension in ESSL3.
BUG=angleproject:1047
Change-Id: I4a548270f651e35b2c8d1ab5d0f46185230c5f74
Reviewed-on: https://chromium-review.googlesource.com/281216
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
7fa3355f
|
2015-06-10T15:15:18
|
|
Add constant folding support for matrix built-ins
This change adds constant folding support for following matrix
built-ins:
- matrixCompMult, outerProduct, transpose, determinant and
inverse.
BUG=angleproject:913
TEST=angle_unittests(new: MatrixUtilsTest, ConstantFoldingTest.*Matrix*),
dEQP Tests:
dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix.*
(All 54 tests started passing with this change)
Change-Id: I7b9bf04b9a2cbff72c48216cab04df58c5f008d6
Reviewed-on: https://chromium-review.googlesource.com/276574
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e148f3d3
|
2015-06-17T11:41:28
|
|
Fix lots of compilation errors in generated GLSL functions.
Reformatted to improve readability.
BUG=angleproject:angleproject:947
Change-Id: I467f0396a0318b7a51d5cafce3f11e55d929c369
Reviewed-on: https://chromium-review.googlesource.com/278250
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
7b9b284b
|
2015-06-15T11:02:49
|
|
Refactor GLSL version calculations for emulated functions.
Pass the target GLSL version to InitBuiltInFunctionEmulatorForGLSL so that
it can be updated to generate emulated functions for multiple versions.
BUG=angleproject:1044
Change-Id: I34c408df52fd0f7d6c2f66d0579ac854afd93b87
Reviewed-on: https://chromium-review.googlesource.com/277700
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
e2adce1b
|
2015-06-19T23:06:32
|
|
Workaround for some STLs not parsing floats with a suffix
BUG=angleproject:1046
BUG=angleproject:891
Change-Id: I01c3f024142e573385a5f40d721171ad752ffd19
Reviewed-on: https://chromium-review.googlesource.com/278210
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
2539fffa
|
2015-06-16T17:56:09
|
|
Add ShClearResults() for clearing last compilation results.
This helps reclaiming memory used by the results when we don't need
them anymore.
BUG=492725
Change-Id: I4bc11be27b23589548120f0dc43e9979bf894089
Reviewed-on: https://chromium-review.googlesource.com/277808
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Dmitry Skiba <dskiba@google.com>
Tested-by: Dmitry Skiba <dskiba@google.com>
Reviewed-by: Dmitry Skiba <dskiba@google.com>
|
|
34482831
|
2015-06-10T15:16:07
|
|
Add missing newlines to BuiltInFunctionEmulatorGLSL.cpp and Pack_Unpack_test.cpp.
BUG=angleproject:947
Change-Id: I8cbcd99e8c2cb7c461b0c624596631a4dec6dcc8
Reviewed-on: https://chromium-review.googlesource.com/276668
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
03f3caec
|
2015-03-16T02:01:21
|
|
Emulate Missing pack_unpack functions from OpenGL 4.1
BUG=angleproject:947
TEST=angle_unittests, angle_end2end_tests
Change-Id: Id1afd7630d9720b6701225b7abf1ce4a3bf528b6
Reviewed-on: https://chromium-review.googlesource.com/260232
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
a4aa4e30
|
2015-06-04T15:54:30
|
|
Record precision of constant variables when needed
Add a traverser that checks precision qualifiers of folded constants and
hoists them to separate precision qualified variables if needed.
Fixes sdk/tests/conformance/glsl/bugs/constant-precision-qualifier.html
TEST=WebGL conformance tests, angle_unittests
BUG=angleproject:817
Change-Id: I1639595e0e49470736be93274f0af07ee732e1fe
Reviewed-on: https://chromium-review.googlesource.com/275095
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
b43846ee
|
2015-06-02T18:18:57
|
|
Unify aggregate operator folding with other constant folding
Setting the type for folded aggregate nodes should work in a similar way
as other constant folding. Common functionality between the different
folding functions is refactored into a single function.
TEST=dEQP-GLES3.functional.shaders.constant_expressions.*
BUG=angleproject:817
Change-Id: Ie0be561f4a30e52e52d570ff0b2bdb426f6e4f7a
Reviewed-on: https://chromium-review.googlesource.com/275186
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
95310b00
|
2015-06-02T17:43:38
|
|
Unify unary operator folding with binary operator folding
Implement unary operator folding in a similar way to binary operator
folding, so that the code is easier to understand.
TEST=dEQP-GLES3.functional.shaders.constant_expressions.*
BUG=angleproject:817
Change-Id: I069bdb38f965e1badb3e8f3f954386b205b7bb00
Reviewed-on: https://chromium-review.googlesource.com/275185
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
2c4b746c
|
2015-06-08T11:30:31
|
|
Revert "Revert "Make sure type gets set consistently in folded binary operations""
This patch was originally reverted only because a dependency patch failed a
buggy Chromium test.
This reverts commit aebd002d00d39858819c58bad1970df121b78e1b.
TEST=dEQP-GLES3.functional.shaders.constant_expressions.*
BUG=angleproject:817
Change-Id: Ia5acf15518ea89717c0cfe1398cb18ea27be5b19
Reviewed-on: https://chromium-review.googlesource.com/275811
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3d0d9a48
|
2015-06-01T12:16:36
|
|
Clean up TIntermTraverser usage
Remove default parameters from TIntermTraverser.
Also clean up a few dead function declarations in traversers.
TEST=angle_unittests, angle_end2end_tests
BUG=angleproject:1037
Change-Id: I8d126c6c2d5b53e8b14e23e3d102f204a59323b3
Reviewed-on: https://chromium-review.googlesource.com/275184
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
1155ddd2
|
2015-06-05T18:04:36
|
|
Revert "Revert "Add constant folding support for geometric built-ins""
Revert of revert as the issue is with the failing test itself.
This reverts commit b3da45c12d3eecdd319c0feb4d2b933e144f816a.
Change-Id: Ie2003c78527f87cad7f8ead0d87fee75ce032379
Reviewed-on: https://chromium-review.googlesource.com/275487
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
64f0be91
|
2015-06-03T17:38:34
|
|
Remove unused right-to-left AST traversal support
No code actually uses the right-to-left traversal. All it does is add
unnecessary complexity.
TEST=angle_unittests, angle_end2end_tests
BUG=angleproject:1037
Change-Id: Id15498343538c02c252ef0852f9a00c85ac3c4bb
Reviewed-on: https://chromium-review.googlesource.com/275183
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
b3da45c1
|
2015-06-04T19:38:22
|
|
Revert "Add constant folding support for geometric built-ins"
This is failing gpu_unittests on Mac:
ShaderTranslatorTest.BuiltInFunctionEmulation:
../../gpu/command_buffer/service/shader_translator_unittest.cc:314: Failure
Value of: strstr(translated_source.c_str(), "webgl_dot_emu") != NULL
Actual: false
Expected: true
Reverting until we can fix the overly-narrow test.
BUG=angleproject:913
This reverts commit b50788d11dec046415565af1cc7da334e2979577.
Change-Id: I5bd9df83704e771e419339745eceaa43a20bd1e6
Reviewed-on: https://chromium-review.googlesource.com/275320
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
aebd002d
|
2015-06-04T19:43:44
|
|
Revert "Make sure type gets set consistently in folded binary operations"
This is blocking the revert of the geometric constant folding
patch, which is breaking gpu_unittests and blocking the roll.
BUG=angleproject:817
This reverts commit b07aba0798d3bba3118dac78933e73b3f08a601b.
Change-Id: Ia00fc45b1ddd9d3c079742dea0627aa12304f93b
Reviewed-on: https://chromium-review.googlesource.com/275321
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
b07aba07
|
2015-05-29T12:19:19
|
|
Make sure type gets set consistently in folded binary operations
Add a wrapper function that handles creating the folded node and setting the
right parameters on it, so that the folding function handles only
calculating the folded values.
This will fix the precision set to constant folded values in some cases.
Previously the precision was always set to be equal to one of the operands
to the binary operation, but now both operands are taken into account.
Folding binary operations is now in a separate function from folding unary
operations.
TEST=dEQP-GLES3.functional.shaders.constant_expressions.*
BUG=angleproject:817
Change-Id: Id97e765173c6110f49607e21c3fb90019b1ebac7
Reviewed-on: https://chromium-review.googlesource.com/274001
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
b50788d1
|
2015-05-25T19:20:26
|
|
Add constant folding support for geometric built-ins
* re-land after mac compilation fix (unsupported c++11 initializer) *
This change adds constant folding support for following geometric
built-ins:
- length, distance, dot, cross, normalize, faceforward,
reflect and refract.
BUG=angleproject:913
TEST=angle_unittests, dEQP Tests
dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric.*
(56 tests started passing with this change)
Change-Id: I236fc0c1af47a63f359564500c711e6bedf1c808
Reviewed-on: https://chromium-review.googlesource.com/274789
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
8f76bcc4
|
2015-06-02T13:54:20
|
|
Add unit test for RemovePow
Add two versions of the test - one with a single pow(), and another with
a nested pow().
TEST=angle_unittests
BUG=477306
Change-Id: Idb38e57a4b2522b7794996d6ea0f0456b349abf7
Reviewed-on: https://chromium-review.googlesource.com/274736
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
5bdb8472
|
2015-06-03T16:21:33
|
|
Remove unused QualifierAlive traverser
This class is not used anywhere in the code.
TEST=angle_unittests
Change-Id: Ib59573203636a669b136e3823d0abea8120f448e
Reviewed-on: https://chromium-review.googlesource.com/274896
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
2f4823bf
|
2015-06-03T12:39:22
|
|
Revert "Add constant folding support for geometric built-ins"
Breaks Mac build because of C++11 init syntax:
FAILED: /b/build/goma/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/third_party/angle/src/tests/compiler_tests/angle_unittests.ConstantFolding_test.o.d -DV8_DEPRECATION_WARNINGS -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0 -DCHROMIUM_BUILD -DCR_CLANG_REVISION=238013-3 -DCOMPONENT_BUILD -DTOOLKIT_VIEWS=1 -DUSE_LIBJPEG_TURBO=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DUSE_PROPRIETARY_CODECS -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DDONT_EMBED_BUILD_METADATA -DDCHECK_ALWAYS_ON=1 -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_SERVICE_DISCOVERY=1 -DENABLE_WIFI_BOOTSTRAPPING=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DSAFE_BROWSING_SERVICE -DGTEST_HAS_POSIX_RE=0 -DGTEST_LANG_CXX11=0 -DGL_APICALL= -DGL_GLEXT_PROTOTYPES= -DEGLAPI= '-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ "d3dcompiler_47.dll", "d3dcompiler_46.dll", "d3dcompiler_43.dll" }' -DANGLE_TRANSLATOR_STATIC -DUSE_LIBPCI=1 -DUSE_OPENSSL=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen -I../.. -I../../third_party/angle/include -I../../third_party/angle/src -I../../third_party/angle/src/compiler/preprocessor -I../../third_party/angle/src/tests -Igen/angle -I../../testing/gmock/include -I../../testing/gtest/include -isysroot /Applications/Xcode5.1.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -O0 -gdwarf-2 -fvisibility=hidden -Werror -Wnewline-eof -mmacosx-version-min=10.6 -arch x86_64 -Wall -Wendif-labels -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wno-selector-type-mismatch -Wpartial-availability -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -Wno-inconsistent-missing-override -std=c++11 -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics -Xclang -load -Xclang /b/build/slave/GPU_Mac_Builder__dbg_/build/src/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.dylib -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-templates -fcolor-diagnostics -fno-strict-aliasing -fstack-protector-all -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -c ../../third_party/angle/src/tests/compiler_tests/ConstantFolding_test.cpp -o obj/third_party/angle/src/tests/compiler_tests/angle_unittests.ConstantFolding_test.o
../../third_party/angle/src/tests/compiler_tests/ConstantFolding_test.cpp:210:43: error: no matching constructor for initialization of 'std::vector<float>'
ASSERT_FALSE(constantVectorFoundInAST(std::vector<float>{1.0f, 1.0f, 1.0f}));
^ ~~~~~~~~~~~~~~~~~~
BUG=angleproject:913
This reverts commit 2decb4b1557a57a5a74e3ab98d8b25f9fc0f8557.
Change-Id: Iaf3c61a0c0ed591c17f50f2e3eafe2debf588c95
Reviewed-on: https://chromium-review.googlesource.com/274917
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
2decb4b1
|
2015-05-25T19:20:26
|
|
Add constant folding support for geometric built-ins
This change adds constant folding support for following geometric
built-ins:
- length, distance, dot, cross, normalize, faceforward,
reflect and refract.
BUG=angleproject:913
TEST=angle_unittests, dEQP Tests
dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric.*
(56 tests started passing with this change)
Change-Id: I973689554bb8c30ee3ebdf71f1b8a051ceb5e0cf
Reviewed-on: https://chromium-review.googlesource.com/273097
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
5c407bb7
|
2015-06-01T12:20:39
|
|
Work around pow() issue in NVIDIA 331.x drivers
pow(x, y) when y is a certain kind of a constant vector can cause issues on
NVIDIA 331 series drivers. Add an option to replace pow(x, y) with
exp2(y * log2(x)) when y is a constant to work around this issue.
This is done with an AST traverser instead of BuiltInFunctionEmulator, since
there's no mechanism in BuiltInFunctionEmulator to apply the replacements
only to calls where the second parameter is constant.
TEST=WebGL conformance tests
BUG=chromium:477306
Change-Id: Ifb327d72659fca36868439f24705203014b3ce53
Reviewed-on: https://chromium-review.googlesource.com/274279
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
4785fec9
|
2015-05-18T16:09:37
|
|
Clean up most common extra semicolons and braces in HLSL output
Clean up extra semicolons and braces from loops and conditional statements
and extra braces from function definitions.
This makes the HLSL output considerably easier to read.
TEST=angle_unittests, angle_end2end_tests, dEQP-GLES3.functional.shaders.*,
WebGL conformance tests
BUG=angleproject:1013
Change-Id: I8180bab7b3d4bda1cdb8e4fb51cf9d8e384dd797
Reviewed-on: https://chromium-review.googlesource.com/273607
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
4d59f3c6
|
2015-05-28T17:33:53
|
|
Make false blocks produced by RewriteElseBlocks sequence nodes
All child nodes of selection should be sequence nodes, so that they will
output braces and extra braces can be removed from HLSL output.
Also make RewriteElseBlocks to reuse common IntermTraverser functionality
to simplify the code.
TEST=WebGL conformance tests on D3D9
BUG=angleproject:1013
Change-Id: Iafdc05468b22d110abcd020cf52c646dd98fb4a0
Reviewed-on: https://chromium-review.googlesource.com/273608
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
9d0b1f9b
|
2015-05-20T14:27:17
|
|
Constant fold vector relational built-ins
This change adds constant folding support for vector relational
built-ins.
BUG=angleproject:913
TEST=dEQP Tests
dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational*
(Fixes all 138 tests)
Change-Id: I291e332f2afb3ce3d6596e634f509995dbf35164
Reviewed-on: https://chromium-review.googlesource.com/272344
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
4f1af784
|
2015-05-25T11:55:07
|
|
Handle function calls where returned array is not used
This is done by declaring a temporary variable which is passed as the
array out parameter defined by ArrayReturnValueToOutParameter.
SeparateExpressionsReturningArrays takes care of transforming the rest of
the cases where a function call returns an array into form that
ArrayReturnValueToOutParameter can handle.
BUG=angleproject:971
TEST=WebGL 2 conformance tests, dEQP-GLES3.functional.shaders.arrays.*
Change-Id: I70c07712ba5cd91efb4c2e575ecc49b9ef71bfd7
Reviewed-on: https://chromium-review.googlesource.com/273111
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
950457b3
|
2015-05-26T14:36:59
|
|
Fix destructing TStrings through BuiltInFunctionEmulator after free
BuiltInFunctionEmulator gets destructed after the PoolAllocator has already
freed memory. That's why BuiltInFunctionEmulator can't hold any objects that
contain parts stored in the memory pool that would be accessed in its
destructor. Use only pointers to TType objects inside
BuiltInFunctionEmulator, so that the BuiltInFunctionEmulator destructor doesn't
access TStrings which have data in the memory pool.
Also fix style issues in BuiltInFunctionEmulator.
BUG=angleproject:1010
TEST=dEQP-GLES3.functional.shaders.builtin_functions.*
Change-Id: Ic35caf80bf125d0427c2ed2024e98657756103b6
Reviewed-on: https://chromium-review.googlesource.com/272738
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
c378cd8a
|
2015-05-25T15:21:44
|
|
Check that #version 300 es directive is on the first line
ESSL3.00 and 3.10 specs don't allow even newlines before the version
directive.
BUG=angleproject:1009
TEST=WebGL 2 conformance tests, angle_unittests
Change-Id: Id7967829077e35e03572c724e0eafffbed0c975b
Reviewed-on: https://chromium-review.googlesource.com/272719
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
a357236f
|
2015-05-22T16:15:01
|
|
Fix small issues in array related AST transformations
Make sure that user-defined bit stays in place when copying function call
nodes, and that mInFunctionWithArrayReturnValue gets reset correctly in
ArrayReturnValueToOutParameter.
BUG=angleproject:971
TEST=WebGL 2 conformance tests
Change-Id: I385f4ce4990597e44ddad4f0fa6db23b661771dc
Reviewed-on: https://chromium-review.googlesource.com/273110
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
081c3f2e
|
2015-05-25T15:43:35
|
|
Report warning whenever constant folding results are undefined
With recent constant folding changes, we are reporting warnings
whenever constant folding results are undefined for values passed in,
this change adds that warning at all the places where it was missing.
BUG=angleproject:913
TEST=dEQP Tests, angle_unittests
Change-Id: Ief8380488e2a4807c91ddac06d342cb172433b9d
Reviewed-on: https://chromium-review.googlesource.com/272879
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
7e7e68de
|
2015-05-22T12:02:25
|
|
Fix styling issues in ParseContext.cpp
There were lot of styling issues in ParseContext.cpp, mostly related to
opening braces on same line as conditional statement and pointers and
references not being tight to the variable in variable declarations,
this change fixes them.
TEST=angle_unittests
Change-Id: Ia225726254bcf5f315c13054ff41c5ff9cfe0992
Reviewed-on: https://chromium-review.googlesource.com/272846
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
a5316a18
|
2015-05-15T15:25:16
|
|
Separate expressions returning arrays for HLSL output
Complex array expressions need to be broken down in HLSL output so that they
are built out of simple combinations of operations and symbols.
In practice this means that array constructors, array assignments and functions
that return arrays inside complex expressions need to be replaced by symbols.
After this change, ANGLE passes all dEQP-GLES3.functional.shaders.arrays
tests.
The old SimplifyArrayAssignment stub is removed, the new name
SeparateExpressionsReturningArrays more closely reflects what the function
needs to do.
BUG=angleproject:971, angleproject:941
TEST=dEQP-GLES3.functional.shaders.arrays.*, WebGL 2 conformance tests
Change-Id: Iab8dde72b1126dc2f958ffb5b1b830fe3ce25912
Reviewed-on: https://chromium-review.googlesource.com/272122
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
d4f303ee
|
2015-05-20T17:09:06
|
|
Refactoring: Make creating temporary symbols in AST traversal reusable
Temporary symbols will also be needed to store temporary arrays when complex
array expressions are unfolded.
Also clear tree update related structures at the end of updateTree(), so that
the traverser can be reused for several rounds of replacement more easily, and
remove unnecessary InVisit step from UnfoldShortCircuitToIf.
BUG=angleproject:971
TEST=angle_end2end_tests, WebGL conformance tests
Change-Id: Iecdd3008d43f01b02fe344ccde8614f70e6c0c65
Reviewed-on: https://chromium-review.googlesource.com/272121
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
bf790420
|
2015-05-18T17:53:04
|
|
Add constant folding support for more built-ins
This change adds constant folding support for following built-ins:
- atan(two arguments), pow, mod, mix, step and smoothstep.
BUG=angleproject:913
TEST=dEQP tests
Following 80 tests from dEQP-GLES3.functional.shaders.constant_expressions
started passing with this change:
- builtin_functions.angle_and_trigonometry.atan_separate*
- builtin_functions.exponential.pow_*
- builtin_functions.common.mod_*
- builtin_functions.common.mix_*
- builtin_functions.common.step_*
- builtin_functions.common.smoothstep_*
Change-Id: I70f0a8837a82c480da8cff3f1382c6252a486fe4
Reviewed-on: https://chromium-review.googlesource.com/271753
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|