src/tests


Log

Author Commit Date CI Message
Corentin Wallez 6ad306cb 2016-02-11T17:06:41 dEQP: search for the data directory relative to the exe path. BUG=580045 Change-Id: I58bfa9ab6766eaae756b3c0f4d28f545e86d543b Reviewed-on: https://chromium-review.googlesource.com/327306 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 6ee394a1 2016-02-18T13:30:09 Add initializer function to more texture formats All GL RGB formats that ANGLE stores as RGBA formats under the covers need to have their alpha channel set to 1. See GLES 3.0.4 table 3.24 for the relevant spec. In some cases, this is handled by the dataInitializerFunction associated with the format. Previously, some texture formats had the function set correctly, but not all. Associating formats with the datainitializerFormat is now a responsibility of the gen_texture_format_table.py script. The new automation there makes sure that all GL RGB formats emulated with RGBA formats get a data initializer function. Tests are added in end2end_tests for most of the RGB formats. BUG=angleproject:1318 TEST=angle_end2end_tests Change-Id: Iad860357f33d87c625445ea6c58a53af47e0b547 Reviewed-on: https://chromium-review.googlesource.com/328253 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang b9ada71d 2016-02-17T11:45:58 Sync the D3D11 rasterizer state if pointDrawMode or multisample changes. When drawing points, culling is disabled to make sure the generated point sprites are not culled. Since there are no dirty bits for pointDrawMode or multiSample, they were not being checked to ensure the rasterizer state was correct. BUG=586531 Change-Id: I8fe60dd8d5bbc79b1bce2c0aa62c40cee560fe24 Reviewed-on: https://chromium-review.googlesource.com/327862 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho bce743ab 2016-01-15T17:18:28 Use texture base level to implement textureSize on D3D11 HLSL HLSL GetDimensions call doesn't take the texture base level into account, so ANGLE needs to use the texture base level passed in uniforms to emulate ESSL textureSize() which does take it into account. After this change the relevant dEQP tests pass on NVIDIA, Intel is still suffering from an issue where a wrong value is returned when the lod is > 0 (tested on Intel HD Graphics 4600). AMD is also suffering from an unknown issue. BUG=angleproject:596 TEST=dEQP-GLES3.functional.shaders.texture_functions.texturesize.* (all pass on NVIDIA now), angle_end2end_tests Change-Id: I13e33d126008ecdf2b89461a3fb5040949cf19e2 Reviewed-on: https://chromium-review.googlesource.com/322123 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Ian Ewell 89f2845c 2016-02-10T11:33:07 Context virtualization for D3D11 queries Queries in D3D11 are now virtualized such that they work as expected with multiple contexts. Timer queries now only time the operations that their context is responsible for and the operations of other contexts are ignored. BUG=angleproject:657 Change-Id: I667de594bdb5831d126d5801c0e692ded4c88bf4 Reviewed-on: https://chromium-review.googlesource.com/327150 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Ewell <ewell@google.com>
Cooper Partin 534bf87b 2016-02-09T11:33:29 Implemented instanced rendering for emulated point sprites Non-instanced PointSprite emulation for lower feature levels is implemented using D3D DrawIndexedInstanced and an instanced vertex buffer containing a pointsprite quad. GL instanced rendering using glDrawArraysInstanced and glDrawElementsInstanced with pointsprite emulation is performed using a for-loop. The loop iterates over each instance to render and adjusts the buffer offsets accordingly. This is not performant and is only used and required by this chosen pointsprite emulation method. Indexed instanced (glDrawElementsInstanced), uses the same offset loop because the vertex buffer containing the data to be rendered has already been expanded using getEmulatedIndexedBuffer(). Expanding the buffer makes the two rendering operations similar enough to share code. BUG=angleproject:1279 TEST=angle_end2end_tests Change-Id: If46cc9f158e29f5518c70ad630b3228f474a9f8b Reviewed-on: https://chromium-review.googlesource.com/321407 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill cfd6b2b6 2016-02-08T12:50:38 D3D11: Add a test to cover a clear RTV driver bug. See dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba8 This test uses ClearRenderTargetView to clear various FBO textures, but it does not seem to work correctly on my Nvidia configuration. It has been reported to Nvidia. It also seems to fail on Intel. Current GPU: NVIDIA GeForce GTX 660 Current Driver: 10.18.13.5598 (9-13-2015) Works on Desktop OpenGL back-end, also on AMD R5230 BUG=angleproject:1305 Change-Id: I4b53b7376faf71f234d05c90f4fb55462de23e36 Reviewed-on: https://chromium-review.googlesource.com/314304 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ee991799 2016-02-10T18:25:40 Fix texture swizzle cache initialization Texture swizzle cache needs to be initialized so that the keys do not represent a valid swizzle state before any swizzled textures have been cached. BUG=angleproject:1095 TEST=dEQP-GLES3.functional.texture.swizzle.* (all pass) Change-Id: I66c10ed49134875d29b07852488a41a776e8fb67 Reviewed-on: https://chromium-review.googlesource.com/326971 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Ian Ewell 536ebf4d 2016-02-09T13:20:12 Increase the timeout on Timer queries tests. On Mac, the timer queries tests have flakiness as the tests may timeout before the query result is available. The time to wait before throwing a timeout error in the tests was therefore increased by a factor of 20. BUG=585498 Change-Id: I55047ee7759e6d2dde69294df451202dfb498034 Reviewed-on: https://chromium-review.googlesource.com/327031 Commit-Queue: Ian Ewell <ewell@google.com> Reviewed-by: Ian Ewell <ewell@google.com>
Ian Ewell 292f005f 2016-02-04T10:37:32 Fix context virtualization for timer queries In the current implementation of query virtualization, queries are paused/resumed during draw calls. Timer queries however are affected by every OpenGL call, so virtualization and context switches for timer queries must happen every time there is a context switch. Thus the logic for context-switching queries was moved to a new function in the GL state manager that is called everytime a makeCurrent call on the context is made. Since queries may be made after a context is made current, the state manager needs to keep track of any new queries that are started in a context, so an additional delegate function was added to the state manager that is called every time a glBeginQuery() call is made that adds the query object to a set. All the queries in that set are paused when a context switch is made and the queries in the new context are then loaded and resumed. BUG=angleproject:1307 Change-Id: I4e596d83739274cb2e14152a39e86e0e51b0f95c Reviewed-on: https://chromium-review.googlesource.com/325811 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Ewell <ewell@google.com>
Corentin Wallez a78d12c5 2016-02-08T14:02:52 Make the dEQP GTEST initialization failures red on swarming. On swarming the dEQP GTEST initialization failures would show as green because the FAIL GTEST macro was called outside of a test. Use exit(-1) instead that shows up as red on the bots. BUG=580045 Change-Id: Icf82a8593a11fe7e992778ffd8c682f6738c39a6 Reviewed-on: https://chromium-review.googlesource.com/326690 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 3f16afd3 2016-02-05T10:20:59 Add in GN the data dependencies required by the dEQP tests. BUG=580045 Change-Id: I3424568c6b200d6b6eb9921c6c09a3b3c974d710 Reviewed-on: https://chromium-review.googlesource.com/326320 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 39046169 2016-02-08T15:05:17 CollectVariables: Don't include block name in field name. The spec mandates that the instance name of a block determines how the active uniform name for this field is reported. However, our handling of this was a bit bugged. We would include the proper prefix on the compiler-side, but this mangled the hashing, and was also not strictly needed. We now also expose the instance name, so we can determine the proper prefix for variable linking on the GL-side of things. This also is consistent with how we handle other spec issues, where the GL-side handles the GL-API specific functionality. This also allows us to fix name hashing of instanced uniform blocks, which was previously broken because we would hash the full name of the active uniform, instead of just the field. BUG=angleproject:1306 Change-Id: I06ace6dbc3f75fdd8129677360dcc142aa89136e Reviewed-on: https://chromium-review.googlesource.com/326681 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Austin Kinross 2a63b3f8 2016-02-08T12:29:08 Re-land "Implement EGL_experimental_present_path_angle" - Re-land with clang fix. This allows ANGLE to render directly onto a D3D swapchain in the correct orientation when using the D3D11 renderer. The trick is to add an extra uniform to each shader which takes either the value +1.0 or -1.0. When rendering to a texture, ANGLE sets this value to -1.0. When rendering to the default framebuffer, ANGLE sets this value to +1.0. ANGLE multiplies vertex positions by this value in the VS to invert rendering when appropriate. It also corrects other state (e.g. viewport/scissor rect) and shader built-in values (e.g. gl_FragCoord). This saves a substantial amount of GPU time and lowers power consumption. For example, the old method (where ANGLE renders all content onto an offscreen texture, and then copies/inverts this onto the swapchain at eglSwapBuffers() time) uses about 20% of the GPU each frame on a Lumia 630. Verification: + dEQP GL ES2 tests pass when "present path fast" is enabled + all ANGLE_end2end_tests pass when "present path fast" is enabled BUG=angleproject:1219 Change-Id: I56b339897828753a616d7bae837a2f354dba9c63 Reviewed-on: https://chromium-review.googlesource.com/326730 Tryjob-Request: Austin Kinross <aukinros@microsoft.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill d1c46228 2016-02-08T14:51:18 Revert "Implement EGL_experimental_present_path_angle" Compile failure on Clang/Win: The reason for reverting is: FAILED: ninja -t msvc -e environment.x86 -- "..\..\third_party/llvm-build/Release+Asserts/bin/clang-cl" -m32 /nologo /showIncludes /FC @obj\third_party\angle\src\tests\egl_tests\angle_end2end_tests.EGLPresentPathD3D11Test.obj.rsp /c ..\..\third_party\angle\src\tests\egl_tests\EGLPresentPathD3D11Test.cpp /Foobj\third_party\angle\src\tests\egl_tests\angle_end2end_tests.EGLPresentPathD3D11Test.obj /Fdobj\gpu\angle_end2end_tests.cc.pdb In file included from ..\..\third_party\angle\src\tests\egl_tests\EGLPresentPathD3D11Test.cpp:7: In file included from ..\..\third_party\angle\src\tests\test_utils/ANGLETest.h:13: ..\..\testing\gtest\include\gtest/gtest.h(1392,16) : error: comparison of integers of different signs: 'const int' and 'const unsigned int' [-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 int>' requested here return CmpHelperEQ(expected_expression, actual_expression, expected, ^ ..\..\third_party\angle\src\tests\egl_tests\EGLPresentPathD3D11Test.cpp(281,9) : note: in instantiation of function template specialization 'testing::internal::EqHelper<false>::Compare<int, unsigned int>' requested here ASSERT_EQ(mWindowWidth * 4, mappedSubresource.RowPitch); ^ ..\..\testing\gtest\include\gtest/gtest.h(1960,32) : note: expanded from macro 'ASSERT_EQ' # define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) ^ ..\..\testing\gtest\include\gtest/gtest.h(1943,67) : note: expanded from macro 'GTEST_ASSERT_EQ' EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \ ^ BUG=angleproject:1219 This reverts commit 6b3c1db5170450bbc4946d8f18ba0d8619da43a0. Change-Id: Ia67ab82dd13295dc03235d57fa417c73f20a49e6 Reviewed-on: https://chromium-review.googlesource.com/326680 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill b0c14b79 2016-02-05T16:49:10 D3D11: Fix 3D ReadPixels with PBOs. Pass the FBO attachment to the Buffer packing method so we can retrieve the layer of the attachment when doing an asynchronous readback. Also take advantage of the TextureHelper11 class to remove some redundant code. BUG=angleproject:1290 Change-Id: I26bb21a03e0ff7a42aab4eee75f3c3d12915f398 Reviewed-on: https://chromium-review.googlesource.com/324021 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez af344a1b 2016-02-05T14:51:00 Fail the dEQP tests early if the case list is not found. BUG=580045 Change-Id: I917f62dca047ca163bfdbcc5437b2fc1d7a1e020 Reviewed-on: https://chromium-review.googlesource.com/326401 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Ian Ewell f04f6671 2016-02-03T10:50:16 Add support for timer queries in D3D11 Timer queries without context virtualization are now supported in the Direct3D11 backend. Only the elapsed time portion of the GL extension is supported though due to limitations of D3D11 preventing a reliable implementation of the timestamp functionality. As a result of this, the counter bits for the timestamp is set to 0 and any queries of the timestamp will always return 0. BUG=angleproject:657 Change-Id: I51ca1a1a6bd6bc13155cebeacdca414b764db168 Reviewed-on: https://chromium-review.googlesource.com/325780 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Austin Kinross 6b3c1db5 2015-12-18T14:01:46 Implement EGL_experimental_present_path_angle This allows ANGLE to render directly onto a D3D swapchain in the correct orientation when using the D3D11 renderer. The trick is to add an extra uniform to each shader which takes either the value +1.0 or -1.0. When rendering to a texture, ANGLE sets this value to -1.0. When rendering to the default framebuffer, ANGLE sets this value to +1.0. ANGLE multiplies vertex positions by this value in the VS to invert rendering when appropriate. It also corrects other state (e.g. viewport/scissor rect) and shader built-in values (e.g. gl_FragCoord). This saves a substantial amount of GPU time and lowers power consumption. For example, the old method (where ANGLE renders all content onto an offscreen texture, and then copies/inverts this onto the swapchain at eglSwapBuffers() time) uses about 20% of the GPU each frame on a Lumia 630. Verification: + dEQP GL ES2 tests pass when "present path fast" is enabled + all ANGLE_end2end_tests pass when "present path fast" is enabled BUG=angleproject:1219 Change-Id: Ib6eeea46bafa6ebce4adada0ae9db3a433b8fc4c Reviewed-on: https://chromium-review.googlesource.com/321360 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tryjob-Request: Austin Kinross <aukinros@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Minmin Gong e3939b98 2015-12-01T15:36:51 D3D11: Transcode ETC1 to BC1. Adds a new extension to allow transcode ETC formats to suitable BC formats. This commit implements ETC1 to BC1. More formats will be supported soon. BUG=angleproject:1285 Change-Id: Iacbfbc2248dfe1aebf24b92696249a9404e331cd Reviewed-on: https://chromium-review.googlesource.com/316511 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 9c757b12 2016-02-01T14:09:06 D3D11: Fix ReadPixels with layer 3D attachments. Non-zero layer attachments are FBO attachments of 3D textures bound from a layer other than zero. These haven't ever worked AFAIK. Fix them by retrieving the correct layer from the FBO attachment. Note: 3D attachments are still broken with PBO ReadPixels. The fix for those will come in a subsequent patch. BUG=angleproject:1290 Change-Id: I5417e7374188dd320e1209d006723ce070f98561 Reviewed-on: https://chromium-review.googlesource.com/323472 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e2509a39 2016-02-01T14:09:05 D3D11: Fix basic ReadPixels from 3D attachments. Use the TextureHelper class to abstractly handle 2D and 3d textures. Also refactor the Image11 copy methods to be a bit cleaner and not use the copy conversion path when unnecessary. This patch does not yet fix layer attachments - the fix for that will come up in a subsequent patch. BUG=angleproject:1290 Change-Id: If8b7aa8848ca4260e0dde690e7a99e115a97fabb Reviewed-on: https://chromium-review.googlesource.com/323442 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Ewell 53f59f4e 2016-01-28T17:36:55 Finish basic timer query support in GL backend EXT_disjoint_timer_query is feature complete with the WebGL tests passing with Chromium using ANGLE as a backend. There is some flakiness in the timestamp query test on WebGL, but investigation revealed a bug on Chromium's end and a fix is being made there. Since the extension is feature complete, it is now enabled by default on OpenGL so that it can be regression tested. BUG=angleproject:1265 Change-Id: If018b7e3ae84aff7e40c73ff8e672a86689ae6c4 Reviewed-on: https://chromium-review.googlesource.com/324580 Tryjob-Request: Ian Ewell <ewell@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Ian Ewell <ewell@google.com>
Corentin Wallez ae786455 2016-02-01T16:23:34 Tell GN about the dependecy of dEQP tests on expectations Without this, gn-built isolates do not include the test expectations file in the isolate, causing the test suite to bail out at startup. Also rename target_name to api_name as target_name is a special variable name when inside a target definition. BUG=580045 Change-Id: I20be39c7e50e24757a0828f9056613e171f0002f Reviewed-on: https://chromium-review.googlesource.com/325040 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 9b4e8626 2015-12-22T15:53:22 Redesign samplers in shaders on D3D11 Translation of samplers to HLSL on D3D11 is changed as follows: Instead of passing around HLSL sampler and HLSL texture references in shaders, all references to ESSL samplers are converted to constant indices within the shader body. Each ESSL sampler is identified by an unique index. In the code generated to implement ESSL texture functions, these indices are used to index arrays of HLSL samplers and HLSL textures to get the sampler and texture to use. HLSL textures and samplers are grouped into arrays by their types. Each unique combination of a HLSL texture type + HLSL sampler type gets its own array. To convert a unique sampler index to an index to one of these arrays, a constant offset is applied. In the most common case of a 2D texture and a regular (non-comparison) sampler, the index offset is always zero and is omitted. The end goal of this refactoring is to make adding extra metadata for samplers easier. The unique sampler index can be used in follow-up changes to index an array of metadata passed in uniforms, which can contain such things as the base level of the texture. This does not solve the issues with samplers in structs. The interface from the point of view of libANGLE is still exactly the same, the only thing that changes is how samplers are handled inside the shader. On feature level 9_3, the D3D compiler has a bug where it can report that the maximum sampler index is exceeded when in fact it is not. This can happen when an array of samplers is declared in the shader. Because of this the new approach can't be used on D3D11 feature level 9_3, but it will continue using the old approach instead. BUG=angleproject:1261 TEST=angle_end2end_tests, dEQP-GLES3.functional.shaders.texture_functions.* (no regressions) dEQP-GLES3.functional.texture.units.* (no regressions) Change-Id: I5fbb0c4280000202dc2795a628b56bd8194ef96f Reviewed-on: https://chromium-review.googlesource.com/320571 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 5bf9ff4a 2016-02-01T11:13:03 Fix leak with binding Framebuffers directly. Using BindFramebuffer(1) then GenFramebuffers would return 1. This leads to a memory leak and was something that was obscuring debugging a bug in my ReadPixels fix for ES3. This also fixes a bug where running the texture tests along produces some random failures. BUG=angleproject:1290 BUG=angleproject:1299 Change-Id: If11e8c743d2ddde725b12749ac012f670cd290e1 Reviewed-on: https://chromium-review.googlesource.com/324820 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 07fd1aaa 2016-02-01T11:13:03 Updated a few new passing tests in dEQP-GLES3. Unknown when these started passing, but they seem to be OK locally and on the bot. BUG=angleproject:1095 BUG=angleproject:1097 BUG=angleproject:1101 Change-Id: Icf6102792b356cd23bf39414f75e796fe7e81879 Reviewed-on: https://chromium-review.googlesource.com/324940 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill bc69f3be 2016-01-29T09:48:08 Build GN dEQP iff "build_angle_deqp_tests==true" BUG=580045 Change-Id: Id19f843e8a04d38938b6827a7a64970eb088bcc6 Reviewed-on: https://chromium-review.googlesource.com/324760 Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Ian Ewell 3ffd78bc 2016-01-22T16:09:42 Add initial support for EXT_disjoint_timer_query. Basic timer queries are supported and tested in the OpenGL backend but are not enabled by default. A good portion of the existing query code was also refactored for improved validation - specifically for validating that the appropriate extensions are available. BUG=angleproject:1265 Change-Id: Iebae994cd7a8d3ed3e9fc3776fe2f3d99caa9237 Reviewed-on: https://chromium-review.googlesource.com/323450 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tryjob-Request: Ian Ewell <ewell@google.com> Tested-by: Ian Ewell <ewell@google.com>
Jamie Madill 3e1b4f80 2016-01-27T12:39:27 Refactor ReadPixelsTest. Split the test into several categories based on what fixture types they need. BUG=angleproject:1290 Change-Id: Ia25a022d90a0571e03d86c8e38f6243189968149 Reviewed-on: https://chromium-review.googlesource.com/324020 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang a15472a3 2015-08-11T11:48:03 Fix bugs with drawbuffer state. * IsAttachmentEnabled was checking the wrong draw buffer state. Instead of checking that drawbuffer[colorAttachment] is in use, it should have been scanning for a drawbuffer state that points to colorAttachment. * Allow for maxDrawBuffer != maxColorAttachments. Tested by the GL backend on some systems that don't have the draw buffers extension. Fixed by updating the helpers and adding a new getDrawBuffer helper. BUG=angleproject:1121 Change-Id: Idd1b0a9ec4a3f944d332c708364408bf5d59e1fd Reviewed-on: https://chromium-review.googlesource.com/292740 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 0dfa807f 2016-01-22T15:27:21 Tests: Prettify output for EXPECT_PIXEL_EQ. Previously our output would spam multiple lines by checking equality for each color component. Instead, use a helper struct with a stream operator to clean up the output. This makes it much more legible. New output style: Expected: (0, 255, 0, 255) Actual: angle::MakeGLColor(255, 0, 127, 255) Which is: (255, 0, 127, 255) BUG=angleproject:1290 Change-Id: Ieea018ab6c149a20b5fd74d74c972118b63a4b5e Reviewed-on: https://chromium-review.googlesource.com/323441 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill f83cbc65 2016-01-22T15:27:21 Use std::random functions for test and samples RNG. These standard functions are much more powerful than the C random() routines. Use them to improve the random utils, and use a class to clean things up further. This fixes a problem I was having using random_utils where I was having trouble generating random 32 bit unsigned integers. BUG=angleproject:1290 Change-Id: I5081764053d0667a4e323553b7dea531256aa778 Reviewed-on: https://chromium-review.googlesource.com/323440 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 5103f4c0 2016-01-26T11:40:18 Supress AMD OpenGL failures in angle_end2end_tests. BUG=angleproject:1291 Change-Id: I4fc8cc152bb5ef18fff78bf312a14691e9de0243 Reviewed-on: https://chromium-review.googlesource.com/324030 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 69accbd1 2016-01-25T16:22:32 Supress Mac OpenGL AMD angle_end2end_test failures. BUG=angleproject:1291 Change-Id: I7fe6a6203c71c893dad97d6e9bc8272164d44f58 Reviewed-on: https://chromium-review.googlesource.com/323790 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 60ec6ea7 2016-01-22T15:27:19 Implement dirty bits for Framebuffer. The dirty bits set the stage for performance improvements in D3D, but don't actually reduce any of the redundant work just yet. BUG=angleproject:1260 Change-Id: Ib84e6a9b7aa40c37c41790f492361b22faaf4742 Reviewed-on: https://chromium-review.googlesource.com/318730 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang e0cc2a4a 2016-01-20T10:58:17 Enable all angle_end2end_tests targeting OpenGL and OpenGL ES backends. Added failure supressions and filed bugs for failing tests. BUG=angleproject:1145 BUG=angleproject:1289 BUG=angleproject:1291 BUG=angleproject:1292 BUG=angleproject:1293 BUG=angleproject:1296 Change-Id: Ida78ba855500fe8a6ce6154d43ee01520330e3b1 Reviewed-on: https://chromium-review.googlesource.com/322695 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Frank Henigman 82e3f3de 2016-01-22T17:55:44 Cast display parm for eglGetPlatformDisplayEXT. The native display parameter to eglGetPlatformDisplayEXT has type void*. When building with -DUSE_OZONE the native display type is intptr_t so a cast is needed. BUG=angleproject:1297 Change-Id: I947f5f9016926b6e3d590a2e29b5ee1fc883384d Reviewed-on: https://chromium-review.googlesource.com/323471 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Tested-by: Frank Henigman <fjhenigman@chromium.org>
Ian Ewell 924b7de2 2016-01-21T13:54:28 Always write to gl_Position when compiling shaders with SH_GLSL_COMPATIBILITY_OUTPUT. BUG=angleproject:1277 Change-Id: Ib820a46151637e8c61e94b966b970de46ccca6b9 Reviewed-on: https://chromium-review.googlesource.com/323160 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by: Ian Ewell <ewell@google.com>
Austin Kinross d544cc9f 2016-01-11T15:26:42 Fail any ANGLE test if it outputs D3D11 SDK message in debug mode Also: - Disable some Feature Level 9_3 tests that trigger SDK messages - Fix a debug object name issue. If you try to assign a debug name to an object twice then you get an SDK warning message. This can occur if you 'create' two objects (e.g. Rasterizer States) with identical DESCs on the same device, since D3D11 can optimize this and return the same object both times. - Disable the message checks in Line Loops tests, since the tests trigger incorrect D3D11 SDK messages on Win7 machines BUG=angleproject:667;angleproject:1282 Change-Id: I7284fb3a11377afde24e0014e21dbcea80ebb126 Reviewed-on: https://chromium-review.googlesource.com/321393 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tryjob-Request: Austin Kinross <aukinros@microsoft.com> Tested-by: Austin Kinross <aukinros@microsoft.com>
Ian Ewell fc7cf8e9 2016-01-20T15:57:46 Fixed validation errors in teximage3d and friends. BUG=angleproject:1169 BUG=angleproject:1101 Change-Id: I3770335d04cafd652c2f3839afca3e4a854e6e76 Reviewed-on: https://chromium-review.googlesource.com/322381 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by: Ian Ewell <ewell@google.com>
Corentin Wallez dd46e643 2016-01-20T15:13:10 Suppress ProvokingVertexTest.FlatTriWithTransformFeedback on Mac AMD BUG= Change-Id: Ia6e7c67aaed40cca70be5522e0b9edff2610b63a Reviewed-on: https://chromium-review.googlesource.com/322212 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 6fd7472f 2016-01-20T10:59:34 Disable dEQP in GN. Change-Id: If2b3097f976a4433625b393c8562ea5d22c0c070 Reviewed-on: https://chromium-review.googlesource.com/322211 Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho a7416ff7 2016-01-18T12:22:55 Fix texture completeness check when base level > 0 is used ANGLE would previously treat a texture as incomplete whenever its base level was above 0. This was because the base level wasn't being taken into account correctly when determining what size the image at a specific mip level should be. Fix this by taking the base level into account when determining the expected size. BUG=angleproject:596 TEST=angle_end2end_tests Change-Id: I4b05514aed2858797ea46cf3570c3c40e5efc508 Reviewed-on: https://chromium-review.googlesource.com/322132 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho c8c99a0a 2016-01-14T16:47:22 Add a texture test with a mix of different sampler types This test makes sure that even if sampler / texture registers get grouped together based on type in the HLSL backend of the shader translator, the D3D renderer still has the right register index information for each ESSL sampler. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: Id09f96cfa903cd20c8e7229980fa363bb07b6045 Reviewed-on: https://chromium-review.googlesource.com/322200 Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 1a679900 2016-01-14T12:21:47 Test shadow sampler + 3D sampler in the same shader Shadow samplers use a different sampler object type in D3D11 HLSL than other ESSL samplers. They need to be able to coexist in the same shader. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: I960f6a41c0237ed912b072527e14aebeca98cf7c Reviewed-on: https://chromium-review.googlesource.com/322120 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Olli Etuaho 51f1c0f0 2016-01-13T16:16:24 Add a workaround for default framebuffer sometimes being SRGB On some GL driver/window system combinations the default framebuffer may do SRGB conversion, which affects the values written there by draw operations and read by readPixels. This is known to happen at least on some Intel systems. For this reason, use an FBO with a known format instead in the texture end2end tests. This enables turning on most TextureTest cases on the OpenGL backend. Tested on Intel HD 4600. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: I5a39bd1dadf15b7c52793a0f66d67e9f61618b83 Reviewed-on: https://chromium-review.googlesource.com/321612 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 19d48db1 2016-01-13T14:43:21 Fix incorrect delete function call in TextureTest The test must call glDeleteBuffers to delete a buffer instead of glDeleteTextures. This was one reason behind the texture tests failing on the GL backend. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: I67042f6948146f3c3fca9e01231b0c4935a6f08d Reviewed-on: https://chromium-review.googlesource.com/321611 Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Austin Kinross 5faa15bf 2016-01-11T13:32:48 Fix null sampler warning in TextureTest.TextureNPOT_GL_ALPHA_UBYTE The test deliberately tries to render a scene using an invalid texture. ANGLE rendered this correctly, but when it bound the dummy 1x1 black texture that's used instead of invalid textures, it didn't bind a sampler state. This meant that D3D had no pixel shader samplers bound, and outputted a debug warning. Also, technically the test should have been setting GL_UNPACK_ALIGNMENT=1, but that wasn't impacting the result of the test. BUG=angleproject:1248 Change-Id: I871706d518077ea840a585ae0df8f9176e130cb1 Reviewed-on: https://chromium-review.googlesource.com/321391 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 2173db3d 2016-01-12T13:55:14 Add sampler array tests This adds some coverage for samplers that is missing from dEQP. The shaders in the added tests both have a sampler array with two samplers. The test shaders sample both textures, add up the results, and the tests then check that the results of the shaders are correct. Only constant indexing is used to access the sampler arrays. One test accesses the sampler array in the main function, another one first passes the array as a parameter to a user-defined function. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: I9a0100705ac0da4905d50da37c0149fdbdd24c42 Reviewed-on: https://chromium-review.googlesource.com/321623 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 4644a20b 2016-01-12T15:12:53 Add a test for sampler as a function parameter This adds some coverage for samplers that's missing from dEQP. The test shader passes a sampler to an user-defined function, samples the texture there and sets the returned sample to gl_FragColor. The test then checks that the shader result is correct. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: I2cc511e591a4af01515c6fb38fd43c5f15337bcb Reviewed-on: https://chromium-review.googlesource.com/321622 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 53a2da13 2016-01-11T15:43:32 Test drawing with a shader with two different sampler types This adds some test coverage that's missing from dEQP. The test uses two different samplers in a shader, a cube map sampler and a 2D texture sampler, adds the sampling results together and checks if the result is correct. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: If21e24c964fc208b5d1ccd446834dabf13194944 Reviewed-on: https://chromium-review.googlesource.com/321621 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 4a8329f2 2016-01-11T17:12:57 Refactoring: Split TextureTest to multiple classes This removes the cube map setup and the draw scale parameter from the tests that don't need them, and reuses the code for setting up the window and the shader program for most of the texture tests. The tests are now structured as follows: TexCoordDrawTest: Test class that sets up a shader program for drawing with texture coordinates. Vertex shader source can be overridden in subclasses, and fragment shader source must be specified in subclasses. Texture2DTest: Inherits TexCoordDrawTest, sets up a 2D texture and a shader for drawing from it. Texture2DTestWithDrawScale: Inherits Texture2DTest, adding a scale parameter that scales the quad that gets drawn. TextureCubeTest: Inherits TexCoordDrawTest, sets up a cube map and a 2D texture and a shader for drawing from them. Texture2DArrayTestES3: Inherits TexCoordDrawTest. Reserves a texture ID and sets up an ESSL3 shader for drawing from a 2D texture array. Also add a few comments about where things being tested are specified. Also, ANGLETest::drawQuad parameter names are renamed to make their meaning clearer. The parameters affect the vertex shader attribute values, which the shader may use for other things besides setting the vertex position. BUG=angleproject:1261 TEST=angle_end2end_tests Change-Id: Id673e36d5883aaaf47f2f830c2a1ad0ca293d578 Reviewed-on: https://chromium-review.googlesource.com/321620 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 1fae3556 2016-01-07T14:33:48 Add dEQP Linux GN integration. BUG=angleproject:1272 Change-Id: I20cb8968221c25bb374b3cc71d7ca619a35f1a2f Reviewed-on: https://chromium-review.googlesource.com/320781 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 5f80d016 2016-01-11T11:16:01 Disallow invariant(all) pragma in ESSL 3.00 fragment shaders ESSL 3.00.4 section 4.6.1 says that using #pragma STDGL invariant(all) in a fragment shader is an error, so make it an error. This spec language is not found in ESSL 1.00, and it's been removed in ESSL 3.10. BUG=angleproject:1276 TEST=angle_unittests Change-Id: I2022f35475f867304b55dfb142f8568f6df28830 Reviewed-on: https://chromium-review.googlesource.com/321240 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill edbc2449 2016-01-04T11:25:00 Add dEQP GN integration. This is Windows-only for now, but will be expanded to Linux. Also do a bit of refactoring in our deqp.gypi file. BUG=angleproject:1272 Change-Id: I526a99fe3b91a2d9e8901c7e033a4916a06780be Reviewed-on: https://chromium-review.googlesource.com/320800 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Austin Kinross ff318af1 2015-12-22T15:34:45 Fix BlendMinMaxTest.RGBA16F on D3D11 Feature Level 9_3 This test checks for OES_texture_half_float, but it's trying to use a 16F texture as a color buffer so it should be checking for EXT_color_buffer_half_float. Since EXT_color_buffer_half_float requires more format support (e.g. R16F, RG16F, RGB16F) than OES_texture_half_float, it's possible for an implementation to support one extension and not the other. D3D11 Feature Level 9_3 does this. Change-Id: I40fb38aa3f419be2606464bd0476cd064afe90fa Reviewed-on: https://chromium-review.googlesource.com/319642 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Austin Kinross <aukinros@microsoft.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kenneth Russell 539146e1 2016-01-06T19:34:18 Add rpath for GN build of angle_end2end_tests. This fixes the static library build of this target on Linux. BUG=angleproject:1270 Change-Id: Id65bd9b7136918829f385920b540a4df83650c6f Reviewed-on: https://chromium-review.googlesource.com/320615 Tested-by: Kenneth Russell <kbr@chromium.org> Tryjob-Request: Kenneth Russell <kbr@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 8d8b108a 2016-01-04T16:44:57 Disallow local function prototypes Function prototypes should not be allowed inside other functions according to ESSL 3.00.4 section 4.2.4. BUG=angleproject:1068 TEST=angle_unittests, dEQP-GLES*.functional.shaders.functions.invalid.local_function_proto* Change-Id: I54160da4d49b92a6cd7cbee020e67733963d4e10 Reviewed-on: https://chromium-review.googlesource.com/320091 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 5d653186 2016-01-04T14:43:28 Disallow multiple function prototypes in ESSL 1.00 The same function can't be declared twice in ESSL 1.00. In ESSL 3.00 this is allowed. A function prototype following the definition of that function is not interpreted as redeclaration, and the shader compiler continues to allow this. BUG=angleproject:1067 TEST=angle_unittests, dEQP-GLES2.functional.shaders.functions.invalid.double_declare* Change-Id: I6d2ddafd456d378d92839600f19069ad1cd19aff Reviewed-on: https://chromium-review.googlesource.com/320082 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Hans Wennborg e1743f37 2016-01-06T05:24:22 Clang warning fixes This fixes member initialization order and unused private member warnings that broke the Clang build after the last Angle roll. BUG=82385 Change-Id: If866f352bda6d66093c180fdbec6c16bf902b628 Reviewed-on: https://chromium-review.googlesource.com/320466 Reviewed-by: Nico Weber <thakis@chromium.org> Tryjob-Request: Nico Weber <thakis@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tryjob-Request: Geoff Lang <geofflang@chromium.org> Tested-by: Nico Weber <thakis@chromium.org>
Corentin Wallez 7ee40d1a 2016-01-04T08:37:00 Fix compilation failures on OSX standalone builds BUG= Change-Id: Ifd40ae30d601227caf550546fcffc286cf533a73 Reviewed-on: https://chromium-review.googlesource.com/320290 Tryjob-Request: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 0d53c400 2016-01-05T03:30:51 Revert "Ignore clang -Wall warning." This was not working as intended. The correct fix was implemented in 444922662a59a45ad8f86ec9480b180571337f4e This reverts commit 74b92323c9a210178ab97cc9418d6bf639cb9d8c. Change-Id: Ib2bc3861bcdb49555b59981ca95f1c1c1e924d7d Reviewed-on: https://chromium-review.googlesource.com/320480 Tryjob-Request: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 465b3a5f 2015-12-15T12:08:24 Add texture sampling perf test The test generates a texture containing random data and then blurs it in a fragment shader using nearest neighbor sampling. The test is specifically designed to test overhead of GLSL's builtin texture*() functions that may result from how ANGLE translates them on each backend. BUG=angleproject:1261 TEST=angle_perftests Change-Id: I188fa8c07e609b7f371e587358f913b506bd7d44 Reviewed-on: https://chromium-review.googlesource.com/319382 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 44492266 2016-01-04T13:04:08 Disable virtual destructor warning in dEQP. This small error in dEQP triggers a warning that was recently enabled in Chromium builds. We should remove the suppression once we fix dEQP. BUG=angleproject:1271 Change-Id: I9df3a304043b6decc00440103d105c9de76dc2db Reviewed-on: https://chromium-review.googlesource.com/320320 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 66641c61 2016-01-04T15:31:15 Fix typo in shader test The only error in the test should be the non-integer index. gl_FragColor should be used correctly. BUG=angleproject:1254 TEST=angle_unittests Change-Id: I0b7a36be5485661cc03bf2c476aaacae5d3b6e76 Reviewed-on: https://chromium-review.googlesource.com/320280 Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 70d0f499 2015-12-10T17:45:46 Implement GL_KHR_debug. BUG=angleproject:520 Change-Id: I9ced3e7ab1515feddf2ec103c26b2610a45b1784 Reviewed-on: https://chromium-review.googlesource.com/319830 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 74b92323 2016-01-02T09:58:25 Ignore clang -Wall warning. Change-Id: I76e3cd5038457a7d978497ef9a5ebee60b05e34d
Geoff Lang 66988745 2015-12-22T19:39:19 Revert "Implement GL_KHR_debug." This reverts commit 6c521b7a70a53b1c9f7762e53e34b5a8146b0f7b. Change-Id: I6ff981198e31f34d3e405edea6277ee75516d6ee Reviewed-on: https://chromium-review.googlesource.com/319820 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 6c521b7a 2015-12-10T17:45:46 Implement GL_KHR_debug. BUG=angleproject:520 Change-Id: I78d14cc8c94f5cef58604220f0ca847473b25bf8 Reviewed-on: https://chromium-review.googlesource.com/317820 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 8047f065 2015-12-15T17:54:42 Improve perf testing framework The ANGLERenderTest subclasses have a parameter "iterations". Previously most of these tests would perform iterations^2 iterations, since the looping was done both in ANGLERenderTest and in the individual test classes. Do the looping only in the individual test classes instead. This enables getting rid of separate beginDrawBenchmark() and endDrawBenchmark() functions. Some other unused code is also removed: 1. stepBenchmark function 2. unused parameters to step() This makes the core loop of running tests simpler. The perf testing framework also now has shared logic for deciding when to end a given test. The score calculation for tests is also changed. Instead of reporting just the number of operations done, it is reported relative to the actual run time of the test. This should make the test results more accurate, since run time of the tests may have some variation. It also enables changing the run time of the tests without rebaselining them. In the tests that use GPU, GPU operations are also waited to finish before stopping the timer. BUG=angleproject:1261 TEST=angle_perftests Change-Id: I69e9aad8afd2d9dedd60e144f0a5d4203618feef Reviewed-on: https://chromium-review.googlesource.com/319381 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Kenneth Russell add0ef14 2015-12-17T15:43:31 Remove deprecated ShShaderOutput versions. These aren't referenced from Chromium code any more. BUG=chromium:550487 Change-Id: Ie4094667ec5f739efd9f1253ffdb779deaf3cebc Reviewed-on: https://chromium-review.googlesource.com/319162 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Kenneth Russell <kbr@chromium.org>
Olli Etuaho fecbed9f 2015-12-17T12:01:12 Fix code style in perf tests 1) Format switch/case with git cl format 2) Change NULL -> nullptr 3) Change int to GLint where appropriate 4) Use more appropriate variants of asserts BUG=angleproject:1261 TEST=angle_perftests Change-Id: I97d6260dbd72ef3897fff145682b7043bf323b76 Reviewed-on: https://chromium-review.googlesource.com/319380 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Sam Clegg 31aabdfb 2015-12-16T10:53:46 gyp: Always use pkg-config wrapper Calling pkg-config directly doesn't work when building with a sysroot image as it will looks for host libraries rather than those within the sysroot. BUG=chromium:569947 Change-Id: I6f3e63c1816cd9393110cb3060744a69a93c9a2e Reviewed-on: https://chromium-review.googlesource.com/318771 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Sam Clegg <sbc@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill cd089732 2015-12-17T09:53:09 Re-land "Implement GL_EXT_color_buffer_half_float." This exposes previously enabled functionality. Also update the format support check to be: supported: GLES3 || texture extension renderable: supported && color buffer extension filterable: filtering extension (Note: we silently support float rendering in ES2) Re-land with suppression for newly exposed failing test. BUG=angleproject:445 Change-Id: I4e46699e6b0c2ec8a7d8b36f1f598af1ec6420bc Reviewed-on: https://chromium-review.googlesource.com/318931 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0a90f527 2015-12-17T14:51:56 Revert "Implement GL_EXT_color_buffer_half_float." Failing dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgb16f http://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20dEQP%20%28NVIDIA%29/builds/4651 Likely missing a suppression for this test. It likely passed only because the extension was missing and it was passing as not supported. BUG=angleproject:1229 This reverts commit 39f9251daef5c4ddb4b7c413466a092f4a7f21bf. Change-Id: Ia703378d5aaacafc14503aff0b52a795b7eb4467 Reviewed-on: https://chromium-review.googlesource.com/319080 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 39f9251d 2015-12-14T15:34:09 Implement GL_EXT_color_buffer_half_float. This exposes previously enabled functionality. Also update the format support check to be: supported: GLES3 || texture extension renderable: supported && color buffer extension filterable: filtering extension (Note: we silently support float rendering in ES2) BUG=angleproject:1229 Change-Id: Icf0775891d6e336acd1a0ac07c3b37cf6bb0f101 Reviewed-on: https://chromium-review.googlesource.com/308430 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 90c253a6 2015-12-15T15:14:08 Add an instancing perf test. BUG=526217 BUG=angleproject:1164 Change-Id: Ia353a3b2fa0ab0e8b7fd15d72bb63e5ecb7833b1 Reviewed-on: https://chromium-review.googlesource.com/301469 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3215b207 2015-12-15T16:41:39 Validation cube completeness for FBO attachments. ES3 adds a clause that cube map FBO attachments must be cube complete to produce complete framebuffers. ES2 doesn't have this clause, but some (if not all, unverified) OpenGL back-ends don't support these incomplete cube map attachments. BUG=angleproject:1259 Change-Id: Idd4564488375b8646dde712e6ce4a158c23020ee Reviewed-on: https://chromium-review.googlesource.com/318264 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill cb34ea5e 2015-12-11T16:01:18 Re-land "Finish ReadBuffer support in end2end_tests." Currently we had a few TODOs concerned about unimplemented calls in ANGLE. ANGLE now has support for ReadBuffer, so uncomment the calls. Re-land with end2end_tests fix. BUG=angleproject:940 Change-Id: I6e00c3aac6307308fb7f00c7e0426812563ed778 Reviewed-on: https://chromium-review.googlesource.com/317821 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 8e89866d 2015-12-11T12:24:21 Remove redundant index integer check from ValidateLimitations Non-integer indices are already rejected in the parser, so the ValidateLimitations pass doesn't need to check for them. ESSL 1.00 spec is not actually terribly clear about whether the parser should do this check, but the language grammar in the spec only has indexing with "integer_expression" so it seems like ANGLE's interpretation of only allowing indexing with integers is correct. ESSL 3.00 makes this restriction explicitly clear in section 5.7. BUG=angleproject:1254 TEST=angle_unittests Change-Id: I02b2a6f4d9fa7801a98df63ed21bc990e1585eb8 Reviewed-on: https://chromium-review.googlesource.com/317741 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 8a76dcc7 2015-12-10T20:25:12 Don't try to apply ForLoopUnroll to loops it can't handle ForLoopUnroll should only mark loops that fit the limitations in ESSL 1.00 Appendix A. BUG=angleproject:1253 TEST=angle_unittests, WebGL conformance tests Change-Id: I00b0a7d29cd42efea9611d020aa1f873ac04773f Reviewed-on: https://chromium-review.googlesource.com/317551 Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Yuly Novikov 5807a536 2015-12-03T13:01:22 Fix buffer unbinding upon deletion. - Remove buffer bindings for new ES3 buffer types. - Fix detachment behavior to GLES3 spec, i.e. detach only from currently bound containers. - Make pack/unpack buffer binding parameter available in GLES3. - Update test expectations. BUG=angleproject:1191 Change-Id: Iab4c1de8d96a523d5af55d22956d50c10f7c93c2 Reviewed-on: https://chromium-review.googlesource.com/315521 Tryjob-Request: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho d561057f 2015-12-10T19:42:09 Fix ValidateLimitations for folded non-constant expressions ANGLE recently gained the ability to constant fold some expressions that are not constant expressions. ValidateLimitations should continue to recognize all cases where an expression is not a constant expression. BUG=angleproject:851 TEST=angle_unittests Change-Id: I8ad0552a59213cdd6af9a220ffd672be9752271d Reviewed-on: https://chromium-review.googlesource.com/317281 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Frank Henigman b0f0b81d 2015-11-21T17:49:29 Don't skip delete_bound.transform_feedback. A one-line subset of 36167ab3 allowed dEQP-GLES3.functional.lifetime.delete_bound.transform_feedback to pass, though it indented that line differently than its neighbors. Fix up the indentation and don't skip the test. BUG=angleproject:1150 TEST=angle_deqp_gtest_gles3_tests --gtest_filter='*transform_feedback*' Change-Id: I8471bd46f8a642b0945b43ab9b980c11c50d63c0 Reviewed-on: https://chromium-review.googlesource.com/313860 Tryjob-Request: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Frank Henigman <fjhenigman@chromium.org>
Austin Kinross 31c9d16e 2015-12-08T10:51:25 Re-land "Disable RTTI in VS release builds" - Re-land with fix for Chromium Debug Windows builds Chrome forbids RTTI, but standalone ANGLE currently allows it. Disallowing RTTI in standalone release builds brings ANGLE and Chrome closer, and prevents accidental use of dynamic_cast in ANGLE. It also reduces binary size. Win10 libGLESv2 (x86) is 47KB smaller after this. BUG=angleproject:1239 Change-Id: I505fd0d72868a38444e47198a9bf85ee3e25719f Reviewed-on: https://chromium-review.googlesource.com/316830 Tryjob-Request: Austin Kinross <aukinros@microsoft.com> Tested-by: Austin Kinross <aukinros@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Nico Weber 08bf81d5 2015-12-09T16:23:32 clang/win: Let EGLDeviceTest.cpp build with -Wextra on trunk too. Like https://chromium-review.googlesource.com/317360, but for code that's in ANGLE trunk but not yet rolled in by Chromium. BUG=567877 Change-Id: I59b1568b134f57919eb333e99e7d185416d5d3b5 Reviewed-on: https://chromium-review.googlesource.com/317390 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tryjob-Request: Jamie Madill <jmadill@chromium.org> Tested-by: Nico Weber <thakis@chromium.org>
Jamie Madill d3754d82 2015-12-09T22:45:44 Revert "Finish ReadBuffer support in end2end_tests." Fails on the bots, on ReadPixelsTest.DrawWithPBO/ES3_D3D11 BUG=angleproject:940 This reverts commit ada5d07ec6c3578eb07adbb647360c0ae60edf46. Change-Id: I60c71af6317f6b5ee1bf1555cb4573c5e82a11d6 Reviewed-on: https://chromium-review.googlesource.com/317430 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Nico Weber 0c93b8a0 2015-12-09T15:31:40 clang/win: Let EGLDeviceTest.cpp build with -Wextra. In a Chromium build, this target is built as part of gpu, with the chromium_code warning settings applied. Make sure it builds in that config. BUG=567877 Change-Id: I7464538a259295d83d990853b06b9ba76b82889d Reviewed-on: https://chromium-review.googlesource.com/317360 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Nico Weber <thakis@chromium.org>
Jamie Madill ada5d07e 2015-12-08T15:40:52 Finish ReadBuffer support in end2end_tests. Currently we had a few TODOs concerned about unimplemented calls in ANGLE. ANGLE now has support for ReadBuffer, so uncomment the calls. BUG=angleproject:940 Change-Id: Ib297e3ab7f2fa2424ee2cc85918331066dae4475 Reviewed-on: https://chromium-review.googlesource.com/317340 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 508a5b7d 2015-12-08T11:26:14 Windows: Write test name in debug log. This helps isolate particular debug log messages to specific tests. BUG=angleproject:667 Change-Id: I6be37d50cc41a13abbceb395e6e9b603bd44c7bd Reviewed-on: https://chromium-review.googlesource.com/316611 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1e928bc0 2015-12-09T13:17:39 dEQP/Win: Skip trig tests that crash on new compiler. The new version of D3DCompile_47.dll that gets bundled with the Chromium depot_tools Windows SDK seems to crash when compiling these shaders, I think during the optimization step. BUG=angleproject:1252 BUG=568170 Change-Id: Ic54a6353ffe3520ecc5e5012721c0a09eb370b22 Reviewed-on: https://chromium-review.googlesource.com/317331 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6163c759 2015-12-07T16:32:59 ES3: Allow floating point blit conversions under extension. If we support EXT_color_buffer_float, we should also allow blits to and from float and fixed point data, according to the extension spec. BUG=angleproject:1243 TEST=dEQP-GLES3.functional.fbo.blit.* Change-Id: I0957ac0647c94e38ebd67480c608eeb16c82dbf4 Reviewed-on: https://chromium-review.googlesource.com/316030 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang c5629759 2015-12-07T16:29:04 Implement full program binary support for ES3. Refactor validation to be used in both the OES and ES3 entry points. BUG=angleproject:600 BUG=angleproject:1101 Change-Id: I2008c4ea04ce07910f03ae0b997f8a77b66203d8 Reviewed-on: https://chromium-review.googlesource.com/316620 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 36167ab3 2015-12-07T10:27:14 Don't allocate VertexArray or TransformFeedback objects until binding. Follow the spec more closely and only reserve IDs of vertex arrays and transform feedback objects before binding. This saves memory and allows the glIs* calls to succeed. BUG=angleproject:1218 BUG=angleproject:1101 Change-Id: I0039680c39c66c1c5506f6a1a9121a71791b77e9 Reviewed-on: https://chromium-review.googlesource.com/316591 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 50b3fe89 2015-12-08T14:49:12 Revert "Don't allocate VertexArray or TransformFeedback objects until binding." This reverts commit 070c0124be642383220ca44f795225b89d56f13b. Change-Id: I4ffa528f63311615bb4e22593c6e8a0ec424cd2d Reviewed-on: https://chromium-review.googlesource.com/316780 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 6c9b2ae9 2015-12-08T13:43:11 Revert "D3D11: Use clamp wrap mode for Integer textures." dEQP-GLES3 texture failures: http://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20dEQP%20%28NVIDIA%29/builds/4510/steps/angle_deqp_gles3_tests/logs/stdio dEQP-GLES3.functional.shaders.texture_functions.texture.isampler* dEQP-GLES3.functional.shaders.texture_functions.texture.usampler* BUG=angleproject:1244 This reverts commit 7a6a1ffeb275a8b565701305c8b42857ff2bf0b0. Change-Id: I0e25e7aed0e0d78015d5b8f5a7b9a81e0a5fca4e Reviewed-on: https://chromium-review.googlesource.com/316641 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 61fea139 2015-12-07T14:20:02 Protect against overflow in BinaryInputStream. BUG=angleproject:1112 Change-Id: I6d58d9e0db97ec6c67661abd92b57f61f357d6b5 Reviewed-on: https://chromium-review.googlesource.com/316640 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 41a2b8ea 2015-12-07T21:44:26 Revert "Protect against overflow in BinaryInputStream." This reverts commit dfa2fe31ad66ede57af1c0244ee99b8918eb2d9b. Change-Id: If4a7eb1876876991c537d0a9077cede52ba40b95 Reviewed-on: https://chromium-review.googlesource.com/316621 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill a5ed56ee 2015-12-07T16:32:59 D3D11: Mask off alpha channel for RGBA->RGB blits. We emulate RGB8 in D3D11 with RGBA8 textures. Make sure when we blit that we don't copy the unused texture channel. BUG=angleproject:1245 TEST=dEQP-GLES3.functional.fbo.blit.* Change-Id: I805132fda984860a6d84ad4c1fc7169973938df9 Reviewed-on: https://chromium-review.googlesource.com/316010 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>