- 19 Nov, 2015 6 commits
-
-
Olli Etuaho authored
WebGL 2.0 explicitly specifies it to be an error when gl_FragData is indexed with anything else than constant zero in spec section 'GLSL ES 1.00 Fragment Shader Output'. This doesn't apply to WebGL 1.0 or GLES. dEQP-GLES2.functional.shaders.fragdata* test that dynamic indexing of gl_FragData is allowed. TEST=angle_unittests BUG=angleproject:1210 Change-Id: Ib401242e7867f5e7943456b059dd8e24dc404098 Reviewed-on: https://chromium-review.googlesource.com/312045Tested-by:
Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org>
-
Olli Etuaho authored
The shader parser used to accept structure definitions in place of constructors, which is invalid GLSL. This patch fixes that. BUG=angleproject:939 TEST=angle_unittests Change-Id: Ibcf502160e91c19e693e9427b548a399d83e2a71 Reviewed-on: https://chromium-review.googlesource.com/312032Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
objectSize() will return the size of all data in the structure, and simply iterating over the data will work for determining whether two structures are equal. The earlier complex and broken approach where the structure was traversed recursively is not needed. BUG=angleproject:1211 TEST=angle_unittests Change-Id: I0e5c5ccbb767d44ef6acb0f1f25f27dfc42866e1 Reviewed-on: https://chromium-review.googlesource.com/312490 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
This prevents accidentally changing data that may be shared between multiple TIntermConstantUnion nodes. Besides making the code less prone to bugs in general, this will make it easier to implement constant folding of array constructors. BUG=541551 TEST=angle_unittests, WebGL conformance tests Change-Id: I4f3059f70b841d9dd0cf20fea4d37684da9cd47e Reviewed-on: https://chromium-review.googlesource.com/312440Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
Indexing interface blocks or fragment outputs with a non-constant expression is not valid even if ANGLE has been able to constant fold the expression. BUG=angleproject:1210 TEST=angle_unittests Change-Id: I2ccb67871b682976a31b8de306053b9b28c06437 Reviewed-on: https://chromium-review.googlesource.com/312044Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Corentin Wallez <cwallez@chromium.org>
-
Frank Henigman authored
gclient is a .bat file on Windows, and subprocess won't run it unless shell=True. BUG=angleproject:1204 TEST=run in Linux and Windows 8 Change-Id: I1f94673f23ef25fe35df64ffd1ad04ed69626ad0 Reviewed-on: https://chromium-review.googlesource.com/312324Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Austin Kinross <aukinros@microsoft.com> Tested-by:
Frank Henigman <fjhenigman@chromium.org>
-
- 18 Nov, 2015 4 commits
-
-
Jamie Madill authored
The State destructor was trying to unref a Program that had already been deleted. Fix this by unbinding resources from State before we exit the test. BUG=554520 Change-Id: I2215b1e5d27a34a649572c8f81e96dfeef7e983e Reviewed-on: https://chromium-review.googlesource.com/312977 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
Previously we would try to pass an entire struct through HLSL's shader interface. Instead, split this off as if each field was its own variable, which seems to be spec compliant (see ESSL 3.10). In the future we may want to fix register packing to use specific components of float4/int4/uint4 HLSL registers. This could also fix the remaining bugs in the SM3 packing. TEST=dEQP-GLES3.functional.shaders.linkage.varying.* BUG=angleproject:910 BUG=angleproject:1202 Change-Id: I1fd8b4505abc39bd2385ed5c088c316d55d0bc2c Reviewed-on: https://chromium-review.googlesource.com/311242Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
In D3D we pack varyings by making a register map, and using the recommended GLSL ES algorithm to reserve register space. We use this map to assign row and column slots to each varying and then produce a semantic index value. The existing scheme had a number of bugs, and was failing several angle_end2end_tests. The new design cleans up the code somewhat and uses a different counting scheme for the semantic indexes: just sort the varyings in packing order and use a simple incrementing semantic index per varying. In SM4+, the HLSL compiler sorts and packs the varyings correctly itself, and in SM3, handle the cases we don't support by returning an error instead of a D3D compiler link error. Also refactor how we store varying information for TF Feedback/ StreamOut. Only store the necessary D3D information, instead of extra information like the name and type. This fixes several tests in GLSLTest/*. This also will allow us to fix interpolation qualifier packing and the structure packing in HLSL, which seems to work differently than the rest of the varying types. BUG=angleproject:1202 TEST=bots,dEQP-GLES3.functional.transform_feedback.* Change-Id: Ie5bfbb4f71d8bf97f39115fc46d2e61b131df639 Reviewed-on: https://chromium-review.googlesource.com/311241Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
This metadata class captures some of our commonly referenced but also complex flats into a shared place. We can then re-use them in the semantic code, the DynamicHLSL linking code, and the program code. Refactoring patch only. BUG=angleproject:1202 Change-Id: I8b6088cfa5488c5173a6f06c15abab5a4ead4cb8 Reviewed-on: https://chromium-review.googlesource.com/311700 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
- 17 Nov, 2015 3 commits
-
-
Frank Henigman authored
Add a script to run "gclient config" and edit the output, since gclient will no longer do what we want. BUG=angleproject:1204 TEST=none Change-Id: I00e214490967e14034c935e051acc39229f27ff7 Reviewed-on: https://chromium-review.googlesource.com/312233Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Frank Henigman <fjhenigman@chromium.org>
-
Corentin Wallez authored
This reverts commit 45a7d64f. Change-Id: I7f94609fc7cf14220d98c61e73a13311d3cc4ecd Reviewed-on: https://chromium-review.googlesource.com/311245 Tryjob-Request: Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
We thought we could rely on GLX_create_context_attrib being present but this is not the case with VM drivers. Instead we fallback to creating contexts with glXCreateContext that doesn't offer control on which version and profile the context will have. Likewise we may not always be able to use the multisample but we can safely assume that the number of samples and sample buffers are zero in this case. BUG=angleproject:1206 Change-Id: I888c69e609764994baf86386c9683b3edeb320f7 Reviewed-on: https://chromium-review.googlesource.com/312230Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
- 13 Nov, 2015 7 commits
-
-
Minmin Gong authored
Passes all ETC1 related dEQP tests on Windows. BUG=angleproject:1212 TEST=dEQP-GLES2.capability.extensions.compressed_texture_formats.GL_OES_compressed_ETC1_RGB8_texture TEST=dEQP-GLES2.functional.texture.format.* TEST=dEQP-GLES2.functional.texture.wrap.* TEST=dEQP-GLES2.functional.texture.filtering.* TEST=dEQP-GLES3.functional.texture.format.compressed.etc1* TEST=dEQP-GLES3.functional.texture.filtering.* Change-Id: I937b039f90161bb5e8777766ea0c032ddfbbf159 Reviewed-on: https://chromium-review.googlesource.com/312416Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tested-by:
Minmin Gong <mgong@microsoft.com>
-
Jamie Madill authored
Re-land with fix for compile errors. Refactoring patch which moves code only. Work and full description will follow in a subsequent CL. BUG=angleproject:1202 Change-Id: Ib7c7dbd32491cdd9512dbecdc0e1e90303d8f28d Reviewed-on: https://chromium-review.googlesource.com/312481 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
Re-reland with a warning fix. We would like to use the EXT_swap_control extension to specify the swap interval of each drawable independently. However open source drivers do not expose this extension and instead expose the MESA and SGI versions that have a global swap interval. This commit changes the code to use the best swap_control extension it can, potentially changing the swap interval on each swap buffers on lesser extensions. BUG=angleproject:1206 Change-Id: I7ecf1eed6808672f277d0242d65f90d7851d2a32 Reviewed-on: https://chromium-review.googlesource.com/312322 Tryjob-Request: Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
This reverts commit a1393c59. Change-Id: I5da0f740a7073f14ad1ee7e2876a9cc71a706e7f Reviewed-on: https://chromium-review.googlesource.com/312231Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
Reland with a compilation fix. We would like to use the EXT_swap_control extension to specify the swap interval of each drawable independently. However open source drivers do not expose this extension and instead expose the MESA and SGI versions that have a global swap interval. This commit changes the code to use the best swap_control extension it can, potentially changing the swap interval on each swap buffers on lesser extensions. BUG=angleproject:1206 Change-Id: I6c24217c7cfd5e09f60469cc7d6336cd68bc5c32 Reviewed-on: https://chromium-review.googlesource.com/312270Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
Reland with a fix for a compilation that happened because of a bad rebase. Previously there was a TODO to check if we supported ES3 before setting the conformant bitfield. Now it is done. BUG=angleproject:1188 Change-Id: I3ef2bd2bc71fb61c465085d32cf08a633904caa6 Reviewed-on: https://chromium-review.googlesource.com/312271Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
Dirk Pranke authored
Without this fix, angle_end2end_tests links fine on Trusty but not on Precise or older versions of Linux (util/linux/LinuxTimer.cpp calls clock_gettime(), which is part of libc on newer versions of the OS but requires -lrt on older versions. GYP had the dependency specified but GN didn't). R=cwallez@chromium.org BUG=432959, 531296 Change-Id: I70e1f701d099f3ba72c7e5dfd7af6d47658ffad9 Reviewed-on: https://chromium-review.googlesource.com/312298Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
- 12 Nov, 2015 7 commits
-
-
Olli Etuaho authored
Sometimes short-circuiting operators need to be unfolded to if statements. If the unfolded operator is inside a loop condition or expression, it needs to be evaluated repeatedly inside the loop. Add logic to UnfoldShortCircuitToIf that can move or copy the unfolded part of loop conditions or expressions to inside the loop. The exact changes that need to be done depend on the type of the loop. For loops may require also moving the initializer to outside the loop. The unfolded expression inside a loop condition or expression is moved or copied to inside the loop on the first traversal of the loop node, and unfolding to if is deferred until a second traversal. This keeps the code relatively simple. BUG=angleproject:1167 TEST=WebGL 2 conformance tests, dEQP-GLES2.functional.shaders.*select_iteration_count* Change-Id: Ieffc0ea858186054378d387dca9aa64a5fa95137 Reviewed-on: https://chromium-review.googlesource.com/310230Reviewed-by:Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Zhenyao Mo <zmo@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
After this patch, ANGLE no longer accepts constructors where any of multiple parameters is sampler or void. Also, structure array constructors with just one parameter are now accepted. Error message for a constructor with no parameters is also more informative than before. BUG=angleproject:1193 TEST=angle_unittests Change-Id: I6b897973448cf500096f612b3b95dcc23aebc716 Reviewed-on: https://chromium-review.googlesource.com/311590Reviewed-by:
Zhenyao Mo <zmo@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Jamie Madill authored
Compile error: c:\b\build\slave\gpu_win_builder\build\src\third_party\angle\src\libangle\renderer\d3d\dynamichlsl.cpp(508) : error C3861: 'getSemanticInfo': identifier not found c:\b\build\slave\gpu_win_builder\build\src\third_party\angle\src\libangle\renderer\d3d\dynamichlsl.cpp(642) : error C3861: 'getSemanticInfo': identifier not found BUG=angleproject:1202 This reverts commit d992cde2. Change-Id: I11f34d2ac4cc047c397e45348cb9502676380be0 Reviewed-on: https://chromium-review.googlesource.com/312480Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
Refactoring patch which moves code only. Work and full description will follow in a subsequent CL. BUG=angleproject:1202 Change-Id: I60346c516209a0517fc2bac38e0d04ff56bcbc3c Reviewed-on: https://chromium-review.googlesource.com/311260Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Olli Etuaho authored
Fixes build on Linux. This reverts commit 46439bae. Change-Id: Ie6da92e3ee6cc535f2c153a12af0aa63f6bea665 Reviewed-on: https://chromium-review.googlesource.com/312442Reviewed-by:
Olli Etuaho <oetuaho@nvidia.com> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
The previous solution for constant folding constructors was significantly overengineered and partially incorrect. Switch to a much simpler constructor folding function that does not use an AST traverser, but simply iterates over the constant folded parameters of the constructor and doesn't do any unnecessary checks. It also reuses some code for constant folding other built-in functions. This fixes issues with initializing constant matrices with only a single parameter. Instead of copying the first component of the constructor parameter all over the matrix, passing a vec4 or matrix argument now assigns the values correctly. BUG=angleproject:1193 TEST=angle_unittests, WebGL conformance tests Change-Id: I50b10721ea30cb15843fba892c1b1a211f1d72e5 Reviewed-on: https://chromium-review.googlesource.com/311191 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Zhenyao Mo <zmo@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
This requires removing the assumption that constant folding implies constness in the constant expression sense from various places in the code. This particularly benefits ternary operators, which can now be simplified if just the condition is a compile-time constant. In the future, the groundwork that is laid here could be used to implement more aggressive constant folding of user-defined functions for example. TEST=angle_unittests BUG=angleproject:851 Change-Id: I0eede806570d56746c3dad1e01aa89a91d66013d Reviewed-on: https://chromium-review.googlesource.com/310750Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com> Reviewed-by:
Zhenyao Mo <zmo@chromium.org>
-
- 11 Nov, 2015 3 commits
-
-
Corentin Wallez authored
Compile error, whoops This reverts commit 10ad877c. Change-Id: Ic8c8b7945c7f702b91fc34ab6862e1aadb3e82e7 Reviewed-on: https://chromium-review.googlesource.com/312260Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
We would like to use the EXT_swap_control extension to specify the swap interval of each drawable independently. However open source drivers do not expose this extension and instead expose the MESA and SGI versions that have a global swap interval. This commit changes the code to use the best swap_control extension it can, potentially changing the swap interval on each swap buffers on lesser extensions. BUG=angleproject:1206 Change-Id: I48e40e443ff9a258fc33b38efb0acf6b1f3db103 Reviewed-on: https://chromium-review.googlesource.com/311244Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
Corentin Wallez authored
Previously there was a TODO to check if we supported ES3 before setting the conformant bitfield. Now it is done. BUG=angleproject:1188 Change-Id: Iffe30ebb5538e205695acd619ca17918d8550f3c Reviewed-on: https://chromium-review.googlesource.com/311690Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Corentin Wallez <cwallez@chromium.org>
-
- 10 Nov, 2015 4 commits
-
-
Jamie Madill authored
Also move this type to D3D-only world. It was only used in the D3D renderer and has specific stuff like register/semantic indexes. Refactoring patch to clean up further work with Varyings. BUG=angleproject:1202 Change-Id: I4b1d6899e9eef356efc7d11e9cd6cf88b234aa76 Reviewed-on: https://chromium-review.googlesource.com/311240Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Jamie Madill authored
Similarly to line loops, we fully unpack the index data into a triangle list. BUG=angleproject:597 Change-Id: Icf91cb77df0a941640e34a975898543e1dac5752 Reviewed-on: https://chromium-review.googlesource.com/310501Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Austin Kinross authored
BUG=angleproject:1190 Change-Id: I38604de469c5f7efaf37bcebf20bc6425df35e62 Reviewed-on: https://chromium-review.googlesource.com/309512Reviewed-by:
Geoff Lang <geofflang@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by:
Austin Kinross <aukinros@microsoft.com>
-
Olli Etuaho authored
Instead of using constructor functions to initialize variables, it is better to use literal initializer syntax provided by HLSL when it is possible. This way shader complexity is reduced and constant array initialization doesn't have to go through as many AST transformations. Before this patch, vec4 initialization would result in the following kind of HLSL: float4 f = float4(1.0, 2.0, 3.0, 4.0); After this patch, it will be: float4 f = {1.0, 2.0, 3.0, 4.0}; Before this patch, vec2 array initialization would result in the following kind of HLSL: float2 f[2] = {0, 0, 0, 0}; angle_construct_into_2_float2(f, float2(1.0, 2.0), float2(3.0, 4.0)); After this patch, it will be: float2 f[2] = {1.0, 2.0, 3.0, 4.0}; BUG=angleproject:1094 BUG=541551 TEST=WebGL conformance tests Change-Id: I9816a8d95a2cba3964922f6b561862d478da6145 Reviewed-on: https://chromium-review.googlesource.com/311160Reviewed-by:Zhenyao Mo <zmo@chromium.org> Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
-
- 09 Nov, 2015 5 commits
-
-
Austin Kinross authored
BUG=angleproject:1207 Change-Id: I425397ca81dfd8be98ffdc5b874d978e7cf7758d Reviewed-on: https://chromium-review.googlesource.com/310194Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tested-by:
Austin Kinross <aukinros@microsoft.com> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
-
Corentin Wallez authored
This reverts commit 26e3736f.
-
Corentin Wallez authored
This reverts commit 24db8644.
-
Corentin Wallez authored
Ideally we want to use EXT_swap_control as the code currently does as it allows us to specify the swap interval of each drawable independently. However open source drivers do not expose this extension and instead expose the MESA and SGI versions that have a global swap interval. This commit changes the code to use the best swap_control extension it can, potentially changing the swap interval on each swap buffers on lesser extensions. BUG=angleproject:1206 Change-Id: I251c6edf400aeeae5359a4370020e74b8e6cae51
-
Corentin Wallez authored
This reverts commit 45a7d64f. Change-Id: I2a8212c7507a7566baca200ed938d9e00f7103c2
-
- 06 Nov, 2015 1 commit
-
-
Corentin Wallez authored
This reverts commit 2df979ed. Change-Id: Iff4ec858b8f42a4749cfc55749eb8f57b419f98f Reviewed-on: https://chromium-review.googlesource.com/311271Tested-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Tryjob-Request: Corentin Wallez <cwallez@chromium.org>
-