src


Log

Author Commit Date CI Message
Corentin Wallez 11cd6af6 2015-08-18T15:54:01 Revert "Make the default framebuffer owned by Surface" Compilation warning on Windows This reverts commit 6cb2ae8292e69aa110c89e0465366b9f049c1168. Change-Id: I4ecadf5d8e909f986da186a7326cfa0922ae8710 Reviewed-on: https://chromium-review.googlesource.com/294241 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 6cb2ae82 2015-08-12T12:39:52 Make the default framebuffer owned by Surface Reland with a fix for SurfaceTest in angle_unittests and fixes for signed-unsigned warnings In CGL there is no notion of default Framebuffer and MakeCurrent only makes a context current but not a drawable. Instead, everything is done via render to texture. For that reason, different surfaces will have different FBOs as default framebuffers, which causes that change. BUG=angleproject:891 Change-Id: Ie9a72de01a58e583a1bfa3f4a055debb860b912f Reviewed-on: https://chromium-review.googlesource.com/293713 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill e473deee 2015-08-18T14:49:01 Clean up uniform block Program Impl APIs. The D3D-specific code we can split into D3D-only methods, and the GL-level shared code we can place in Program instead of making Impl methods. This cleans up the Impl inteface significantly. BUG=angleproject:1123 Change-Id: Ibcb7d07733eb939adf5bb4f5395a661875a60238 Reviewed-on: https://chromium-review.googlesource.com/293763 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 39939686 2015-08-18T10:37:22 Fix improper error handling in Image11. A device lost event would improperly skip returning an error, which could lead us down a code path that would read/write to invalid locations. BUG=519642 Change-Id: Iba437b9b24cdf44320a944a85146f5f73be9f7a6 Reviewed-on: https://chromium-review.googlesource.com/293903 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill ea918db9 2015-08-18T14:48:59 Clean up Program::linkUniforms. This method previously relied on output from the D3D back-end from ProgramImpl::link. Split the D3D-specific code into its own method, and do the linking validation before we call link. BUG=angleproject:1123 Change-Id: I582671e21af605af9f4451b02fc96ad29c923048 Reviewed-on: https://chromium-review.googlesource.com/293762 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 70022972 2015-08-18T17:53:00 Revert "Work around deprecated LUMA formats in the core profile." Caused failures in the WebglConformance.conformance_textures_misc_copy_tex_image_2d_formats test on the ATI FYI waterfall bot. This reverts commit 61f51dc1b7d383bcb3632218cd2434f65cac4b7a. Change-Id: Iddea03d53ae2a9b639e36931f01c1e889e550af4 Reviewed-on: https://chromium-review.googlesource.com/294262 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Nico Weber 1e949799 2015-08-18T09:58:23 Fix build after https://chromium-review.googlesource.com/#/c/293865 Change-Id: I691d80deff03b49463b08d093934b44b049a0606 Reviewed-on: https://chromium-review.googlesource.com/294163 Reviewed-by: Nico Weber <thakis@chromium.org> Tested-by: Nico Weber <thakis@chromium.org>
Nico Weber 33d71f58 2015-08-18T09:31:59 Rename TextureD3D::setImage() to setImageImpl(). This makes it clear that this is not an attempted override of the virtual base class's method rx::TextureImpl::setImage(). Do the same for TextureD3D::setCompressedImage(). No intended behavior change. BUG=angleproject:1083 Change-Id: I874e4101e8138c7c5000f5966afed6a339523c02 Reviewed-on: https://chromium-review.googlesource.com/293865 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Nico Weber <thakis@chromium.org>
Austin Kinross a818776e 2015-08-12T10:54:37 Fix warning C4312 (x64) - reinterpret_cast conversion to greater size Change-Id: I90504b00e8f3af208511ec393ddfb0da267f56bc Reviewed-on: https://chromium-review.googlesource.com/293341 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Austin Kinross <aukinros@microsoft.com>
Cooper Partin 66d6313e 2015-08-13T10:22:42 Add target platform version for generating Windows 10 WinRT projects BUG=angleproject:1122 Change-Id: Ia6a79ef1b4e94e15830981f0cee6269c9f0c71ca Reviewed-on: https://chromium-review.googlesource.com/293401 Tested-by: Cooper Partin <coopp@microsoft.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f4e794ec 2015-08-12T14:10:36 In TextureD3D_2D, don't call Image::redefine directly. Call the TextureD3D_2D::redefine member which will not make unnecessary modifications to the image and lets the member serve as a callback for redefined images. BUG=angleproject:970 Change-Id: I511310ebfd4d6133219bbef82c53747f9454aee0 Reviewed-on: https://chromium-review.googlesource.com/293904 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 87d3fe04 2015-08-18T14:38:43 Revert "In TextureD3D_2D, don't call Image::redefine directly." Warnings in 64-bit. This reverts commit a0633a7e4124473d67538053cba3ebdc44f71687. Change-Id: I5b3f31b261b947cd295e9f4a9abbbdbc00740183 Reviewed-on: https://chromium-review.googlesource.com/293841 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang a0633a7e 2015-08-12T14:10:36 In TextureD3D_2D, don't call Image::redefine directly. Call the TextureD3D_2D::redefine member which will not make unnecessary modifications to the image and lets the member serve as a callback for redefined images. BUG=angleproject:970 Change-Id: I280c18b993ef4dfac2efe1b28bf28c34aa4b6bcc Reviewed-on: https://chromium-review.googlesource.com/293222 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 61f51dc1 2015-08-13T16:16:56 Work around deprecated LUMA formats in the core profile. Use R and RG textures with swizzle states to emulate them. Fixes the following tests when using the core profile: * conformance/extensions/oes-texture-float.html * conformance/extensions/oes-texture-half-float.html * conformance/textures/misc/tex-sub-image-2d.html * conformance/textures/misc/texture-formats-test.html * conformance/textures/misc/texture-npot.html * conformance/more/functions/copyTexImage2D.html * conformance/more/functions/copyTexSubImage2D.html BUG=angleproject:1113 Change-Id: Iaf4b7b2b0000052b1747f46d90ad45d4cb1f6b50 Reviewed-on: https://chromium-review.googlesource.com/293530 Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 51706eae 2015-08-07T14:39:22 Make FramebufferAttachmentObject not refcountable Re-land with a fix for an unitialized variable Instead the refcount is done via callbacks. This allows Surface to ignore this refcounting which will be useful in a follow-up CL. BUG=angleproject:891 Change-Id: I1925ccaa4ce7b502b33088660d31c404b8313cb5 Reviewed-on: https://chromium-review.googlesource.com/293712 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill ada9ecc3 2015-08-17T12:53:37 Make TF Feedback buffer mode a GL-level variable. Don't query this as an Impl method, since it exists on the GL level. Also some related refactorings and cleanups. BUG=angleproject:1123 Change-Id: I3610bc0db2bcaa96408506e06a65a2f4dab93150 Reviewed-on: https://chromium-review.googlesource.com/293761 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5c6b7bfe 2015-08-17T12:53:35 Add a Program::Data shared state structure. Similar to the Framebuffer and other classes, this gives the Impl class a read-only view of the object's state. BUG=angleproject:1123 Change-Id: I580eaebe2de236adf8131d6e3f54633cecce8c25 Reviewed-on: https://chromium-review.googlesource.com/293760 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 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>
Olli Etuaho 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>
Corentin Wallez f0435bc8 2015-08-17T11:24:37 Surface_unittest: fix a gmock warning getSwapBehavior was being called in Surface's constructor but masn't expected, causing a warning. Add it as an expect call. BUG=angleproject:1126 Change-Id: Idf4a7e0ff66ba5741d3773e09ade4a1335b355ae Reviewed-on: https://chromium-review.googlesource.com/293902 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 0b9e9032 2015-08-17T11:51:52 Revert "Revert "Implement dirty bits acceleration for VertexArrayGL."" Should be fixed with the Iterator change. BUG=angleproject:1040 This reverts commit 5b21ed5fd030d33ae379b8cc493746244d2928b4. Change-Id: Ibb77775b6b2ce5a49cee7dd81efc62d8c3ba3c62 Reviewed-on: https://chromium-review.googlesource.com/293901 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill b3a60aa9 2015-08-14T14:44:06 Store iterator bitset by-value instead of by-reference. The by-reference method was giving strange problems when using a non- LValue as argument to IterateBitSet. BUG=angleproject:1040 Change-Id: Iec10f7256a5b19b239804e0beba4ae675f53f876 Reviewed-on: https://chromium-review.googlesource.com/293840 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 5b21ed5f 2015-08-14T18:12:50 Revert "Implement dirty bits acceleration for VertexArrayGL." Seems to cause an exception in Release, in end2end_tests. BUG=angleproject:1040 This reverts commit 6d51c70ccf63a2c5ec240d960ff1bc179d36c92c. Change-Id: I6548bc68dce07d2d85e40afdb604157e689c1d6c Reviewed-on: https://chromium-review.googlesource.com/293821 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6d51c70c 2015-08-14T10:38:10 Implement dirty bits acceleration for VertexArrayGL. BUG=angleproject:1040 TEST=angle_end2end_tests,angle_perftests,WebGL Change-Id: I91d9aea5eefb58ecaf5b1cc95926fddb2aa846ea Reviewed-on: https://chromium-review.googlesource.com/289570 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Austin Kinross 5cf0f982 2015-08-12T09:35:10 Reland "Fix memory layout of imageformats.h's 16-bit structs" Changes since last patch: - Disable tests on D3D11 Intel Change-Id: Ie65f56b7ed107f8901ea3be7d96036d7c882d189 Reviewed-on: https://chromium-review.googlesource.com/285218 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Austin Kinross <aukinros@microsoft.com>
Olli Etuaho 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>
Olli Etuaho 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>
Nico Weber 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>
Olli Etuaho 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>
Olli Etuaho 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>
Olli Etuaho 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>
Geoff Lang bc384230 2015-08-13T15:24:20 Revert "Add tests for streaming client side data." This reverts commit 656b0d45cd4758be67202aded9783d536b00e611. Change-Id: I0b6ad5e1fa788ffc698029410aa98e13a061902d Reviewed-on: https://chromium-review.googlesource.com/293450 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 6238e353 2015-08-12T13:26:19 Generate the egl Display extensions in Renderer9 and Renderer11. With the addition of EGL Image, the display extensions generated by Renderer9 and Renderer11 become significantly different. Instead of generating them via getXSupport() methods, generate them inside the renderers themselves. BUG=angleproject:970 Change-Id: Ib3fffabcca3e3cdef13ef994aa0b06dba0f00362 Reviewed-on: https://chromium-review.googlesource.com/293271 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang bbc02470 2015-08-12T13:21:36 Add a common base function for getSurfaceLevel in TextureStorage9. Instead of casting to the specific TextureStorage9 type before calling getSurfaceLevel, merge the prototypes into a pure method in TextureStorage9. BUG=angleproject:970 Change-Id: I07b24b6cc470fc8cb6ba9bd9a8f178c3b43be36a Reviewed-on: https://chromium-review.googlesource.com/293270 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 656b0d45 2015-08-12T11:51:23 Add tests for streaming client side data. BUG=angleproject:880 Change-Id: Ief76f3011ce18ad0ca396af0bc36e69a30ae143b Reviewed-on: https://chromium-review.googlesource.com/293220 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Cooper Partin 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>
Austin Kinross fd00ccff 2015-08-12T10:19:46 Disable some VS2015 warnings for dEQP projects Change-Id: I036084b2fea20d4f1712bc34b161fb3be604af0d Reviewed-on: https://chromium-review.googlesource.com/293009 Tested-by: Austin Kinross <aukinros@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 0020426e 2015-08-12T19:07:29 Revert "Make FramebufferAttachmentObject not refcountable" BUG= This reverts commit 19ba57469aa02074d094a9aef104f84d0b6d881e. Change-Id: I5dce6c8a81570e22affbcaf32183a97c97849718 Reviewed-on: https://chromium-review.googlesource.com/293351 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 1bf40bfe 2015-08-12T15:52:04 Revert "Make the default framebuffer owned by Surface" This reverts commit 87e63a9982803b5e4c12afa9a40ff0e2b04a7369. Speculative revert to fix the webgl cts on Windows D3D9 and the unittests on Linux. BUG= Change-Id: I488f4e0b2dc67270eed45f1c10bfba1d13c98739 Reviewed-on: https://chromium-review.googlesource.com/293350 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 87e63a99 2015-08-12T12:39:52 Make the default framebuffer owned by Surface In CGL there is no notion of default Framebuffer and MakeCurrent only makes a context current but not a drawable. Instead, everything is done via render to texture. For that reason, different surfaces will have different FBOs as default framebuffers, which causes that change. BUG=angleproject:891 Change-Id: I3f6da7b587353316026ea39a5c87f91265e0f1ba Reviewed-on: https://chromium-review.googlesource.com/289872 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 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>
Corentin Wallez 19ba5746 2015-08-07T14:39:22 Make FramebufferAttachmentObject not refcountable Instead the refcount is done via callbacks. This allows Surface to ignore this refcounting which will be useful in a follow-up CL. BUG=angleproject:891 Change-Id: I39b028476e0e3ab1837c033e1121ea21e54d7970 Reviewed-on: https://chromium-review.googlesource.com/291651 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 18a2fb3a 2015-08-10T12:58:14 ValidateDrawElements: check count > 0 then compute the index range Otherwise glDrawElements(GL_TRIANGLES, -1, nullptr) would crash. This was found by an ASSERT in ComputeIndexRange triggered by dEQP-GLES2.functional.negative_api.vertex_array.draw_elements BUG= Change-Id: I5269031fa35aa6403c844561e04158361ee7950f Reviewed-on: https://chromium-review.googlesource.com/292710 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 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>
Nico Weber 61902ece 2015-07-25T20:12:23 clang/win: Fix -Wunused-function warning in angle. Also inline a function that wasn't pulling its weight. No intended behavior change. BUG=chromium:505316 Change-Id: If059700062a38c45971397311af7a2a4037b815e Reviewed-on: https://chromium-review.googlesource.com/288399 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Nico Weber <thakis@chromium.org>
Olli Etuaho 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>
Olli Etuaho 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>
Jamie Madill 77a90c26 2015-08-11T16:33:17 Reland of "Store the applied element array buffer as a binding pointer." To be consistent with how we start vertex attributes. A null pointer indicates we're using the streaming buffer. Will also aid the dirty state bits refactor. The re-land fixes a crash with WebGL related to element array buffers. BUG=angleproject:1040 TEST=WebGL CTS, end2end_tests, unittests Change-Id: I9b82e06825bf95f0fc2b7c7427e1eb6dd257c1ee Reviewed-on: https://chromium-review.googlesource.com/290044 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Cooper Partin 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>
Olli Etuaho 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>
Geoff Lang b4b0b482 2015-08-11T13:45:52 Fix missing and incorrect ordering of FunctionsWGL member initialization. BUG=angleproject:890 Change-Id: Id55d941a95cf38f825b9a52fc8043e0e129f7a82 Reviewed-on: https://chromium-review.googlesource.com/292631 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Cooper Partin 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>
Cooper Partin b459fb04 2015-08-07T16:12:39 Fixed compiler warning C4456 'declaration of variable hides previous local declaration'. BUG=angleproject:1119 Change-Id: I99572711ceeae94fb920d197c86e741945d3b60b Reviewed-on: https://chromium-review.googlesource.com/292279 Tested-by: Cooper Partin <coopp@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cooper Partin 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>
Jamie Madill 1e0bc3ad 2015-08-11T08:12:21 Implement dirty bits acceleration for Current Values. BUG=angleproject:1040 TEST=angle_end2end_tests,angle_perftests,WebGL Change-Id: If471cfb9676795d5cc985eea52ad7144d4544ed1 Reviewed-on: https://chromium-review.googlesource.com/289559 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3dfcdcb6 2015-08-10T14:28:54 D3D: Fix buffer overflow in VertexBuffer.cpp. Under certain situations an integer overflow could lead to ANGLE writing to places where it shouldn't. BUG=518206 Change-Id: I9217685daecb160a4072fbf79c26e5bee9f4621e Reviewed-on: https://chromium-review.googlesource.com/292391 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill bd136f9a 2015-08-10T14:51:37 Reland of "D3D11: Fix draw perf regression with input layouts." f8dd7b10 fixed unnecessary shader compiles, but introduced a draw call perf regression. Fix the regression robustly by storing a minimal set of input layout elements/vertex attribute info, but also handle the case where the vector sizes mismatch between a cached and new vertex layout. Reland with fix for comparison warning. BUG=510151 Change-Id: I578ddbb5b5bb12e7c1a901f23c7b5fcbd64b5d23 Reviewed-on: https://chromium-review.googlesource.com/292460 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 00c782e8 2015-08-10T17:54:30 Revert "D3D11: Fix draw perf regression with input layouts." size_t comparison warning in Win32. src\libangle\renderer\d3d\programd3d.cpp(2084) : warning C4018: '<' : signed/unsigned mismatch BUG=510151 This reverts commit bf3f780c0a281cfe6192aa5635b02a01314f7fd3. Change-Id: I5565b697ca29270375049f3e855437fa19157de9 Reviewed-on: https://chromium-review.googlesource.com/292331 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill bf3f780c 2015-08-10T10:47:57 D3D11: Fix draw perf regression with input layouts. f8dd7b10 fixed unnecessary shader compiles, but introduced a draw call perf regression. Fix the regression robustly by storing a minimal set of input layout elements/vertex attribute info, but also handle the case where the vector sizes mismatch between a cached and new vertex layout. BUG=510151 Change-Id: If5e9ea4a4c9edaa7a78c8daa44bbe7d9927dc4e4 Reviewed-on: https://chromium-review.googlesource.com/292390 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 14ecb13f 2015-08-10T11:06:04 libGLESv2.gypi move the link to X11 to libANGLE (vs. libGLESv2) This fixes a bot compilation failure that started happening after unittest started using Display stuff that use X11. Because angle_unittests was linking against libANGLE and not libGLESv2, it didn't get linked to X11, which produced a link error. BUG= Change-Id: I8f1f0dbcb13bb7c9897f235b72c4d4896a7b8a6c Reviewed-on: https://chromium-review.googlesource.com/292380 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Kimmo Kinnunen 19b890af 2015-08-07T15:01:04 Import new MurmurHash3 to fix g++ 4.9.2 errors The code is from http://smhasher.googlecode.com/svn/trunk/ revision 152. Fixes error: ../../src/third_party/murmurhash/MurmurHash3.cpp:57:41: error: inlining failed in call to always_inline ‘uint32_t getblock(const uint32_t*, int)’: function body can be overwritten at link time FORCE_INLINE uint32_t getblock ( const uint32_t * p, int i ) The error was previously fixed by adding a pragma to ignore the warning. The problem the compiler is complaining is that the function is visible to outside of the compilation unit. This can be fixed by making the function inline (as in the new version of the MurmurHash3.cpp) or static. Change-Id: I7a1262964489d72de8b4707ca2284363c8b46e20 Reviewed-on: https://chromium-review.googlesource.com/291620 Tested-by: Kimmo Kinnunen <kkinnunen@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Dongseong Hwang <dongseong.hwang@intel.com> Tested-by: Dongseong Hwang <dongseong.hwang@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 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>
Olli Etuaho 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>
Geoff Lang 45808a17 2015-08-07T13:05:12 Use WGL_ARB_pixel_format to choose the pixel format when available. BUG=angleproject:890 Change-Id: If10ea7e1cb670bb3cd6fdcf40344d1c1e0acd862 Reviewed-on: https://chromium-review.googlesource.com/291650 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1b94d432 2015-08-07T13:23:23 Implement dirty bits for RendererGL's basic state. BUG=angleproject:1040 TEST=angle_end2end_tests,angle_perftests,WebGL Change-Id: I72beaf7e178e042440337fbb8b9669638c5ad016 Reviewed-on: https://chromium-review.googlesource.com/289558 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 519a5be2 2015-07-23T11:07:29 Update ANGLE's GPU test expectations code. Pull over the more recent changes from Chromium which include the graphics API, which we can use for specific API suppressions for the dEQP tests. Also update the docs with detailed steps for updating from Chrome. BUG=None Change-Id: I0cb7d8268fbb2778c0160a58f1a10ef4a92c9c61 Reviewed-on: https://chromium-review.googlesource.com/287810 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Kimmo Kinnunen 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>
Corentin Wallez 3574c614 2015-08-07T10:37:24 Fix warnings caused by gmock on linux When mocking functions gmock uses the keyword virtual instead of override and this conflicted with our usage of override for the destructor (there is a warning for using all one or the other). BUG= Change-Id: I9dd9204d5755dd3a588a32d438de3c1018ba07cd Reviewed-on: https://chromium-review.googlesource.com/291630 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez b44440d8 2015-07-22T17:54:20 ANGLETest::SetUp: resize the window only if needed. This avoids a flickering of the window at the start of every test. Reland with a speculative fix for ViewportTest BUG=angleproject:1105 Change-Id: I83e89881de5b6f58cfb3e14cbe324fd9547f2836 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/288533 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez b4191c3e 2015-08-06T10:29:12 ViewportTest::SetUp set the scissor to the default value Previously ViewportTest would rely on the scissor being set to the size of the window by default, which is a fragile assumption as the scissor is set to the size of the window only on the first makeCurrent. BUG=angleproject:1105 Change-Id: I088565c7032fe817eb5c48a5351cc678fe42b376 Reviewed-on: https://chromium-review.googlesource.com/291310 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill f8dd7b10 2015-08-05T13:50:08 Refactor input layout & vertex signatures. Always size input layouts to gl::MAX_VERTEX_ATTRIBS, and use '1' bits to signal where we have a GPU conversion. The simplification allows us to more cleanly match the vertex executable signatures and makes our default VertexExecutable hit much more often. BUG=510151 TEST=angle_end2end_tests,Canary WebGL, manual testing with Chromium Change-Id: I5009323c4e7e208e7a2595be46658c344517a4ff Reviewed-on: https://chromium-review.googlesource.com/290740 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang a840617a 2015-07-21T16:53:39 Implement the egl and gl layers of EGL Image. Add end2end tests and unittests. BUG=angleproject:970 Change-Id: Ie8306971730a793f08dfd09ead1bfd6ff3e4623d Reviewed-on: https://chromium-review.googlesource.com/291260 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 4274f7d2 2015-08-05T23:07:38 Revert "Implement the egl and gl layers of EGL Image." This reverts commit 22a4f38c2ca9ca430b5f976fc7fc816d88918eba. Change-Id: I07acbfe28d11675236de2ea7f6b050c25f80579a Reviewed-on: https://chromium-review.googlesource.com/290960 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 35ab4299 2015-08-05T23:05:54 Revert "Fix warnings on gcc builds in ImageTest.cpp." This reverts commit 52ff4ac92ef5dfe77e14221726a0f0ab57dc57d5. Change-Id: I11ec6e7e343dd6579f7aa13106facc65b05eb795 Reviewed-on: https://chromium-review.googlesource.com/290940 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 52ff4ac9 2015-08-05T18:20:44 Fix warnings on gcc builds in ImageTest.cpp. BUG=angleproject:970 Change-Id: Ic7f451fb4c2378c7574ede7c513a5bb9d903c908 Reviewed-on: https://chromium-review.googlesource.com/290920 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 22a4f38c 2015-07-21T16:53:39 Implement the egl and gl layers of EGL Image. Add end2end tests and unittests. BUG=angleproject:970 Change-Id: I13fc501b24c3f11bfedc810c1ff80fcf1318877c Reviewed-on: https://chromium-review.googlesource.com/287343 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 6b2a0b0c 2015-08-03T14:15:08 Reland of "Add Iterable bitset class." This helper allows us to quickly iterate state bits from the Impl/Renderer layers. Re-land with no C++11 usage. BUG=angleproject:1040 TEST=angle_unittests (Mac/Win/Linux) Change-Id: I3b6d5beb2bcff7fa3d45c9220d7c026c64c45d2e Reviewed-on: https://chromium-review.googlesource.com/290153 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 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>
Corentin Wallez ef1eb273 2015-08-03T10:14:44 DisplayGLX: factor redundant getFBConfigAttribs This is very tiny code cleanup and is a noop behavior change. BUG= Change-Id: Ib850ff88eafa0bd45bb389de1b74b1e9fe4c6d8b Reviewed-on: https://chromium-review.googlesource.com/290146 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 6ab01b9a 2015-08-03T10:16:36 FramebufferGL: Add a member to know if we are the default FBO On CGL, the default framebuffer will have a name different than 0 and without this change it wouldn't get special-cased as on the other platforms. It is assumed that the default framebuffer will get initialized directly by the driver or other parts of the code. BUG=angleproject:891 Change-Id: Ifbe4ada58f27ad9ddb5b43697c234cb17e7504f0 Reviewed-on: https://chromium-review.googlesource.com/290147 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 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>
Corentin Wallez 5d65cd56 2015-07-30T09:47:39 Surface: query swapBehavior from the Impl All the previously implemented surfaces used to preserve the content of the surface on a swap but this is no longer the case with CGL. BUG=angleproject:891 Change-Id: I264c579bcbbd22b4eeb09e78aa95751d223694fc Reviewed-on: https://chromium-review.googlesource.com/289871 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill afe44c41 2015-07-31T16:54:31 D3D: Add timer histogram for D3DCompile. BUG=516027 Change-Id: Ibbf45c863570581ea79e198604cd4c5cc1836620 Reviewed-on: https://chromium-review.googlesource.com/289996 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ef41279c 2015-07-31T16:44:38 Add scoped timer histogram helper macros. These macros replace a lot of repeated timing code, and mirror how Chromium operates. BUG=516027 Change-Id: Ib03e35d0f3b8638b9b0e8785c397c8381f16b041 Reviewed-on: https://chromium-review.googlesource.com/289995 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez ea1be878 2015-07-30T07:04:13 Change the NSGL skeleton to be a CGL skeleton The previous skeleton was name NSGL because it seemed the easier route to go, however Chrome uses CGL internally, which we want to match. BUG=angleproject:891 Change-Id: I00eb597080c8b735545750dfcd6ad80dcea79300 Reviewed-on: https://chromium-review.googlesource.com/289870 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 9988a028 2015-08-03T12:46:45 Revert "Add Iterable bitset class." std::to_ullong is c++11, failing on Mac. BUG=angleproject:1040 This reverts commit 37a9e71246e2a3343289267e5d7e123948924bd3. Change-Id: I5cecd1fe95b889feffb556f67d082cec585256f4 Reviewed-on: https://chromium-review.googlesource.com/290211 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 37a9e712 2015-07-30T11:21:55 Add Iterable bitset class. This class allows us to quickly notify Impl/Renderer layers of which state changed. BUG=angleproject:1040 TEST=angle_unittests (Mac/Win/Linux) Change-Id: I2f27bc65b4f627a261e94e3e3b7095b169986cc6 Reviewed-on: https://chromium-review.googlesource.com/289557 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill b70b63e8 2015-07-30T15:28:19 Add trace event for D3DCompile. Adds more profiling help for startup shader compiles in Chrome. BUG=510151 Change-Id: I550b55b1280542d1eaab9ed6166387b663cafffe Reviewed-on: https://chromium-review.googlesource.com/290091 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jeff Muizelaar d17c016b 2014-10-27T14:10:35 Add support for RESOURCE_MISC_SHARED_KEYEDMUTEX Change-Id: I225f38b4616ac47e690dccbcb67074fedc571d61 Reviewed-on: https://chromium-review.googlesource.com/225642 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 2e5797e3 2015-07-29T16:20:28 Log EGL initialize errors to the platform. This will allow us to show more extended error info in about:gpu in Chromium. BUG=angleproject:966 BUG=515229 Change-Id: I24c8f33ac3576395ff13dbf7f4664c649af18e33 Reviewed-on: https://chromium-review.googlesource.com/289590 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 2e5b500c 2015-07-30T17:40:29 Revert "Store the applied element array buffer as a binding pointer." This reverts commit 0018c85ea45090b5de61d4be1fbfbf96a3cde48b. Change-Id: Ieab61c0a4cd1b24d606263e9bf2bae31ea2e8ac4 Reviewed-on: https://chromium-review.googlesource.com/289486 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 0018c85e 2015-07-30T10:57:46 Store the applied element array buffer as a binding pointer. to be consistent with how we start vertex attributes. A null pointer indicates we're using the streaming buffer. Will also aid the dirty state bits refactor. BUG=angleproject:1040 TEST=WebGL CTS, end2end_tests, unittests Change-Id: I7a9167282b60dbe0cbb9f0e5d9e3770890ffeb71 Reviewed-on: https://chromium-review.googlesource.com/284619 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 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>
Geoff Lang 385a1d31 2015-07-29T16:45:12 Fix reference leak in Blit9. BUG=angleproject:1111 Change-Id: I0c71b765e8589a7387f4fd40f9dc453ed06c05b9 Reviewed-on: https://chromium-review.googlesource.com/289591 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill cce24e9c 2015-07-29T15:14:29 dEQP-GLES2: Reland of "Skip flush/finish test on Windows." This test is having flaky timeouts on the bots. Disable it for now. The re-land fixes the test syntax, and ensures we will see any errors in test config as test failures on the bots. BUG=angleproject:1107 TEST=angle_deqp_gles2_tests runs Change-Id: Ia4fa8affb70e4474d8e43ff87ee86328aa47ebeb Reviewed-on: https://chromium-review.googlesource.com/289580 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 79d059f8 2015-07-28T15:03:28 Fix uniform array handling in ProgramGL. Our validation wouldn't correctly handle single-element arrays because it was checking size > 1 instead of isArray(). This caused issues in ProgramGL on some drivers that optimized the array size (AMD) if some elements were unused. BUG=angleproject:882 Change-Id: I417d13cd86380e2c6caa688f6398709a74692e21 Reviewed-on: https://chromium-review.googlesource.com/289201 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Arun Patole 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>
Jamie Madill 6db9adac 2015-07-29T19:13:10 Revert "dEQP-GLES2: Skip flush/finish test on Windows." Incorrect syntax is making the bots skip all tests. BUG=angleproject:1107 This reverts commit e8c8de2da7907579dd25273bbb422143586e79b1. Change-Id: I4469b6b320f8754af576875128e4e3fb210c67b6 Reviewed-on: https://chromium-review.googlesource.com/289501 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1747603e 2015-07-29T09:54:40 Remove compiler_tests.gypi and preprocessor_tests.gypi. These files were a relic of a previous structure, we can safely remove them now that chrome uses angle_unittests.gypi. BUG=None TEST=compiles standalone and with chromium Change-Id: If9a09122f664b740099b4270f5acc5627fc5ac35 Reviewed-on: https://chromium-review.googlesource.com/289343 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang aadf5117 2015-07-29T01:21:20 Fix incorrect extension check. BUG=angleproject:884 Change-Id: Ia201ac60e337fd45ef72cc254bcb36d333418613 Reviewed-on: https://chromium-review.googlesource.com/289333 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>