Log

Author Commit Date CI Message
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>
Tomasz Moniuszko 319fb898 2015-07-30T14:34:54 Use default commit.h file if git index is not available The solution is the same as in GYP version: 1. Check if .git/index is available in angle directory. 2. Use generated commit.h file if git is available or copy the default file instead. Change-Id: Ic3cedf6793c368070228a63c0eb270ca6fb47f81 Reviewed-on: https://chromium-review.googlesource.com/289391 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Tomasz Moniuszko <tmoniuszko@opera.com>
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 8168b4bd 2015-08-07T16:02:10 Fixed compiler warning C4838 'conversion from size_t to LONG requires a narrowing conversion'. BUG=angleproject:1119 Change-Id: I2c879193dc122e6c45d0462abc91f39f5d332506 Reviewed-on: https://chromium-review.googlesource.com/292156 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>
Geoff Lang 194814e3 2015-08-10T14:34:46 Fix missing colon in codereview.settings. BUG=504872 Change-Id: Ib69830a556fe06c111f41d78811c7115b0d8314c Reviewed-on: https://chromium-review.googlesource.com/292450 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@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>
Geoff Lang c384d2a3 2015-07-31T10:45:06 Add the tryserver properties to the codereview.settings file. BUG=504872 Change-Id: I44b619f15e46cb3a6a3d95fd81c999d612d60184 Reviewed-on: https://chromium-review.googlesource.com/290090 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@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>
Corentin Wallez ac319fcc 2015-07-28T16:48:55 EGLContextCompatibility: remove suppression BUG=angleproject:1109 Change-Id: I551dbf79b98798f06fd5cbe1b005dc2410daaa6b Reviewed-on: https://chromium-review.googlesource.com/289274 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 9bcfe672 2015-07-28T16:44:52 DisplayGLX::generateConfigs filter by MS and Accum buffers FBConfigs where missing some filtering that wasn't needed on NVIDIA: the multisample and accumulation buffers must be the same as the context's config otherwise glXMakeCurrent will fail. See FBConfigCompatibility.md for more details. BUG=angleproject:1109 Change-Id: Ied3336f9f5227594b143c884c4546fd603238b47 Reviewed-on: https://chromium-review.googlesource.com/289273 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez b2e33b90 2015-07-28T13:06:35 X11Window::initialize remove a small code redundancy BUG= Change-Id: Id5f98332129b3cc854254187b494bf6a97921dbd Reviewed-on: https://chromium-review.googlesource.com/289272 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 23a2ae0c 2015-07-28T12:42:52 Centralize GL format workarounds. Instead of trying to encapsulate the GL texture format workarounds into tables, use functions that do manual checks for specific cases. Simplifies the logic. Fixes: * conformance/extensions/ext-sRGB.html * conformance/extensions/oes-texture-half-float.html * conformance/extensions/oes-texture-half-float-with-canvas.html * conformance/extensions/oes-texture-half-float-with-image.htm * conformance/extensions/oes-texture-half-float-with-video.html BUG=angleproject:884 Change-Id: Ifb719fff908680fddc7c53a544e2284a42a58356 Reviewed-on: https://chromium-review.googlesource.com/289082 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez cbdf7366 2015-07-21T15:47:47 Add DebuggingTips.md with a tip about using apitrace BUG=angleproject:892 Change-Id: I0999b0d3b043d412c092350f7d20560cb8b87ff7 Reviewed-on: https://chromium-review.googlesource.com/287450 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 14389ccf 2015-07-23T10:57:20 Always use sized internal formats for textures in TextureGL. On desktop GL, using an internal format of GL_RGBA produces GL_RGBA8 textures even if format is set to GL_FLOAT. Use sized internal formats whenever possible to ensure that the internal format of the texture is the expected format. Work around issues with Intel and AMD drivers that always round up when writing to a 1-bit alpha framebuffer format. Fixes: * conformance/extensions/oes-texture-float-with-image-data.htm * conformance/extensions/oes-texture-float-with-image.html * conformance/extensions/oes-texture-float.html * conformance/extensions/oes-texture-half-float-linear.html * conformance/extensions/oes-texture-half-float-with-image-data.html * conformance/extensions/oes-texture-half-float-with-image.html * conformance/extensions/oes-texture-half-float.html Reland of https://chromium-review.googlesource.com/#/c/288350/ BUG=angleproject:884 Change-Id: Ia2f9251d12dd3bbc7b6918d46e61623d0abedfac Reviewed-on: https://chromium-review.googlesource.com/288584 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez d71620aa 2015-07-24T08:06:31 Add IndexBufferOffsetTest This test that using glDrawElements with an offset and an index buffer works correctly with or without a static copy of the buffer in D3D. BUG=510585 Change-Id: I4574a4058cc803e2ee0306e5bac52b6df6a71530 Reviewed-on: https://chromium-review.googlesource.com/288352 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 53cabecc 2015-07-24T10:52:14 BufferD3D: reinit static data only when the usage is static Previously, once a dynamic buffer had an associated static data, it would be considered as static and the static data would be always be reinitialized just after having been invalidated. BUG=510585 Change-Id: I403e91d35d11efe17f52947b2182f7b8febd7922 Reviewed-on: https://chromium-review.googlesource.com/288351 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang cab7e1d1 2015-07-27T11:20:41 Add stubs for RendererGL workarounds. BUG=angleproject:884 Change-Id: I9e48803f6150b9d8cd70a36ab9197f78fd01a50f Reviewed-on: https://chromium-review.googlesource.com/288583 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 6941a556 2015-07-27T11:06:45 Rename Workarounds to WorkaroundsD3D. It is not referenced outside of the d3d classes. BUG=angleproject:884 Change-Id: Ibeec034b1b78b569bea2f1c77d6a686b58b8e010 Reviewed-on: https://chromium-review.googlesource.com/288582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill c64d993d 2015-07-27T10:55:25 StateManagerGL: Use an array instead of map for FBOs. The std::map became a significant bottleneck for draw calls. BUG=angleproject:959 Change-Id: I28176d1474fe5cff05018f89878ea8b2a3e3f9f1 Reviewed-on: https://chromium-review.googlesource.com/288702 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e8c8de2d 2015-07-27T10:09:31 dEQP-GLES2: Skip flush/finish test on Windows. This test is having flaky timeouts on the bots. Disable it for now. BUG=angleproject:1107 Change-Id: Iaa15672fb96f4aa3463a0613980f8a941aeafe1f Reviewed-on: https://chromium-review.googlesource.com/288405 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 3aa9b2e0 2015-07-27T10:46:30 dEQP-GLES3: Mark dynamic_loop_struct_array_fragment as failing. This test is failing on the bots. BUG=angleproject:1108 Change-Id: Iaef3f0810c5d076b6c49bc356340c9bde014c4f5 Reviewed-on: https://chromium-review.googlesource.com/288518 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 5e7f5c92 2015-07-25T13:52:51 Revert "Always use sized internal formats for textures in TextureGL." Causing failures on the Intel and AMD bot. This reverts commit 8d8044f7e39839a5dfbf09553f77fd4325e64d4c. Change-Id: I7dc6634eaf6f57ad84c315d74aa74d3ef2d4016f Reviewed-on: https://chromium-review.googlesource.com/288325 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 8d8044f7 2015-07-23T10:57:20 Always use sized internal formats for textures in TextureGL. On desktop GL, using an internal format of GL_RGBA produces GL_RGBA8 textures even if format is set to GL_FLOAT. Use sized internal formats whenever possible to ensure that the internal format of the texture is the expected format. Fixes: * conformance/extensions/oes-texture-float-with-image-data.htm * conformance/extensions/oes-texture-float-with-image.html * conformance/extensions/oes-texture-float.html * conformance/extensions/oes-texture-half-float-linear.html * conformance/extensions/oes-texture-half-float-with-image-data.html * conformance/extensions/oes-texture-half-float-with-image.html * conformance/extensions/oes-texture-half-float.html BUG=angleproject:884 Change-Id: I48f220a4da518fff5831155a45c04cafcdffd33b Reviewed-on: https://chromium-review.googlesource.com/288350 Tested-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Daniel Cheng 5bb9af2a 2015-07-24T09:56:59 Fix a -Wswitch warning in ANGLE. BUG=505308 Change-Id: I34ae3aa65ce55c4e04eecfef3c9cde9841e47140 Reviewed-on: https://chromium-review.googlesource.com/288245 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Daniel Cheng <dcheng@chromium.org>
Geoff Lang 589a0bad 2015-07-24T17:55:54 Revert "Always use sized internal formats for textures in TextureGL." Causing failures on the Intel and AMD bots which seem to have incorrect rounding for 1-bit alpha formats. This reverts commit 0bcb68f32f5790b0c10913351259fdf4bfed0c28. Change-Id: I00d333b5c10ba3f41d54bec95769f4baf07b0771 Reviewed-on: https://chromium-review.googlesource.com/288206 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 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>
Jamie Madill 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>
Geoff Lang 73a5b648 2015-07-24T13:33:38 Only check alpha values of 0 and 1. Relying on the driver to round in one direction or the other is not reliable. Change-Id: Ide96864607ee6a22d2523544d6cfe8fae3116fcd Reviewed-on: https://chromium-review.googlesource.com/288289 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0bcb68f3 2015-07-23T10:57:20 Always use sized internal formats for textures in TextureGL. On desktop GL, using an internal format of GL_RGBA produces GL_RGBA8 textures even if format is set to GL_FLOAT. Use sized internal formats whenever possible to ensure that the internal format of the texture is the expected format. Fixes: * conformance/extensions/oes-texture-float-with-image-data.htm * conformance/extensions/oes-texture-float-with-image.html * conformance/extensions/oes-texture-float.html * conformance/extensions/oes-texture-half-float-linear.html * conformance/extensions/oes-texture-half-float-with-image-data.html * conformance/extensions/oes-texture-half-float-with-image.html * conformance/extensions/oes-texture-half-float.html BUG=angleproject:884 Change-Id: I227e782fe9aae7b2e66df67c7a4519cfc79890b9 Reviewed-on: https://chromium-review.googlesource.com/287529 Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez d483e422 2015-07-23T15:56:26 IncompleteTextureTest: Remove the Linux/NVIDIA suppression BUG=angleproject:892 Change-Id: Iae3d1a83ccc4a6d738a78b58c295e06bfc564767 Reviewed-on: https://chromium-review.googlesource.com/287676 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>