src/tests


Log

Author Commit Date CI Message
Ian Elliott 7f8b6e3f 2020-01-20T13:59:32 Vulkan: Add support for GL_IMAGE_FORMAT_COMPATIBILITY_TYPE For some reason, this wasn't implemented when texture image load and store was implemented. Bug: angleproject:4311 Change-Id: I24c508660ad7eb3aa944601175803751b54ce0ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2011324 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Ian Elliott 845a09b8 2020-01-20T12:57:18 Vulkan: glDeleteTexture unbind all image texture units The old code only unbound one image unit when a texture was deleted. The GLES specification is clear that the texture should be unbound from all units: If a texture object bound to one or more image units is deleted by DeleteTextures, it is detached from each such image unit, as though BindImageTexture were called with unit identifying the image unit and texture set to zero. Bug: angleproject:4310 Change-Id: I24c508660ad7eb3aa944601175803751b54ce0dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2011322 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 62475e95 2020-01-20T11:16:24 Allow tests to pick ANGLE features. This uses the EGL_ANGLE_feature_control extension through the test harness to control feature selection via a test config. This obviates the need for the hacky platform methods table override. Also adds a command graph feature that will be used to prototype the command graph linearization for Vulkan. Bug: angleproject:4029 Change-Id: Id37fadd5d2c317c9d9dd90dfab1fdc8e4ac3701f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2007612 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3cbeaba4 2020-01-17T12:28:45 Remove suppression of passing test Fixed in https://chromium-review.googlesource.com/c/angle/angle/+/2006813, but suppression was not removed. Bug: angleproject:4309 Change-Id: I430501c0d977a8c5999390f2ad895290e2301dc5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2008129 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 33a2c43d 2020-01-16T15:24:47 Sort GLES 3.1 expectations to show conformance blockers Sorted by group (i.e. blocking conformance, desktop, general Vulkan, Android). Bug: angleproject:3520 Change-Id: I6f7c702460b3d1908838796d88e5448d4f83b242 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2006018 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 5860f84a 2020-01-17T00:58:48 Vulkan: Narrow KHR-GLES31 image failures Bug: angleproject:4309 Bug: angleproject:4310 Bug: angleproject:4311 Bug: angleproject:4312 Bug: angleproject:4313 Bug: angleproject:4314 Bug: angleproject:4315 Bug: angleproject:4316 Change-Id: Ibda4eac6a49ad7a8fcf0ec68b6dd199a3f66ebb0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2006812 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jonah Ryan-Davis d9689725 2020-01-16T14:46:46 Suppress UniformsBenchmark perftest on Win/NVIDIA/Vulkan Started failing on Jan 11, 2020 Bug: chromium:1041672 Change-Id: Ie51c0d363b49025c607c32a1858cdaf8c38ebf87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2003013 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Mohan Maiya df0203a9 2020-01-15T14:05:33 EGL: Add support for EGL_EXT_pixel_format_float extension Add support for floating point configs. On backends that support rendering to floating point formats, add them to EGL's frambuffer config list Bug: angleproject:3958 Tests: dEQP-EGL.functional.wide_color.*fp16* angle_end2end_tests --gtest_filter=EGLFloatSurfaceTest* Change-Id: Ie65f63013483267985c2b308567bf5025acf750e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993686 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott a7b91502 2020-01-15T13:35:08 Vulkan: Updated expectations after recent fixes Bug: angleproject:3569 Bug: angleproject:3596 Bug: angleproject:4106 Bug: angleproject:4108 Bug: angleproject:4300 Change-Id: Iab88bf5db19af802ad41ef8bf68f643420857989 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2003233 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Artem Bolgar ffdd58f5 2019-12-28T15:34:41 Fixing OVR_multiview and OVR_multiview2 issues Found two issues when native OVR_multiview and OVR_multiview2 extensions are generated. 1. OVR_multiview got replaced by the OVR_multiview2 in the translated shader (ESSL & GLSL) 2. Duplicate #extension OVR_multiview2 (for Fragment & Vertex) and 'layout (num_views=x)' (for Vertex) got generated into the translated shader. Bug: angleproject:4247 Change-Id: I9a550883eeb326d95af4557578f8202a9493f4ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1983802 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 2e1beb40 2020-01-14T12:08:02 Add a test to expose translator bug w.r.t short circuiting Bug: angleproject:3829 Change-Id: I872118f145886eecaed1680268e95419385b9d9e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001237 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi feb3b6cc 2020-01-13T22:58:59 Vulkan: Remove row->col major shader transformation This was done based on the incorrect assumption that Vulkan GLSL doesn't allow layout qualifiers on interface block fields. This was due to glslang compile failures in some shaders that included mixed row- and column-major fields in interface blocks. However, the failures were only in the case the interface block is inactive, in which case glslang wrapper previously replaced the layout/qualifier of the interface block with |struct|, which left the shader with an unused struct definition with fields that have layout qualifiers; an invalid shader. The change introduced in https://chromium-review.googlesource.com/c/angle/angle/+/1951523 removes inactive shader interface declarations. The above scenario thus never occurs, rendering the row- to column-major transformation unnecessary. Bug: angleproject:3443 Change-Id: Ice34a0fc6e047b79a4d44f04b730ec59bdfafe33 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961098 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
jchen10 b09d46cc 2020-01-13T10:56:46 Add P010 stream test Makes sure P010 stream can work correctly. Bug: chromium:1033416 Change-Id: I1b49568cd667697337335a0eca74504bd0e36f5c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1996912 Reviewed-by: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 740c4ea7 2020-01-13T17:21:54 Invoke the standalone test harness runner. Previously we were still calling GoogleTest directly. This change switches the test main funtions to call the standalone harness. Only affects standalone and shouldn't affect the tests in Chromium or on the current test setup. Bug: angleproject:3162 Change-Id: Ia5a5a73d47c0b47b4df8f54cd6df71da2d878847 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1998661 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill 238adb7a 2020-01-13T17:21:53 Fix test harness running disabled tests. Adds special handling for the DISABLED_ GTest test name. Fixes the test for the test suite harness itself when run with the new "--bot-mode" flag. Bug: angleproject:3162 Change-Id: Idf34098d2d6bcb78263773be7b01c55df9ec624b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1998660 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 680a7d3b 2019-12-09T16:07:43 Vulkan: Add test that exposes sampler refactor bug Bug: angleproject:4211 Change-Id: I9e9cdacd4f24131101029d17932625e2e3c7d7e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1957836 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill 683dd1d6 2020-01-13T17:21:52 GN: Move util build code into util/BUILD.gn. Prepratory clean up for WinUWP support. Bug: angleproject:4182 Change-Id: I97cc6cb42a50c6b57ca7d375d1e0a6b3da7aa9d7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1998673 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Ian Elliott 8b3a0fa8 2020-01-13T15:57:27 Vulkan: Update expectations SwS change fixes 2 tests Changing SwiftShader to return: VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT for for VkPhysicalDeviceLimits::sampledImageIntegerSampleCounts fixes two tests that were failing with SwS. This also fixes the expectations file for another test. Bug: angleproject:4260 Bug: angleproject:4259 Bug: angleproject:3565 Change-Id: I698468ff8421b1c8556c8671b173e1cfde6b7f6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1999484 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi ed074852 2020-01-07T13:26:27 Add a perf test for drawing with alternating programs The programs have a different shader interface, to force rebinding descriptor sets in the Vulkan backend. Bug: angleproject:4261 Change-Id: I7a18a441483dfe34bd40b5a30ca34b7fd0dc3219 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1990085 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi f0be7c81 2019-12-02T15:42:33 Fix GLSLTest_ES3.MixedRowAndColumnMajorMatrices_ReadSideEffect The test had two array sizes swapped, causing failure on vendors that statically verified index-out-of-bound accesses. Bug: angleproject:3831 Change-Id: I8ec32e9c11b38b69f03b1a22e60dfb6c6e82c2a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947123 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 6b275406 2020-01-09T11:14:47 Vulkan: Workaround vertex attributes vs stride issue on AMD Under robustBufferAccess, Vulkan states that: Vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than either: - vertexBufferRangeSize, if bindingStride == 0; or - (vertexBufferRangeSize - (vertexBufferRangeSize % bindingStride)) The latter implies that if the buffer size is not a multiple of the vertex attribute stride, what lies beyond the last multiple of stride is considered out of bounds. It also says: Out-of-bounds buffer loads will return any of the following values: - Values from anywhere within the memory range(s) bound to the buffer (possibly including bytes of memory past the end of the buffer, up to the end of the bound range). - Zero values, or (0,0,0,x) vectors for vector reads where x is a valid value represented in the type of the vector components and may be any of ... The first bullet point indicates that the driver is allowed to load the attribute values from the buffer if its range still lies within the buffer size. Take the following example: - Buffer size = 12 - Attribute stride = 8 - Attribute offset = 0 - Attribute size = 4 Basically the buffer is thus laid out as follows: attr stride _________/\_________ / \ +----------+----------+----------+ | vertex 0 | padding | vertex 1 | +----------+----------+----------+ \___ ____/ V attr size In the above example, the attribute for vertex 1 is considered out of bounds, but the driver is allowed to either read it correctly, or return (0, 0, 0, 1) for it. Most drivers implement the former, while AMD implements the latter. This change introduces a workaround for AMD where GL_MAX_VERTEX_ATTRIB_STRIDE is limited to 2048 (the common value for it according to gpuinfo.org) and conservatively rounds up every buffer allocation to that size. While technically, this workaround should be applied on any device with the robustBufferAccess feature enabled, it is currently limited to AMD to avoid the inefficiency. A possible future revision of Vulkan may relax the above restrictions. Bug: angleproject:2848 Change-Id: Ida5ae5d777da10f22ce8be5a09a7644b5bbd778e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1991709 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8fde1151 2020-01-09T14:22:35 Vulkan: fix default uniform descriptor rebind on program change When the program binding changes, we set the descriptor sets binding dirty bit if the program had any textures, UBOs, SSBOs, images or atomic counters. The check for default uniforms was missing. So if the two programs had no resources and were only using default uniforms, then drawing with one after the other didn't update the descriptor set binding of the default uniforms for the second draw. Bug: angleproject:4277 Change-Id: I631a1619658ee713484cfaee99fe1e39987e16e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993408 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Eric Binet 4ffc254e 2020-01-08T09:58:24 Only initialize the timestamp query pools if the extension is available. Also added a few assertions to ensure that timestamp queries aren't attempted when support is missing. Bug: angleproject:4114 Change-Id: Ie6d7d5face59f9bc137aebd86c9d0e965773e6e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1992184 Commit-Queue: Eric Binet <ericbinet@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kenneth Russell 7a37d3ac 2020-01-05T13:52:03 Work around Intel driver bug with CopyTex{Sub}Image2D/DeleteTextures. Dependencies seem to be incorrectly tracked in some Intel OpenGL drivers (on macOS specifically), causing crashes in glDeleteTextures if a GL command buffer is being constructed where those textures are destinations of CopyTexImage2D/CopyTexSubImage2D. Work around this bug by flushing before texture deletion if CopyTex{Sub}Image have been called recently. The tracking is only done on a per-context rather than a per-device basis, but seems sufficient to work around the problem as identified. Tested both with new ANGLE test on affected hardware, and in WebKit's ANGLE backend for WebGL. Works around the crash reported in https://bugs.webkit.org/show_bug.cgi?id=205707 . Bug: angleproject:4267 Change-Id: I2266a5590759f6a3f19080def08710ef4b66d463 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1987932 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Eric Binet b84cdffe 2020-01-06T14:59:44 Fix colored indexed point tests not using color in vertex buffer. In the previous version, the IndexedPointsTestUInt tests named VertexWithColorUnsignedIntOffset* were redundant with UnsignedIntOffset*. Bug: angleproject:3923 Change-Id: I6b9b8f2bd78882bcac7c3b89e798291ee94eea70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1988998 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott c8d7f047 2020-01-07T10:06:07 Vulkan: Update number of samples when changing draw framebuffer This fixes a crash (preceeded by Vulkan validation errors) when running the following test: --gtest_filter=dEQP.KHR_GLES31/core_texture_storage_multisample_FunctionalTests_blitting_multisampled_depth_attachment* --use-angle=vulkan The problem is that GraphicsPipelineDesc::updateRasterizationSamples() is rarely called (e.g. glBindFramebuffer). The above dEQP test changes between draw attachments that do and don't have multisampling enabled. The number of samples is set (the first time) to have multisampling enabled, and never changed, even though other attachments don't have multisampling. FramebufferVk::syncState() now calls updateRasterizationSamples(). That fix uncovered a latent problem: when an application destroys all framebuffers (including the draw framebuffer), the ContextVk still points at the old draw framebuffer's FramebufferVk (now freed). This is fixed with new plubming to clean-up ContextVk::mDrawFramebuffer. Bug: angleproject:4240 Change-Id: I151ec40ab821efc07c26323c34275c9165ad2ed5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1983393 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Corentin Wallez cbbb3aaf 2020-01-07T15:03:20 Suppress VertexAttributeTest.DrawArraysWithBufferOffset on Mac NVIDIA The test fails with the following at a very low flake rate: ../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp:230: Failure Expected equality of these values: angle::MakeGLColor(255, 255, 255, 255) Which is: White angle::ReadColor((midPixelX + viewportSize[2]) / 2, midPixelY) Which is: Transparent Black TBR=jmadill@chromium.org Bug: angleproject:4269 Change-Id: I82752acfbcb2a067ccb35a7a456def03299c359f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1987258 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Shahbaz Youssefi 806d812e 2020-01-03T13:48:30 Vulkan: Reorder descriptor sets This change moves driver uniforms to a set with a lower id than the one that includes (emulation) transform feedback buffers. Imagine the following: - Program 1 with xfb: UniformsSet: 1 VS uniforms buffer, 1 FS uniforms buffer, 1 xfb buffer - Program 2 without xfb: UniformsSet: 1 VS uniforms bufer, 1 FS uniforms buffer. Previously, UniformsSet was index 0, and DriverUniformsSet was index 3. When switching from Program 1 to Program 2, the layout of UniformsSet changes, which means every subsequent set needs to be rebound. This is a Vulkan pipeline layout compatibility rule. This is done with invalidateCurrentTextures() and invalidateCurrentShaderResources() already when handling gl::State::DIRTY_BIT_PROGRAM_EXECUTABLE. The bug is that the driver uniforms are not invalidated. This is normally not an issue, because usually when switching from Program 1 to Program 2, transform feedback is paused, and this state change does invalidate driver uniforms. However, the following scenario doesn't do this: - Begin Xfb - Pause Xfb - Use Program 1 - Draw - Use Program 2 - Draw - End Xfb There is no driver state change between the two draw calls, which means the second draw will attempt to draw using the driver uniforms bound for the first draw call. There is a Vulkan validation error here due to the above pipeline layout validation rule. The issue manifests itself only when the second draw call actually uses driver uniforms, as otherwise that set is inactive and not validated; i.e. when line raster emulation is used. In summary, the validation error manifests itself when: - Transform feedback and line raster both use emulation - Transform feedback is paused - A draw with an xfb program is followed by a non-xfb program - The second draw is a line draw A test is added for this. The solution is to reorder the sets so that DriverUniformsSet is placed before UniformsSet. This way, changes to the layout of UniformsSet don't invalidate DriverUniformsSet. In fact, based on the above, any change in the layout of the program should have required an invalidation of the driver uniforms. This bug is probably masked by the fact that ContextVk::handleDirtyDescriptorSetsImpl() always rebinds the graphics driver every time any descriptor set needs rebinding. That should be removed in a follow up change. Bug: angleproject:4261 Change-Id: I21ad4152b454a1fe70554be02e18a9c94fb3e7a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986927 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
shrekshao 51e653f0 2020-01-02T13:53:03 Suppress flaky failure with MacOS/NVIDIA/OPENGL Seeing intermittent failure on this test only on MacOS/NVIDIA/OPENGL. Suppress for now. Bug: angleproject:4258 Change-Id: Ibda30954019410e3b6d069986b2cd0ad26533c00 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1984850 Reviewed-by: Shrek Shao <shrekshao@google.com> Commit-Queue: Shrek Shao <shrekshao@google.com>
Jeff Vigil 8c0bbfbb 2019-11-25T14:48:11 EGL: Implement EGL_ANDROID_framebuffer_target Add attribute to configs. Add attribute matching logic. Does not set attribute in Vulkan configs, need solution to query Android for which formats are valid. anglebug.com/4208 New end2end test. Bug: angleproject:3961 Test: angle_end2end_tests --gtest_filter=EGLAndroidFramebufferTargetTest* Change-Id: I7e14c47b39e9539f6181c3c1d75c76fe63ca0f8c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1960508 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Courtney Goeltzenleuchter 7dfc99e5 2019-12-18T16:37:20 Vulkan: Update dEQP source for test fixes Also fix scripts/gen_vk_gl_cts_build.py to always use '/' as file separator. Otherwise, running the script on Windows uses '\' which Linux doesn't like. Test: angle_deqp_gles31_tests --use-angle=swiftshader --gtest_filter=dEQP.GLES31/functional_debug_negative_coverage_get_error_vertex_array_draw_range_elements Bug: angleproject:2324 Bug: angleproject:4234 Change-Id: I3b212e0d0ba97996f1d86f7fc81e58c3b03a9cbb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1975020 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen ab42afa6 2019-11-21T10:13:44 Metal: fix vertex attribute's conversion lost after changing buffer binding. After vertex buffer's attribute is converted and stored in conversion buffer. Binding the same attribute to another buffer, then binding it back to previous buffer will result in previous conversion information lost. The conversion method would skip the conversion due to buffer's content hadn't been changed, however it didn't reuse the old conversion result. This CL also changed the way binding offset is used in Metal backend. - Previous, the offset would be assigned to the offset field of MTLVertexAttributeDescriptor, then the buffer would simply be bound to the command encoder with offset=0 i.e. setVertexBuffer(buffer, index, 0) - However this approach has several disadvantages. Since Metal doesn't allow MTLVertexAttributeDescriptor's offset to be larger than the vertex attribute's stride, the old approach would force the back-end to convert the attribute and store in conversion buffer. New approach: - MTLVertexAttributeDescriptor's offset will be zero. The offset will be used to bind the buffer itself to the render command encoder. i.e. setVertexBuffer(buffer, index, offset) This way the "offset <= stride" restriction no longer exists. The only restriction is the offset must be multiple of attribute's size. Added 3 new tests: - SimpleStateChangeTest.RebindTranslatedAttribute - VertexAttributeTest.DrawWithLargeBufferOffset - VertexAttributeTest.DrawWithLargeBufferOffsetAndLessComponents Bug: angleproject:2634 Change-Id: I6c2fa8091436e4a24405d791f86d17d97df02d64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1940009 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
shrekshao 81ee4d29 2019-12-04T17:05:11 Workaround EXT_texture_norm16 for OpenGL ES drivers Implement a workaround for widespread bugs calling glReadPixels with RGBA/UNSIGNED_SHORT against R16/RG16 color attachments. Read back the data using the GL_IMPLEMENTATION_COLOR_READ_FORMAT, and then rearrange the read back pixels to fit the RGBA layout. Also skip RGB16/RGB16_SNORM texture sample test on Nexus 5X/Nexus 6P due to a another driver bug. Bug: chromium:1000354, angleproject:4214, angleproject:4215, angleproject:4245 Change-Id: Iedea6f4136878cac5ad0dec3757c77b73502e1cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1952166 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com>
Xinghua Cao 1fdf6ca5 2019-12-31T14:25:35 D3D11: Restrict to translate uniform block to StructuredBuffer Only translate uniform block to StructuredBuffer when system is Windows 10 and later. Bug: angleproject:3682 Change-Id: I27e3f4503392791883a44e1d486ffe9512e04bd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1984863 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 942d9152 2019-12-23T15:31:52 EGL: Add support for EGL_KHR_gl_colorspace extension If the Vulkan backend supports VK_EXT_swapchain_colorspace extension, enable the option for applications to create surfaces with non-linear formats. Not all formats have non-linear versions and is platform specific. Tests: dEQP-EGL.functional.wide_color.* angle_deqp_egl_tests --use-angle=vulkan --deqp-gl-context-type=egl --deqp-case=dEQP-EGL.functional.wide_color.* Bug: angleproject:2514 Change-Id: I441ee797cceef92c84473bfa18605c4fd8180de1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1951963 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi a35aa03a 2019-12-20T16:15:53 Vulkan: EXT_gpu_shader5: textureGatherOffsets The validation of the offsets parameter is added in this change. Bug: angleproject:3569 Change-Id: Ide2ea4b9e88b28ca5ef34d5f3f5203f6e48d5f74 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1979133 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi beb33691 2019-12-20T16:15:20 Vulkan: EXT_gpu_shader5: Fix textureGatherOffsets builtin This function is the only builtin with arrays as parameter. A new constexpr constructor is added to TType to support this, and gen_builtin_symbols is changed to emit the correct type for offsets parameter of this function. Bug: angleproject:3569 Change-Id: I55af58b43f24cd605c622ee685b359535e11ef85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1975431 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 86d9c93a 2019-12-16T16:07:04 Use TSpan for TType's array sizes Until C++20, std::vector doesn't have a constexpr constructor, which means TType cannot use a `TVector` for `mArraySizes` if an arrayed type needs to be created constexpr. This is needed for the upcoming textureGatherOffsets implementation. A new TSpan class is introduced, based on std::span (from C++20) that holds the pointer/size allocated from a TVector without owning it. Since TVector's allocation are made from a pool, the allocated memory will live beyond the vector's destruction. `TType::mArraySizes` is changed to this type. This change will allow a new constexpr constructor to be added to TType that takes a TSpan as array directly, a value which is constexpr initialized from a static array (instead of TVector). Bug: angleproject:3569 Change-Id: I78793b0f4c64519e0ebe30cf6e0de995ba70035d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1968260 Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tobin Ehlis c713abfd 2019-12-23T12:03:02 Vulkan:Transform/feedback instanced draw support These fixes allow dEQP 3.1 KHR-GLES31.core.vertex_attrib_binding.basic-input* test cases to pass. This fixes a bug in instanced drawing with transform feedback buffers where we were overwriting the initial transform feedback output as new instances were drawn. To fix this, the vertices in each draw are passed into a uniform value and the output is offset based on the current instance and the number of vertices in the draw. It also fixes a validation error where transform feedback descriptor was sometimes setting a buffer range of 0. This is not allowed, so in the 0 case we pull the actual buffer size from the bufferHelper object. Bug: angleproject:4236 Change-Id: Ib72898a0e6caab96c446c1e996a6124d2c001193 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1979600 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com>
Tobin Ehlis 67d8b63a 2019-12-23T11:35:52 Vulkan:Update Vulkan Vertex Attribute Offsets This fixes most of the test for dEQP 3.1 KHR-GLES31.core.vertex_attrib_binding.basic-input* The bug fixes is that we were not correctly setting the vertex attribute offset for vertex attribs that were converted into their own buffer. We kept the attrib offset from the frontend as if the converted attribs were in the original buffer, but converted vtx attrib buffers in the VK backend are tightly packed from the start of the buffer so when converting the actual offset should be 0. Also, in order to avoid a VK validation error, this change includes a tmp workaround to make sure transform feedback output buffer range is never 0, but sets VK_WHOLE_SIZE in that case. A follow-on fix that focuses on transform feedback fixes will address this validation error more fully. Bug: angleproject:4145 Bug: angleproject:4236 Change-Id: I8c218954725945414a8f18beb4f964b90da7062a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1980906 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 87607526 2019-12-23T22:48:06 Disable flaky test on Metal Bug: chromium:1037665 Bug: angleproject:4177 Change-Id: I38f05f1567803e7ac0c631d94056f26dc122a4f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1980278 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Khushal c41f2e56 2019-12-23T13:33:58 Disable UniformBufferTests on Windows 7 / D3D11 / NVIDIA. Bug: chromium:1037644 Change-Id: Ic8bf76bb0c1b8bdcf36f6af5a8d91ac815334917 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1981070 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Shahbaz Youssefi 07f0f019 2019-12-19T14:47:46 Translator: Memory qualifiers on SSBO fields These were not output prior to this CL. Of these qualifiers, readonly and writeonly are unnecessary as ANGLE already does the appropriate validation, but the rest (coherent, volatile, restrict) are necessary, even though the tests pass on the bots by coincidence of driver behavior/test simplicity. Bug: angleproject:3602 Change-Id: Ie75fee0f004944b50ef21124ba25c4315e082b85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1976499 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Xinghua Cao 0af8b596 2019-09-03T16:24:45 D3D11: Translate uniform blocks to StructuredBuffer when necessary fxc exhibits slow compile performance with dynamic cbuffer indexing. So when a uniform block contains only one large array member, which is an array of structures, translate this uniform block to a StructuredBuffer instead. Bug: angleproject:3682 TEST=angle_end2end_tests.UniformBufferTest.* Change-Id: Ife80dba8aae65b761737e095895e00a570230f88 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1782046 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott abc8f277 2019-12-19T10:47:31 Vulkan: Disallow multisampling with a sample count of 1 GLES uses a sample count of 0 to indicate non-multisampling, and a sample count of 1 or greater to indicate multisampling.  While the Vulkan specification seems to support multisampling with a sample count of 1, the following spec language effectively disallows it (even when the underlying Vulkan driver supports it): If the image was created with VkImageCreateInfo::samples equal to VK_SAMPLE_COUNT_1_BIT, the instruction must have MS = 0. The following GLES 3.1 dEQP tests use shaders that look for the sample position, with a sample count of 1: dEQP-GLES31.functional.texture.multisample.samples_1.* For Vulkan drivers that fully support multisampling with a sample count of 1, these tests pass, but get Vulkan validation errors because of the above spec language. This was discussed in the Khronos-private issue tracker (see: https://gitlab.khronos.org/vulkan/vulkan/issues/1925).  The Vulkan working group wondered if ANGLE could live with not supporting a sample count of 1 (but upgrading such requests to the next-largest supported sample count, per the GLES specification).  This change implements that approach. Bug: angleproject:4197 Bug: angleproject:4212 Change-Id: I009ba47b48efe5af464011c7c15022fc01f45e76 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1974842 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jonah Ryan-Davis 9d03c297 2019-12-20T11:53:32 Skip all Metal dEQP tests First step in running dEQP tests on the Metal backend on the bots Bug: angleproject:4235 Change-Id: Ib191205179d98bc907cc7d48340744ea719a0bc2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1978577 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Courtney Goeltzenleuchter 816132a3 2019-12-17T15:47:09 Do not send attribute data for built-ins Built-ins (e.g. gl_VertexID or gl_InstanceID) were settings dirty bits in the driver's ActiveAttribLocationsMask which would later cause the Vulkan back-end to issue bind commands on these built-in attributes that don't have / need anything bound. Test: angle_deqp_khr_gles31_tests --use-angle=swiftshader --gtest_filter=dEQP.KHR_GLES31/core_shader_storage_buffer_object_advancedswitchBuffersvs Bug: angleproject:4107 Change-Id: Id1f1c6699d512d0726b22d9bb0c16abad179950d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972200 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi 4b80fbc8 2019-12-18T23:40:15 Fix textureGatherOffsets classification sampler2DRect was placed under ESSL while sampler2DArrayShadow was placed under desktop GLSL. They are swapped. Bug: angleproject:3569 Change-Id: Ibf39868d4cd702d9d1da7fc286171bb70b80d6df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1975430 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 6423b7fc 2019-12-04T18:45:24 Return the correct location count for Matrices GetLocationCount() is currently returning the number of rows in the matrix, rather than the columns, which leads to shader validation errors (and test failures). This fix returns the number of columns in a matrix. Bug: angleproject:4200 Test: dEQP-GLES31.functional.separate_shader.random.63 Change-Id: I8d25eb3733c2ddbe53ff54794f480c1d43e22a88 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1952173 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Ian Elliott 20432bf3 2019-12-18T08:51:34 Vulkan: Update GLES 3.1 expectations for now-passing tests. Bug: angleproject:4099 Bug: angleproject:4100 Bug: angleproject:4102 Change-Id: I975485baea3ff6ec8247cbb5c92efdb907974ebc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1974271 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Courtney Goeltzenleuchter cd129d17 2019-12-16T15:08:11 Reset binding offset & size when unbinding Bug: angleproject:4147 Change-Id: I4ace1221d32631cdb14a95c71ee9a1617837a5ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1970495 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Yan 17b3c2f3 2019-10-14T14:13:59 Implement SamplerVideoWEBGL for WEBGL_video_texture extension on desktop WEBGL_video_texture is an extension that will improve uploading video frame to WebGL performance. (https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/) This extension introduced a new texture type TEXTURE_VIDEO_IMAGE_WEBGL and a new sampler type samplerVideoWEBGL to sample it. In chromium implementation, TEXTURE_VIDEO_IMAGE_WEBGL maps to different native texture type based on platform. On desktop, it maps to GL_TEXTURE2D(Currently supported). On Android, it should map to GL_TEXTURE_EXTERNAL(TODO). SamplerVideoWEBGL needs to be mapped to sampler2D or samplerExternalOES according to TEXTURE_VIDEO_IMAGE_WEBGL implementation. This patch implements samplerVideoWEBGL in Angle to support WEBGL_video_texture on desktop. In this case, samplerVideoWEBGL should map to sampler2D. Bug: chromium:776222, angleproject:3889 Change-Id: Idb0a5fcde37ca75ccc1181226b91f257212e7500 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866274 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott c3f833f3 2019-12-17T16:06:59 Vulkan: Update expectations for newly-passing tests Bug: angleproject:4101 Bug: angleproject:4105 Change-Id: Ida462f69660a55e13b48ebea22ffc2a6b6bfe867 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972202 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 17217c6e 2019-12-17T17:31:17 Vulkan: Fix layers being disabled in tests. The ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT define shouldn't be being checked in tests. Enable the debug layers by default. Bug: angleproject:4227 Bug: angleproject:4229 Change-Id: I9717cb1c611ebd585a5c03ba2057036e1b086001 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972497 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill d50151d3 2019-12-17T13:57:12 Move Serial utils to their own file. This will let the front-end access them without pulling in the rest of renderer_utils. The Serial class in particular will be useful for capture/replay. Also adds a very minimal unit test. Bug: angleproject:4223 Change-Id: I9e63b8a8227a245b20a8f024b960fcf60c7840db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954611 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 44722daa 2019-12-06T22:31:08 Vulkan: Enable inactive SSBO with unsized array tests The change introduced in https://chromium-review.googlesource.com/c/angle/angle/+/1951523 removes inactive shader interface declarations. That automatically resolves an issue where glslang wrapper doesn't handle inactive SSBO declarations with unsized arrays, by removing those declarations at translation time altogether. Bug: angleproject:3714 Change-Id: I710d59546d716bfb5bc0112b5152fed20a810a52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954615 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi d674e1e5 2019-12-12T14:47:24 Vulkan: EXT_gpu_shader5: non-const offset in textureGatherOffset This change includes preparatory work for textureGatherOffsets as well, though that requires special handling which is addressed in a follow-up change. This special handling is due to the fact that this family of functions is the only built-in with an array parameter, and our built-in table generation doesn't handle it correctly. Bug: angleproject:3569 Change-Id: Ic1c8dd03878a184be00f578ab9fc42af8f6e47ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965435 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a5dd3888 2019-12-04T14:31:57 Vulkan: fix handling of inactive atomic counters The translator emulates atomic counters with a storage buffer array during translation to Vulkan GLSL. Glslang wrapper then should assign set/binding to this buffer. However, if the atomic counters are actually unused in the shader, this assignment is never done. This change adds a small tree transformation for Vulkan that removes any uniform or interface block declaration that's not active. In particular, this makes atomic counter emulation a no-op if no atomic counters are used. It also has the benefit of not requiring glslang wrapper to remove such inactive resources. Bug: angleproject:4190 Change-Id: I286c199854ec2379558ad1ec48b4d2c4bf5544d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1951523 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 5407aaa0 2019-12-16T15:50:12 Re-land "Add new test runner harness." (#2) Re-land #2 changes: * export labels are fixed for the CFI build * crash test disabled because of flakiness and issues with asan Re-land changes: * Unit test is suppressed in ASAN * --deqp-case is fixed * Debug layer errors should correctly work with failure expectations Original message: The ANGLE test harness is a harness around GoogleTest that provides functionality similar to the Chromium test harness. It supports: * splitting a test set into shards * catching and reporting crashes and timeouts * outputting to the Chromium JSON test results format * multi-process execution Unit tests are added in test_utils_unittest.cpp. Bug: angleproject:3162 Bug: chromium:1030192 Change-Id: I71d66a407ea0e53d73cbe75b5b4bfb9e73791534 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965091 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Brandon Schade 5cfab195 2019-10-28T09:12:53 Vulkan: Add test that logs supported texture formats Add a whitebox test to log all supported GLES formats for the active Vulkan ICD. The test object is dependent on libANGLE's gl_enum_util.* files as we need it to print out human readable values in the PrintAllFormatSupport test. Test: angle_white_box_tests --gtest_filter=*PrintAllSupportedFormats* Bug: angleproject:4093 Change-Id: I99d74935b705b2984f6320ed80a0e977c8fcd4be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1930607 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 9190f49c 2019-12-16T16:03:57 GN: Make new angle_test_utils target. This source set target lets other targets import the test utils without needing to export them. They get built into angle_util. They also get compiled into the various tests and samples. The change also fixes export issues. Moves some of the GN logic into the util/ subfolder. Bug: angleproject:3162 Bug: chromium:1030192 Change-Id: If99d201092ad8541c0de60b3bd893ac9b5875270 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1968259 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter ce41a43c 2019-12-16T09:49:05 Vulkan: Fix failed assert when unbinding texture We were hitting onImageStateChange with no texture active and hitting the assert in that function for needing a texture. There are times when we call onImageStateChange where there is no texture bound, early exit in those cases. Test: angle_deqp_khr_gles31_tests --user-angle=swiftshader --gtest_filter=dEQP.KHR_GLES31/core_layout_binding_image2D_layout_binding_imageLoad_* also: --gtest_filter=dEQP.KHR_GLES31/core_layout_binding_atomic_uint_layout_binding_atomic_ComputeShader --gtest_filter=dEQP.KHR_GLES31/core_layout_binding_buffer_layout_binding_atomicAdd_ComputeShader --gtest_filter=dEQP.KHR_GLES31/core_layout_binding_block_layout_binding_block_ComputeShader --gtest_filter=dEQP.KHR_GLES31/core_layout_binding_sampler2D_layout_binding_texture_ComputeShader Bug: angleproject:4124 Change-Id: I027cf4ecb6a5d6aea874c306bf3e67b95a75af62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965027 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tobin Ehlis 5fd73782 2019-08-09T11:46:46 Vulkan: Use volk to load vk* func ptrs Thanks to Jamie Madill for some fixes to get all CI test passing w/ volk. This change updates all ANGLE targets that use Vulkan to dyanmically link all of the VK entrypoints using the volk OSS library from https://github.com/zeux/volk. It's only two source files so baking them directly into ANGLE repo. Also it's used in both the tests and libANGLE trees so added to src/common/third_party/volk dir. Updated volk and the renderer to track latest instance and device that were loaded and renderer will refresh vk* function pointers if the current and previous device and/or instance don't match. This prevents errors in the test framework as we transition between backends, especially between VK HW & SwiftShader ICDs. This change rolls the Vulkan Loader forward to use the latest loader version which no longer allows static linking but requires dynamic linking. Bug: angleproject:3740 Bug: angleproject:4092 Bug: angleproject:4162 Bug: angleproject:4210 Bug: angleproject:4225 Change-Id: I8a0b7d24c9545bbfdfaa4b9357a9bfe6793e0140 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965640 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 06cbb283 2019-12-11T14:46:59 Validate uniform location size, fix unlink cleanup Also cleanup shader storage blocks. Test: angle_deqp_khr_gles31_tests --use-angle=swiftshader --gtest_filter=dEQP.KHR_GLES31/core_explicit_uniform_location_uniform* Bug: angleproject:4132 Bug: angleproject:4217 Change-Id: Ie0375ab9226f3f49cb0c0d208ac08f99d98dad8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1963139 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Le Hoang Quyen d1860ea1 2019-11-19T23:04:00 Metal: support OES_depth_texture Also added Depth32 & Depth16 texture data upload tests. Bug: angleproject:2634 Change-Id: I103f1cda1dc915f0dc8b04f7aaa2d8c0f9220cda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919281 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 19868b7e 2019-12-13T14:29:57 Restructure textureGatherOffset* builtin declarations This is in preparation of textureGatherOffsets support. Bug: angleproject:3569 Change-Id: I4ce5a1e102790181c8f843735961b9c249a69221 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965720 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi e181f2f7 2019-12-10T22:57:42 Validate that image array indices are constant Also adds compiler tests for dynamic indexing of SSBOs and images. Bug: angleproject:3569 Change-Id: I84b90813840ffad5a9a3cd8e7f12bd637a57b327 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961095 Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 554b453c 2019-12-12T13:09:30 gn: Add 'test_only' label to util targets. Clarifies that angle_util is only used in tests and samples. Bug: angleproject:3162 Change-Id: I9a578cf7a9a09b2c3fd4683155824ed2e72f68cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1964934 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 3c75d244 2019-12-11T15:52:14 Suppress more dEQP-GLES31.functional.shaders.helper_invocation.* tests Failures discovered when running locally on Pixel 2 with recent OS. Bug: angleproject:4110 Change-Id: I14cde5456a0d7802c60ed3bc771fc371b0834087 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1962541 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 49135f68 2019-12-10T11:27:09 Vulkan: Fix descriptor pool init in presence of atomic counters The descriptor pool was initialized with the number of atomic counter buffers, but we always use 8 storage buffers for atomic counter buffer emulation regardless of how many atomic counter buffers there. This change fixes the descriptor pool initialization by requesting 8 storage buffer descriptors if there are any atomic counter buffers. Bug: angleproject:4199 Change-Id: Ide58c013cba8ac46228dba795a82304b97ee83ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1959489 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi e4eb75da 2019-12-06T11:10:47 Vulkan: EXT_gpu_shader5 support: dynamically uniform indexing Bug: angleproject:3569 Change-Id: I5abb7f2889fa5173457497d4156a3dadbcf77640 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954613 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Ian Elliott fa467885 2019-12-11T06:31:36 Vulkan: Update Linux-specific multisample failures Bug: angleproject:3565 Change-Id: I429268ba679dff924b229d289ced7148c1d86fdb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961594 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Courtney Goeltzenleuchter 4ad8b55e 2019-12-03T10:07:41 Return valid qualifier after error Using EvqLast for the variable causes us to hit an assert in sh::getQualifierString when we try to print a later error message. Just use the appropriate qualifier regardless that it's not valid for a compute shader, we've output the error. Bug: angleproject:4187 Change-Id: If6fa5dea07d7b6e0d3307485f41d59c5ea7f1c4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948525 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
James Darpinian d6053daa 2019-12-05T17:46:23 Remove tabs from source files. WebKit's Subversion repo refuses to commit source files that contain tabs. Bug: angleproject:3439 Change-Id: I0a804bcfa0375a98e19945e20297c90d31106827 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954410 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Hyunchang Kim caa6eccd 2019-10-27T13:46:56 Vulkan: Implement Transform Feedback support via extension Implemented transform feedback extension path. Where VK_EXT_transform_feedback is supported, extension path will be taken over an emulation path. Extension path has advantages in terms of performance. BUG=angleproject:3206 Test: dEQP-GLES3.functional.transform_feedback.* angle_end2end_tests --gtest_filter=TransformFeedbackTest* Change-Id: Ia07c23afb289d9c67073469a97b714ec96f5265a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1882767 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Ian Elliott 9906bccc 2019-12-10T09:59:17 Vulkan: Update bugs for multisample texture failures After additional debugging, new bugs were filed and bug numbers were updated. Bug: angleproject:3565 Bug: angleproject:4197 Bug: angleproject:4212 Bug: angleproject:4213 Change-Id: I7211df7d19280f2fba482394c23a887e6ea5e002 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1959490 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 9af3e137 2019-12-05T15:35:33 Vulkan: EXT_gpu_shader5 support: fma Add the fma() builtin function to ESSL. Bug: angleproject:3569 Change-Id: Ic8419b4c117ecdd8b47aa733bf7aff9ee7579bbf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954484 Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
David Benjamin 351307eb 2019-12-10T10:47:41 Fix potential indexing into an empty vector in ANGLE tests The tests are failing after "Warning: incomplete system info collection" which suggests systemInfo.gpus is empty. Check for that before indexing into the vector; defaulting the active index to zero in https://chromium-review.googlesource.com/c/angle/angle/+/1925031 was not sufficient and the line still needs a bounds check. Bug: chromium:923166, chromium:1032552 Change-Id: Ic9716830403e0dfcfa5d11539537c2a39e0e2386 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1959488 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
David Benjamin f60da874 2019-11-19T18:45:45 Fix out-of-bounds access bug in ANGLE tests When not filled in, as in Android, activeGPUIndex is -1. This is fine for Android because it doesn't use vendorID, but the function computed vendorID unconditionally without checking for -1. Default activeGPUIndex to 0 instead of -1. Note code still needs to check for systemInfo.gpus.empty(). This caused crashes when _LIBCPP_DEBUG=0 was enabled. Bug: chromium:923166 Change-Id: If4d1dff9553a580fd92bc0497fc092789d07ed93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1925031 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jonah Ryan-Davis 6e4004dd 2019-12-06T14:41:17 Add metal display type to angle_deqp_tests Adds --deqp-egl-display-type=angle-metal for running the deqp tests on Mac. Note: does not add any test suppressions for metal. Bug: angleproject:2634 Change-Id: I8f8d3a83cf93a5b930b05af9f0075a9ce435823a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954612 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Xinyi He 36ab960e 2019-12-04T14:13:05 Vulkan: Resize the result vector in EGLChooseConfigTest end2end test Resize the defaultConfigs vector to its actual size to avoid using nullptr elements to get attributes. BUG=angleproject:4195 Change-Id: I3cbad9ee8c2c9faeaa30f72a04cf2c071f79db19 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1949985 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott 92183a26 2019-12-06T11:27:33 Vulkan: Latest Intel driver fixes 2-sample standard positions Update the expectations file to expect these to pass on all Vulkan drivers now. Bug: angleproject:4198 Change-Id: I38982db1e23706f0063795757dfe1d8c8c45294a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1955697 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Ian Elliott c6458072 2019-12-05T11:45:10 Fix multisample renderbuffer compliance (e.g. 3->4 samples) This change ensures that the following spec language is correctly implemented: the resulting value for RENDERBUFFER_SAMPLES is guaranteed to be greater than or equal to samples and no more than the next larger sample count supported by the implementation. For example, if 2, 4, and 8 samples are supported, and if 5 samples are requested, ANGLE should use 8 samples, and return 8 when GL_RENDERBUFFER_SAMPLES is queried. Note: There is a known problem with NVIDIA OpenGL driver that causes another test to be expected to fail. Bug: angleproject:2222 Bug: angleproject:4196 Change-Id: I28921badf9568427799b0af347198b5df06c2aaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954444 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill b92ec244 2019-12-06T15:08:54 Revert "Re-land "Add new test runner harness."" This reverts commit e20560faf1de86c01198143ef7733a12a098a90b. Reason for revert: Now fails on Linux CFI and also is a bit flaky. Original change's description: > Re-land "Add new test runner harness." > > Re-land changes: > > * Unit test is suppressed in ASAN > * --deqp-case is fixed > * Debug layer errors should correctly work with failure expectations > > Original message: > > The ANGLE test harness is a harness around GoogleTest that provides > functionality similar to the Chromium test harness. It supports: > > * splitting a test set into shards > * catching and reporting crashes and timeouts > * outputting to the Chromium JSON test results format > * multi-process execution > > Unit tests are added in test_utils_unittest.cpp. > > Bug: angleproject:3162 > Change-Id: I841f2b5dfe51f7f44dac68324bdf6afd418b8bfb > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948240 > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=ynovikov@chromium.org,ianelliott@google.com,jonahr@google.com,jmadill@chromium.org Change-Id: Ibfd65b8b18ead3a232abb6cb75fd6489b0ff5f38 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3162 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954570 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 4576f1d0 2019-12-05T10:10:48 Vulkan: Implement multisample textures This functionality is exercised by running angle_deqp_gles31_tests with the following sets of command arguments: --gtest_filter=dEQP.GLES31/functional_texture_multisample* --use-angle=vulkan --gtest_filter=dEQP.GLES31/functional_state_query_texture_level_texture_2d_multisample* --use-angle=vulkan --gtest_filter=dEQP.GLES31/functional_state_query_texture_texture_2d_multisample_texture_immutable* --use-angle=vulkan The following are some high-level design notes: - Texture::setStorageMultisample() handles converting the "requested number of samples" to the actual number of samples used (e.g. converting 3 to 4), supported by the underlying back-end). The actual number used is stored in gl::TextureState::mImageDescs, for use by other GLES commands. - ANGLE uses the Vulkan standard sample locations/positions. If the underlying Vulkan driver's VkPhysicalDeviceLimits::standardSampleLocations is false, ANGLE limits itself to GLES 2.0 (i.e. before GLES 3.0 which adds multisample renderbuffers). - The Vulkan specification currently doesn't support ANGLE providing support for GLES 1-sample textures, because of the following Vulkan specification statement: - If the image was created with VkImageCreateInfo::samples equal to VK_SAMPLE_COUNT_1_BIT, the instruction must: have MS = 0. - At least one Vulkan driver returns different VkPhysicalDeviceLimits::*SampleCounts for different formats. Because of this, ANGLE does a logical-AND of all values in order to only support the commonly-available numbers of samples. The detailed design document is located at: https://docs.google.com/document/d/1NiM8gAR74iGGXGTE6IP1ChdDUZjhtXRuJdtEp_wGFEM/edit?usp=sharing Bug: angleproject:3565 Bug: angleproject:4103 Bug: angleproject:4104 Bug: angleproject:4196 Bug: angleproject:4197 Bug: angleproject:4198 Change-Id: I28921badf9568427799b0af347198b5df06c2db0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919982 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d68bf3e2 2019-12-04T12:30:56 Fix image/sampler uniform range in presence of atomic counters The change that introduced images to the front-end placed them at the end of the uniforms list, so the loop that was calculating the image range was starting from the end of that list. The change that introduced atomic counters to the front-end placed them at the end of the uniforms list too, but the image range loop was not adjusted to take this fact into account (neither was the sampler range loop for that matter). If a shader used both images and atomic counter buffers, the image range was calculated as empty. Similar issues would arise if the shader used both samplers and atomic counters. A test is added where a shader has a default uniform, a UBO, an SSBO, an image and an atomic counter, to make sure any combination of these resources doesn't result in a bug. Bug: angleproject:4190 Change-Id: I7818ee5258dd964215a18acfd7c3d6515b61c595 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1950655 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 795a3559 2019-12-03T11:31:18 Vulkan: EXT_gpu_shader5 support: precise The precise keyword is used in tessellation shaders but introduced in this extension. EXT_gpu_shader5 introduces a handful of features to shaders. This change only implements the `precise` keyword. Bug: angleproject:3569 Change-Id: I2252b79098eb8ba2d2faa040d7eaed7548b7051e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1939851 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e20560fa 2019-12-04T13:18:36 Re-land "Add new test runner harness." Re-land changes: * Unit test is suppressed in ASAN * --deqp-case is fixed * Debug layer errors should correctly work with failure expectations Original message: The ANGLE test harness is a harness around GoogleTest that provides functionality similar to the Chromium test harness. It supports: * splitting a test set into shards * catching and reporting crashes and timeouts * outputting to the Chromium JSON test results format * multi-process execution Unit tests are added in test_utils_unittest.cpp. Bug: angleproject:3162 Change-Id: I841f2b5dfe51f7f44dac68324bdf6afd418b8bfb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948240 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi af52f9c6 2019-12-03T14:11:17 Fix tests checking for major version > 3 The tests meant to do getClientMajorVersion() >= 3, but in a few locations accidentally did > 3. Bug: angleproject:3569 Change-Id: Ie69898348982c6aae7dac265a18229c257dbfbda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947458 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 5f857839 2019-12-04T15:30:50 Improve current multisampled renderbuffer/texture support This is split off from a change to implement multisampled textures for the Vulkan back-end, and will come before that change. The changes include: - Make a common utility rx::GetSamplePosition() function. D3D11 and Vulkan use the same standard sample positions/locations for 1, 2, 4, 8, and 16 samples. The D3D11 back-end has a utility function for this, which is being moved to a common location--for use by both the D3D11 and Vulkan back-ends. - Texture::setStorageMultisample() handles converting the "requested number of samples" to the actual number of samples used (e.g. converting 3 to 4), supported by the underlying back-end). The actual number used is stored in gl::TextureState::mImageDescs, for use by other GLES commands. - Change some end2end tests to not make assumptions about the supported number of samples, but to properly query what is supported. Bug: angleproject:3565 Bug: angleproject:4196 Change-Id: I1dc12fedd0f8fb4975f90d87486e443b069b7141 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948535 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Jamie Madill e3c25715 2019-12-03T14:08:36 gn: Minor improvements. Renaming "all" targets to reduce duplication. Also add libGLESv1_CM to "angle". And remove "shader_translator" since we already had "angle_shader_translator". An attempt to work around "invalid COFF sections" error that is popping up on the MSVC try bots. Bug: None Change-Id: I105aa5e59f67173643a3a2071b2aff345b5a6135 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947457 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi c3f0352d 2019-12-04T12:13:00 Re-enable atomic counter tests on !windows There is a bug that prevents us from running these tests on the windows bots. This change enables them on other platforms so we don't lose coverage. Bug: angleproject:3738 Change-Id: I9b546c3223499af88b347f8a01be8edb245c19a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1950654 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter b40c65ce 2019-12-03T10:12:34 Split out core.compute_shader expectations The failures have been triaged and split into more specific bugs. Bug: angleproject:3601 Change-Id: Icb262a047bba78a11d710e479ad659a9fa1caf1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948524 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Courtney Goeltzenleuchter 33a00efd 2019-11-27T09:21:45 Add Compute Shared Memory Size Validation Add tracking of shared memory declarations in compute shaders. Test:   angle_deqp_gles31_tests --gtest_filter=dEQP.GLES31/functional_debug_negative_coverage_callbacks_compute_exceed_shared_memory_size_limit Bug: 4173 Change-Id: If2a86d467a82f73fa5b2ee0ced752701acfe1872 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1934653 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 8f31872c 2019-12-03T18:34:52 Revert "Add new test runner harness." This reverts commit fb40d231c3e2ee7c38f8445ef5defc0ab0f5f15d. Reason for revert: Has a bug with the ASan build and also has a few bugs with ANGLE standalone test expectations an filter. Bug: chromium:1030192 Bug: angleproject:4193 Original change's description: > Add new test runner harness. > > The ANGLE test harness is a harness around GoogleTest that provides > functionality similar to the Chromium test harness. It supports: > > * splitting a test set into shards > * catching and reporting crashes and timeouts > * outputting to the Chromium JSON test results format > * multi-process execution > > Unit tests are added in test_utils_unittest.cpp. > > Bug: angleproject:3162 > Change-Id: Idb15f113de8eb32db12bc93542de93b08d7c1447 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1478016 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> TBR=ynovikov@chromium.org,jonahr@google.com,jmadill@chromium.org Change-Id: I647e747571784b1ca7c1d0687193c70a63eb08d1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3162 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947456 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang ff83dabf 2019-12-03T10:10:53 Skip flaky BlendMinMaxTest.RGBA16F/ES2_Metal. BUG=angleproject:4185 Change-Id: I236d4372ab22e9083d00cf13fa2ad682a1d42f14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947447 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill fb40d231 2019-12-02T16:39:18 Add new test runner harness. The ANGLE test harness is a harness around GoogleTest that provides functionality similar to the Chromium test harness. It supports: * splitting a test set into shards * catching and reporting crashes and timeouts * outputting to the Chromium JSON test results format * multi-process execution Unit tests are added in test_utils_unittest.cpp. Bug: angleproject:3162 Change-Id: Idb15f113de8eb32db12bc93542de93b08d7c1447 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1478016 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 190d9a81 2019-11-29T09:57:40 Fix RenderingLimitToDefaultFBOSizeWithNoAttachments test MAX_DRAW_BUFFERS has a minimum value of 4. This test was unconditionally using 6 draw buffers. Bug: angleproject:4092 Bug: angleproject:4180 Change-Id: I069874a6402da1cb007bf9504e68b9910951cf63 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1944527 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexis Hétu <sugoi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 745999a9 2019-11-19T12:59:02 Add test for multithreaded shared-context resource The test does this: 1. Context 1: Read Texture 1 and draw into Framebuffer 1 2. Context 2: Read Texture 1 and draw into Framebuffer 2 3. Context 1: Delete Framebuffer 1 4. Context 1: Flush 5. Context 2: Modify Texture 1 Issue is Texture 1's mCurrentReadingNodes contains one node from each context's command graph, one of which is deleted at step 4. At step 5, a dependency is added from both nodes (one already deleted) to a new node, causing use-after-free. Bug: angleproject:4130 Change-Id: I06720aec20d0b49114937f1cd9b193a4f1df9d8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1924790 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten ca1b0fb8 2019-11-25T12:13:01 VULKAN: dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.framebuffer_texture2d Add the following SWANGLE test failure to deqp_gles31_test_expectations.txt: dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.framebuffer_texture2d Bug: angleproject:3590 Test: None Change-Id: I0f234ea2d7a90e2b95220b152cb0da3822df1ef3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1933764 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>