src/tests


Log

Author Commit Date CI Message
Tobin Ehlis 71c1138d 2019-08-16T12:23:04 Vulkan: Emulate instanced attrib divisor This sets instancedArrays[ANGLE|EXT] extenstions as always supported regardless of underlying Vulkan HW's max vertex attrib divisor. Then detect instances where app sets a divisor that isn't supported by hardware and emulate those cases. Emulations is accomplished by copying the instanced attribs to a new buffer where each attrib is present once per instance, using the attrib divisor value as a factor to replicate the attribs, and then setting the actual divisor value for the draw to "1". Also, we only store 8 bits for the divisor used in the PSO, so this code also handles emulation of the case where divisor is > 255. This is passing all of the drawInstanced/Elements dEQP tests where divisor has to be emulated. Also enabled end2end InstancingTestES3 for Vulkan backend. Bug: angleproject:2672 Change-Id: I9932f9eab49b16a19e8bbd35dacaf3b5a27a213f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1758689 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Cody Northrop cb16fb5f 2019-08-29T16:53:55 Vulkan: Support texture base and max levels The Vulkan backend uses a vkImage that matches the number of effective levels in the GL texture. This is due to the fact that GL textures can have really strange layouts that only make sense when base level and max level are applied. For instance, take the following layout with disjoint mip levels: Level 0: 4x4 RGBA Level 1: 2x2 RGBA Level 2: 10x10 RGB If base level is set to zero and max level is set to 1, the image is still considered mip-complete: Level 0: 4x4 RGBA ==> Base Level 0 ==> Level 0: 4x4 RGBA Level 1: 2x2 RGBA ==> Max Level 1 ==> Level 1: 2x2 RGBA Level 2: 10x10 RGB If base and max level are then both set to 2, the texture is still considered complete, but of a different size and format: Level 0: 4x4 RGBA Level 1: 2x2 RGBA Level 2: 10x10 RGB ==> Base/Max Level 2 ==> Level 2: 10x10 RGB When the base or max level is changed, we must recreate the vkImage to match the new level count. To support that, we: - Stage updates from the current image to the new image - Only stage updates if there aren't already staged updates for a level - Free the current image and so it can be recreated at the next draw This CL does the following: - Refactors TextureVk::copyImageDataToBuffer to support staging updates without flush - Adds TextureVk::copyImageDataToBufferAndGetData to support previous use model - Adds TextureVk::changeLevels, triggered during syncState, which stages updates and releases the current image. - Updates ImageHelper::flushStagedUpdates to understand base/max levels - Updates TextureVk::ensureImageInitialized and TextureVk::generateMipmap to account for base/max level - Tracks base and max levels in ImageHelper - Adds ImageHelper::stageSubresourceUpdateFromBuffer to support this use case - Adds ImageHelper::isUpdateStaged to determine if changeLevels should propagate data - Makes gl::TextureTypeToTarget available for use outside of ImageIndex - Enables several deqp and end2end tests Bug: angleproject:3148 Test: dEQP-GLES3.functional.texture.mipmap.*base_level* Test: dEQP-GLES3.functional.texture.mipmap.*max_level* Change-Id: I14ca071c9c62eb310dfed7ef9290dc65fc3ff696 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776933 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 57b37b6b 2019-09-25T18:29:28 Rename util/system_utils to util/test_utils. This removes a GN naming conflict between util/system_utils and common/system_utils. This conflict was preventing us from adding unit tests to utils' version of system_utils. Since these functions are only useful to tests and samples rename them test_utils for simplicity. Will enable further development of ANGLE's standalone testing harness. Bug: angleproject:3162 Change-Id: I9e34fb69f96c5de6dc2453fce4148a0f285e15ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1825268 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jaedon Lee a0159c03 2019-09-02T14:49:07 Vulkan: Implement basic geometry shader feature Enable the default behavior of the geometry shader Bug: angleproject:3571 Test: dEQP-GLES31.functional.geometry_shading.input.basic_primitive.points dEQP-GLES31.functional.geometry_shading.input.basic_primitive.lines dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_loop dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_strip dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangles dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_strip dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_fan Change-Id: I65708d19bbfe6a0ad8ca392a1d6b3609b1410ef4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793753 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 3c2a5230 2019-09-23T11:07:18 Vulkan: 8bit index support for DrawElementsIndirect Add partial support for DrawElementsIndirect. This supports all primitives types except lineloop. Includes a compute shader for converting 8bit index buffers to 16bit index buffers where the index buffer range is defined in a GPU buffer. Test: dEQP.GLES31/functional_draw_indirect_* Bug: angleproject:3564 Change-Id: Ibe9c55323e46a398f0b703cd8597a72ba6790570 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1792948 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 7c8e276c 2019-09-23T11:06:39 Vulkan: Add support for DrawArraysIndirect Add partial support for DrawArraysIndirect. This supports all primitives types except lineloop. Test: dEQP.GLES31/functional_draw_indirect_* Bug: angleproject:3564 Change-Id: I065417a848390070c9f116db6fd3f90c12fb3886 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1811873 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Jonah Ryan-Davis 70d79b76 2019-09-11T11:43:55 GL: Add state validation functions to GL backend These functions validate that the driver's reported state matches ANGLE's internal state. Can be useful for debugging Bug: angleproject:3900 Change-Id: I35d15e991986dcab114939c551a88549f09bd263 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1797254 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov babe59ff 2019-09-25T15:53:20 Temporarily disable SwiftShader everywhere. Times out not only on Windows 7 but also Win10 Debug. Bug: angleproject:3876, chromium:1008100 Change-Id: I3c82d430fae09067a8247e3c4b03ff9c9b685c06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1825538 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Hyunchang Kim d4c75347 2019-09-18T10:49:34 Vulkan: Enable GPU conversion from RGB16F to RGBA16F - Add proper GPU conversion routine when the source and destination format of vertex attribute is half float data type. - Add an end2end test which utilizes half float GPU conversion path. Bug: angleproject:3802 Test: angle_end2end_tests --gtest_filter=*VertexAttributeTest.HalfFloatBuffer* Change-Id: Ia88a4984156f8967796bea3852c3cde714f2acab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1824799 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Jamie Madill ba04be8c 2019-09-24T08:55:34 GN: Refactor angle_test and remove angle_test_main. This cleans up the GN files and prepares them for eventually using a custom test harness. Bug: anglerproject:3162 Change-Id: I3d8568628a9465093adec9e838617a002192beef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1821939 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 273175cd 2019-09-24T08:44:09 Fix Regex in DebugShaderPrecisionTest. One regex had an extra parenthesis. Also confirms that we can use raw string literals to produce more readable regexes. Bug: angleproject:3162 Change-Id: I82e6bc622a8fa3d9f6424c53cb7dcb4dddde368a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1821938 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a3f1981d 2019-09-23T17:04:03 Add SwiftShader to command line arguments. Also adds parsing SwiftShader to the test expectations code. Bug: angleproject:3876 Change-Id: I70e1475b62f86160d5a150218e792801fb0259bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1817109 Reviewed-by: Alexis Hétu <sugoi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 35f01546 2019-09-24T10:02:36 Vulkan: Enable many GLES 3.1 Debug API tests to run/pass. Bug: angleproject:3590 Bug: angleproject:1442 Bug: angleproject:2324 Change-Id: Iad0abd7b9566d488a655dfe5061db18cdfe74326 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1821450 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Yuly Novikov 6d625bfe 2019-09-23T20:05:29 Skip ComputeShaderTest.UniformDirty on Linux Intel Vulkan Flaky on Linux FYI Release (Intel HD 630) bot. Bug: angleproject:3934 Change-Id: Ia3092e9c740d0052e106d464c59ceac63d4e434e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1820085 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Tim Van Patten 84a32193 2019-09-18T16:51:38 Vulkan: Disable Line Rasterization Emulation for Android The latest Pixel drivers require that the GL line raserization emulation is disabled to rasterize the lines correctly. Bug: angleproject:2830 Test: dEQP-GLES2.functional.rasterization.primitives.line* Test: dEQP-GLES2.functional.clipping.line.long_line_clip Change-Id: I126715e61f44500c00efc7e81044c0a09001d3bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1812177 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill ecd3ebe9 2019-09-23T09:53:22 Temporarily disable SwiftShader on Windows 7. A necesssary change in SwiftShader introduced a bug that was causing test timeouts. Disable SwiftShader so they can revert the change without breaking ANGLE. Bug: angleproject:3876 Change-Id: I4b841a4a28fa13947c24b72d856db38c9e0135cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1815908 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ee891ce3 2019-09-23T10:21:21 Disable non-portable include path warning. A prior CL did not apply the warning disable to the right targets. Bug: chromium:995046 Change-Id: If06b8493d2c1ce3026dfbb1d32a9746e1fd0cddf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1815909 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8be7a4c7 2019-09-19T12:48:31 Re-land "Vulkan: SwiftShader integration." Re-land fixes Win7 configs and placement of the SwiftShader module for ASAN/TSAN configs. Adds a new EGL extension for picking SwiftShader when using the Vulkan back-end. Also cleans up ICD enabling code RendererVk. Also includes a change to a buffer size necessary to support SwiftShader's minimum limits. Bug: angleproject:3876 Bug: b/140251624 Change-Id: I5e16057ac4de07bbdbbd248542b1b9103133294f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1810065 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill c37d2370 2019-09-19T18:54:40 Reland "Refactor built-in symbol table." This is a reland of 59d982c0dcad580ccbf4e29f32ffa3ea9a280122 Original change's description: > Refactor built-in symbol table. > > In preparation for reducing binary size. Shortend a bunch of strings > and symbol prefixes so the autogen file will be more compact. > > Bug: chromium:998535 > Change-Id: If1bedaaacc06dce9678d432055ffa0c9215a8dbd > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814724 > Reviewed-by: Tim Van Patten <timvp@google.com> > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: chromium:998535 Change-Id: Iebc5b1b5e1a084257fba3c50026cc62df5a879b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1817499 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Zhenyao Mo f585c2fb 2019-09-21T02:12:37 Revert "Refactor built-in symbol table." This reverts commit 59d982c0dcad580ccbf4e29f32ffa3ea9a280122. Reason for revert: crbug.com/1006501 Original change's description: > Refactor built-in symbol table. > > In preparation for reducing binary size. Shortend a bunch of strings > and symbol prefixes so the autogen file will be more compact. > > Bug: chromium:998535 > Change-Id: If1bedaaacc06dce9678d432055ffa0c9215a8dbd > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814724 > Reviewed-by: Tim Van Patten <timvp@google.com> > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=timvp@google.com,jonahr@google.com,jmadill@chromium.org Change-Id: Ie540da8ea4429e075a3284183e5a004cbcf1307b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:998535,chromium:1006501 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1817497 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Ian Elliott 857bb7ff 2019-09-20T14:25:44 Vulkan: Enable most dEQP-GLES31.functional.state_query* tests to run Bug: angleproject:3600 Bug: angleproject:3520 Bug: angleproject:3189 Change-Id: Ibbb930a9d64845a1e0cf731d2a35bd9d50f6c477 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1816445 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 59d982c0 2019-09-19T18:54:40 Refactor built-in symbol table. In preparation for reducing binary size. Shortend a bunch of strings and symbol prefixes so the autogen file will be more compact. Bug: chromium:998535 Change-Id: If1bedaaacc06dce9678d432055ffa0c9215a8dbd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1814724 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 6c4ff5dd 2019-09-19T16:39:48 Vulkan: Narrow GLES1 Scissor test skip to just Vulkan-Windows-Intel Bug: angleproject:3867 Change-Id: I49b3a7facf41c4fa635c072c89820f2ee43c7787 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1815346 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Mohan Maiya fea65766 2019-09-19T09:30:38 Vulkan: Add support for OES_vertex_type_10_10_10_2 - Add support to CPU/GPU convert vertex formats - Add test cases for type conversion in angle_end2end_tests - Fix a bug in shader script by adding a ceil when calculating bytes Bug: angleproject:3192 Test: angle_end2end_tests --gtest_filter=VertexAttributeTest*Packed1010102* Change-Id: I57bab9fc1c1041cd734746d0e52a33717b635ec0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1788495 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Geoff Lang e6582161 2019-09-16T12:39:18 Convert DXT1 RGB data to DXT3 RGBA when uploading to the GPU. DXT1 has a specific 'BLACK' code that results in transparent black pixels when sampled. D3D does not have specific RGB-only DXT1 formats like OpenGL does so when this code is encountered, we sample 0 alpha for these pixels when GL would expect 1 because the alpha channel should not exist. Work around this by converting to DXT3 RGBA, adding an extra block of 1.0 alpha pixels for each color block. Mac Intel OpenGL requires additional workarounds to always sample 1.0 alpha. Set the texture swizzle parameters to force it. BUG=angleproject:3729 Change-Id: Ia3647085acd97bb01af4e95ef3f6f21dcfb6a554 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1804880 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Geoff Lang 2f2ea8b4 2019-09-18T16:42:28 Fix depth pitch calculations for compressed textures. Depth pitch computations were not taking into account the block size and simply multiplying the row pitch with the pixel height. This caused our load functions to use a very high depth pitch, reading past the end of the user-supplied buffer. BUG=angleproject:3190 BUG=angleproject:3920 Change-Id: I4ef4763b542735993568c51ae4b5a235659b9094 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1811837 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov e34564ba 2019-09-18T15:21:51 Revert "Suppress crashing perftests on Win Intel Exp Rel" This reverts commit f8e8fcf8828f42005b4410cc4500c63d8e9112ce. Reason for revert: ANGLE_SKIP_TEST_IF doesn't work in perftests and this skip is not needed since the whole suite is disabled now Original change's description: > Suppress crashing perftests on Win Intel Exp Rel > > Also moves ANGLE_SKIP_TEST_IF to a header shared between end2end and > perf tests. > > BUG=chromium:997674 > > Change-Id: I7c5968e6d861c4bff703ddc6ae0e4e021e47061f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1768374 > Commit-Queue: Corentin Wallez <cwallez@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,cwallez@chromium.org,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:997674 Change-Id: I0a2124c93d1abd6c7efd2b29e942ee966982eed2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1810763 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jeff Vigil a7003d5f 2019-07-19T11:43:34 Reland "EGL: Implement EGL_KHR_no_config_context" Add extension string and flag to all renderers that pass Modify eglCreateContext to accept EGL_NO_CONFIG Modify eglQueryContext per specification Modify eglMakeCurrent to bypass surface-context config compatibility checks Add check for client API Create new end2end test EGLNoConfigContextTest Disable on most renderers to prevent possible fail with future configs Bug: angleproject:3635 Test: dEQP-EGL.functional.create_context.no_config* angle_end2end_tests --gtest_filter=EGLNoConfigContextTest* Change-Id: I88c1922a1e75afcc49922a9eccb4f1ae046c024a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1806140 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Zhenyao Mo db7a36f4 2019-09-17T00:22:32 Revert "Vulkan: SwiftShader integration." This reverts commit 1224802c214d8f3d5b1f31a35d4461ada39b94c1. Reason for revert: https://bugs.chromium.org/p/angleproject/issues/detail?id=3912 Original change's description: > Vulkan: SwiftShader integration. > > Adds a new EGL extension for picking SwiftShader when using the Vulkan > back-end. Also cleans up ICD enabling code RendererVk. Also includes a > change to a buffer size necessary to support SwiftShader's minimum > limits. > > 32-bit is currently left disabled to work around an issue on AMD Win7. > > Bug: angleproject:3876 > Bug: b/140251624 > Change-Id: I33c55d994801d6154caca0cad0a608c1e808d517 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776231 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,jonahr@google.com,jmadill@chromium.org Change-Id: Id7464250f6941b0228a6b2a9bd0349823727275b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3876, b/140251624 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1808101 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Jamie Madill 1224802c 2019-09-16T15:17:33 Vulkan: SwiftShader integration. Adds a new EGL extension for picking SwiftShader when using the Vulkan back-end. Also cleans up ICD enabling code RendererVk. Also includes a change to a buffer size necessary to support SwiftShader's minimum limits. 32-bit is currently left disabled to work around an issue on AMD Win7. Bug: angleproject:3876 Bug: b/140251624 Change-Id: I33c55d994801d6154caca0cad0a608c1e808d517 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776231 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Zhenyao Mo 20bb47d3 2019-09-16T12:55:30 Skip a angle_end2end_tests on Linux Intel OZone. Texture2DFloatTestES2.TextureFloatRenderTest/ES2_OpenGLES R=jmadill@chromium.org Bug: chromium:1003971 Change-Id: I96d858bbfbbaa7d98d9a7488cb98e0c1fca18ba3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1807581 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
shrekshao b5560486 2019-08-30T17:09:04 BaseInstance VertexAttribDivisor fix Add tests not using gl_InstanceID/gl_BaseInstance but set vertexAttribDivisor which implicitly reference base instance value. Add fixes and workarounds based on this change. Bug: chromium:891861, angleproject:3402 Change-Id: I2d93c181029f4ca1741f244363568096964d6b19 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1779350 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Zhenyao Mo d32dae1b 2019-09-13T22:06:56 Revert "EGL: Implement EGL_KHR_no_config_context" This reverts commit c4b1fbd69b12c0af30a58d0810f88d1301b8dabd. Reason for revert: https://crbug.com/1003971 Original change's description: > EGL: Implement EGL_KHR_no_config_context > > Add extension string and flag to all renderers that pass > Modify eglCreateContext to accept EGL_NO_CONFIG > Modify eglQueryContext per specification > Modify eglMakeCurrent to bypass surface-context config compatibility checks > Add check for client API > Create new end2end test EGLNoConfigContextTest > Disable on most renderers to prevent possible fail with future configs > > Bug: angleproject:3635 > Test: dEQP-EGL.functional.create_context.no_config* > angle_end2end_tests --gtest_filter=EGLNoConfigContextTest* > Change-Id: I7fbb137f1222ae7eebff4192013b7d3c5fcf0436 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762709 > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,timvp@google.com,jmadill@chromium.org,m.maiya@samsung.com,j.vigil@samsung.com Change-Id: I849aa796803e3cda9b480a39be813ef9105325bb No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3635 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1803789 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Mohan Maiya 6caa2652 2019-09-11T08:06:13 Vulkan: Support float textures and renderbuffers Fixed support in the vulkan backend for legacy GLES2.0 formats (luminance, alpha, luminance_alpha) Correctly exposed the following extensions: OES_texture_float OES_texture_half_float OES_texture_float_linear OES_texture_half_float_linear EXT_color_buffer_float EXT_color_buffer_half_float Some of the above extensions have different requirements depending on other extension support and the context client version, and were incorrectly assuming the most restrictive requirements to be exposed. Implemented end2end tests for: OES_texture_float OES_texture_half_float OES_texture_float_linear OES_texture_half_float_linear EXT_color_buffer_float EXT_color_buffer_half_float Bug: angleproject:2898 Bug: angleproject:2726 Test: ./angle_end2end_tests --gtest_filter='Texture2DFloatTest*' Change-Id: I7024aa1393eadafb5a0fb83c23e9035aae650b67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1740276 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jeff Vigil c4b1fbd6 2019-07-19T11:43:34 EGL: Implement EGL_KHR_no_config_context Add extension string and flag to all renderers that pass Modify eglCreateContext to accept EGL_NO_CONFIG Modify eglQueryContext per specification Modify eglMakeCurrent to bypass surface-context config compatibility checks Add check for client API Create new end2end test EGLNoConfigContextTest Disable on most renderers to prevent possible fail with future configs Bug: angleproject:3635 Test: dEQP-EGL.functional.create_context.no_config* angle_end2end_tests --gtest_filter=EGLNoConfigContextTest* Change-Id: I7fbb137f1222ae7eebff4192013b7d3c5fcf0436 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762709 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Hyunchang Kim b1580a27 2019-08-27T18:08:56 Vulkan: Set half float vertex format to valid in 2.0 context - OES_vertex_half_float extension requires this patch - Add end2end tests to verify OES_vertex_half_float extension BUG=angleproject:3191 BUG=angleproject:3802 Test: angle_end2end_tests --gtest_filter=*VertexAttributeTest.HalfFloatClientMemoryPointer* 3DMark Icestorm GT1 Change-Id: Ia597021a5ae6b4853ee1199989ec3f9cc23c7fac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793354 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Zhenyao Mo f421e0e3 2019-09-11T16:19:45 Make angle_deqp_gles*_tests use discrete GPU for test expectations. Bug: chromium:1003030 TEST=bots R=kbr@chromium.org Change-Id: I1717f39f9573f0161fe19e63ce49ef4e618dc07f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1799323 Commit-Queue: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tim Van Patten 790abf03 2019-08-28T13:57:52 Vulkan: Support program interface queries for inputs Program interface queries are a generic way to query attributes of the program like uniforms, samplers, attributes, etc. This change supports those queries for program inputs. Bug: angleproject:3596 Test: dEQP-GLES31.functional.program_interface_query.* Test: ProgramInterfaceTest.cpp Change-Id: Ie904274f4efd87357256f559b69e148e8eda6119 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1775458 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Tim Van Patten 8ac49e18 2019-09-04T17:38:22 Fix dEQP renderbuffer unspecified attachment test. The spec mandates default sizes of 0 for everything, while we assume a non-initialized Renderbuffer is RGBA4. Bug: angleproject:2321 Test: dEQP-GLES3.functional.state_query.fbo.framebuffer_unspecified_attachment_x_size_rbo Change-Id: I7defbdda46fc90dc3672628667c710a8304473b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1785881 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Tobin Ehlis d9456b25 2019-09-11T08:21:14 Vulkan: Enable further dEQP 3.1 tests As TimVP pointed out, a previous change enabled some previously-skipped texture gather 2d_array tests. Enabling them. Bug: angleproject:3605 Bug: angleproject:3189 Change-Id: I3ad190131339a04441fdd05e23ff3b7ac724dc83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1797655 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Tobin Ehlis 79ad0411 2019-09-09T15:05:37 Vulkan:Pass through min/max program texel offset The Vulkan min/maxTexelGatherOffset VkPhysicalDeviceLimits correspond to OpenGL's GL_MIN/MAX_PROGRAM_TEXTURE_GATHER_OFFSET params. Pass them directly through. Bug: angleproject:3605 Change-Id: Ic6a22bbe30ee2b0baaeaa62b6e26dc844c2ad82d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793357 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Tim Van Patten 58c5b07b 2019-09-06T12:45:55 Replace Issue 3221 with 2672 in deqp_gles3_test_expectations.txt Issue 2672 is tracking the work required to support instanced rendering with Vulkan backend when the extension VK_EXT_vertex_attribute_divisor is not present on the device. That work is required to pass the tests currently marked "FAIL" and GLES 3.0 conformance. Bug: angleproject:2672 Test: None Change-Id: I11e3a7a7a9482b4eb3d5f5c7dbf14caec7fff00e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1790362 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Sunny Sachanandani c1af9abf 2019-08-28T14:35:32 Add support for overriding internal format for D3D11 texture EGLImages Add an optional EGL_D3D11_TEXTURE_FORMAT_ANGLE attribute that is the GL internal format to use for EGLImage being created. This will be used for RGB emulation of swap chain texture backed WebGL contexts in Chrome when they have alpha:false set. Without RGB emulation it is possible to observe side-effects of the underlying swap chain being RGBA such as reading/writing the alpha channel, BlitFramebuffer working/not working when expected, etc. Also document creating EGLImages from D3D11 textures in the existing EGL_ANGLE_d3d_texture_client_buffer extension along with RGB emulation. Bug: chromium:699566, chromium:939657 Change-Id: I4931cb7bdc46e9bc6debd56b79ecc10ea27bd78b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1777099 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Tim Van Patten 263e08b6 2019-09-09T12:15:53 Vulkan: Enable Previously Failing texstorage3d Tests for Pixel 2 The following tests were failing on Pixel 2, but appear to be passing now. I'm not sure what fixed them, but there has been a lot of work with 3D textures recently. Bug: angleproject:3816 Test: dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba16* Test: dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb16* Test: dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg32* Change-Id: I0ab7be4685fc0c6879ad83c7402798e2237649a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1791276 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Geoff Lang f29125be 2019-08-27T10:31:24 Update the rules for unsized float renderability. dEQP uses the following rules for unsized float format renderability in ES2: HALF_FLOAT_OES + RED : GL_EXT_texture_rg and GL_OES_texture_half_float HALF_FLOAT_OES + RG : GL_EXT_texture_rg and GL_OES_texture_half_float HALF_FLOAT_OES + RGB : GL_EXT_color_buffer_half_float and GL_OES_texture_half_float HALF_FLOAT_OES + RGBA: GL_EXT_color_buffer_half_float and GL_OES_texture_half_float FLOAT + RED : GL_EXT_texture_rg and GL_OES_texture_float FLOAT + RG : GL_EXT_texture_rg and GL_OES_texture_float FLOAT + RGB : never FLOAT + RGBA: never BUG=angleproject:3283 Change-Id: I4c4c0d290d2c7dec45419a0765fa27b79f0ad774 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1773304 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Geoff Lang 32d6006b 2019-09-06T10:10:08 Don't block setting the DEPTH_STENCIL attachment based on the resource format. By blocking the attachment at this point, it doesn't allow for the resource to have a depth stencil format later. BUG=997702 Change-Id: Iec5243012cb9a9527c5b1467d44c393b0dc6bddc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1780898 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Tim Van Patten 90a58622 2019-09-04T15:39:58 Refactor ShaderVariable to Remove Specializations The following structs are being refactored and moved into the parent struct ShaderVariable: VariableWithLocation Uniform Attribute OutputVariable InterfaceBlockField Varying Bug: angleproject:3899 Test: CQ Change-Id: I389eb3ab4ed44a360e09fca75ecc78d64a277f83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1785877 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Courtney Goeltzenleuchter 1f2782e0 2019-08-29T14:19:23 Vulkan: fix unsized internalformat depth sampling Many implementations provide OES_depth_texture behavior if the texture was specified with a non-sized format (e.g. GL_DEPTH_COMPONENT). This change implements that behavior for Vulkan and adds a couple of tests to verify it. Bug: angleproject:3890 Change-Id: I005b1eaa30db033f7d78a5cf2236aab7f442b7f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1764301 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 050b124d 2019-06-30T03:26:18 Reland "Vulkan: Debug overlay" This is a reland of e54d0f90d1a165404236fd7abd1b05ddd041a686 This was reverted due to a build failure as a result of a missing virtual destructor in the widget base class. Original change's description: > Vulkan: Debug overlay > > A debug overlay system for the Vulkan backend designed with efficiency > and runtime configurability in mind. Overlay widgets are of two > fundamental types: > > - Text widgets: A single line of text with small, medium or large font. > - Graph widgets: A bar graph of data. > > Built on these, various overlay widget types are defined that gather > statistics. Five such types are defined with one widget per type as > example: > > - Count: A widget that counts something. VulkanValidationMessageCount > is an overlay widget of this type that shows the number of validation > messages received from the validation layers. > - Text: A generic text. VulkanLastValidationMessage is an overlay > widget of this type that shows the last validation message. > - PerSecond: A value that gets reset every second automatically. FPS is > an overlay widget of this type that simply gets incremented on every > swap(). > - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an > overlay of this type. On every vkQueueSubmit, the number of nodes in > the command graph is accumulated. On every present(), the value is > taken as the number of nodes for the whole duration of the frame. > - RunningHistogram: A histogram of last N values. Input values are in > the [0, 1] range and they are ranked to N buckets for histogram > calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay > widget of this type. On vkQueueSubmit, the memory waste from command > buffer pool allocations is recorded in the histogram. > > Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py > processes to create an array of bits, which is processed at runtime to > create the actual font image (an image with 3 layers). > > The overlay widget layout is defined in overlay_widgets.json which > gen_overlay_widgets.py processes to generate an array of widgetss, each > of its respective type, and sets their properties, such as color and > bounding box. The json file allows widgets to align against other > widgets as well as against the framebuffer edges. > > Two compute shaders are implemented to efficiently render the UI: > > - OverlayCull: This shader creates a bitset of Text and Graph widgets > whose bounding boxes intersect a corresponding subgroup processed by > OverlayDraw. This is done only when the enabled overlay widgets are > changed (a feature that is not yet implemented) or the surface is > resized. > - OverlayDraw: Using the bitsets generated by OverlayCull, values that > are uniform for each workgroup (set to be equal to hardware subgroup > size), this shader loops over enabled widgets that can possibly > intersect the pixel being processed and renders and blends in texts > and graphs. This is done once per frame on present(). > > Currently, to enable overlay widgets an environment variable is used. > For example: > > $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste > $ ./hello_triangle --use-angle=vulkan > > Possible future work: > > - On Android, add settings in developer options and enable widgets based > on those. > - Spawn a small server in ANGLE and write an application that sends > enable/disable commands remotely. > - Implement overlay for other backends. > > Bug: angleproject:3757 > Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:3757 Change-Id: I47915d88b37b6f882c686c2de13fca309a10b572 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1780897 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mingyu Hu 03f93cf0 2019-08-30T08:53:30 ANGLE test fixture leaking. Adding code in ANGLETestEnvironment::TearDown() to release fixtures if exists. Bug: angleproject:3875 Change-Id: I0d6ad9b8c72937b20a4c3033b86eb667b546e0c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778841 Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Jamie Madill 04d3de54 2019-09-02T13:35:23 Vulkan: Update dEQP-GLES2 Android test expectations. dEQP-GLES2.functional.depth_stencil_clear.depth_scissored_masked dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner dEQP-GLES2.functional.rasterization.primitives.line* dEQP-GLES2.functional.texture.mipmap.cube.generate.* dEQP-GLES2.functional.shaders.builtin_variable.pointcoord dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear Bug: angleproject:2463 Bug: angleproject:2609 Bug: angleproject:2727 Bug: angleproject:2830 Bug: angleproject:3307 Bug: angleproject:3241 Bug: angleproject:3253 Change-Id: I76a0ca0e6a87c5a81f9209960e94fbd39d9b2484 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1781618 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a3c7c2ff 2019-09-02T13:17:26 Vulkan: Lift failing Wintel test expectation. MaxTextureSizeTest.SpecificationTexImage Bug: angleproject:2690 Change-Id: I19aad34e7213fe34af434f368968a06adc31ab55 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1781617 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 91180c48 2019-09-02T14:33:11 Also skip ComputeShaderTest.UniformDirty/ES3_1_Vulkan on Win/NVIDIA The test is failing since the suppression was lifted. BUG=angleproject:3879 Change-Id: Ic2d45db7f7e2388c0c0040183c8760ee6a8fcb08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778863 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez fc58af47 2019-09-02T07:46:44 Revert "Vulkan: Debug overlay" This reverts commit e54d0f90d1a165404236fd7abd1b05ddd041a686. Reason for revert: causes compile failure on Linux CFI bot. Sample build: https://ci.chromium.org/p/chromium/builders/ci/Linux%20CFI/14810 Sample log: https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8903575125463586160/+/steps/compile/0/stdout?format=raw Original change's description: > Vulkan: Debug overlay > > A debug overlay system for the Vulkan backend designed with efficiency > and runtime configurability in mind. Overlay widgets are of two > fundamental types: > > - Text widgets: A single line of text with small, medium or large font. > - Graph widgets: A bar graph of data. > > Built on these, various overlay widget types are defined that gather > statistics. Five such types are defined with one widget per type as > example: > > - Count: A widget that counts something. VulkanValidationMessageCount > is an overlay widget of this type that shows the number of validation > messages received from the validation layers. > - Text: A generic text. VulkanLastValidationMessage is an overlay > widget of this type that shows the last validation message. > - PerSecond: A value that gets reset every second automatically. FPS is > an overlay widget of this type that simply gets incremented on every > swap(). > - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an > overlay of this type. On every vkQueueSubmit, the number of nodes in > the command graph is accumulated. On every present(), the value is > taken as the number of nodes for the whole duration of the frame. > - RunningHistogram: A histogram of last N values. Input values are in > the [0, 1] range and they are ranked to N buckets for histogram > calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay > widget of this type. On vkQueueSubmit, the memory waste from command > buffer pool allocations is recorded in the histogram. > > Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py > processes to create an array of bits, which is processed at runtime to > create the actual font image (an image with 3 layers). > > The overlay widget layout is defined in overlay_widgets.json which > gen_overlay_widgets.py processes to generate an array of widgetss, each > of its respective type, and sets their properties, such as color and > bounding box. The json file allows widgets to align against other > widgets as well as against the framebuffer edges. > > Two compute shaders are implemented to efficiently render the UI: > > - OverlayCull: This shader creates a bitset of Text and Graph widgets > whose bounding boxes intersect a corresponding subgroup processed by > OverlayDraw. This is done only when the enabled overlay widgets are > changed (a feature that is not yet implemented) or the surface is > resized. > - OverlayDraw: Using the bitsets generated by OverlayCull, values that > are uniform for each workgroup (set to be equal to hardware subgroup > size), this shader loops over enabled widgets that can possibly > intersect the pixel being processed and renders and blends in texts > and graphs. This is done once per frame on present(). > > Currently, to enable overlay widgets an environment variable is used. > For example: > > $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste > $ ./hello_triangle --use-angle=vulkan > > Possible future work: > > - On Android, add settings in developer options and enable widgets based > on those. > - Spawn a small server in ANGLE and write an application that sends > enable/disable commands remotely. > - Implement overlay for other backends. > > Bug: angleproject:3757 > Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,syoussefi@chromium.org,jmadill@chromium.org Bug: angleproject:3757 Change-Id: Ib08e2e7b1a9449ca097673acb11655df5d2bbf31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778862 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Shahbaz Youssefi 791ad7b8 2019-08-26T15:38:20 Vulkan: Enable more GLES3.1 dEQP tests Various features already implemented hadn't removed suppressions for GLES 3.1. Bug: angleproject:3205 Bug: angleproject:3208 Bug: angleproject:3561 Bug: angleproject:3604 Change-Id: I1cfc5d2150fae6b138fa21a37f8e95cb7d764770 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1771989 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 912e52d8 2019-08-23T00:25:09 Vulkan: Storage image support Image bindings are placed after atomic counters in the "resources" descriptor set. There are two issues yet to be addressed: - GL can create a 2D (array) view of a 3D image, but this is not allowed in Vulkan. If this cannot be made possible, emulation needs to be done. https://github.com/KhronosGroup/Vulkan-Docs/issues/1033 - GL can create an image view of a texture with a different format and have the data reinterpreted. This is not currently done. Bug: angleproject:3563 Change-Id: I95c4d92c50bb033212a9a67f3f2d6f97c074c7bf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1767366 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi e54d0f90 2019-06-30T03:26:18 Vulkan: Debug overlay A debug overlay system for the Vulkan backend designed with efficiency and runtime configurability in mind. Overlay widgets are of two fundamental types: - Text widgets: A single line of text with small, medium or large font. - Graph widgets: A bar graph of data. Built on these, various overlay widget types are defined that gather statistics. Five such types are defined with one widget per type as example: - Count: A widget that counts something. VulkanValidationMessageCount is an overlay widget of this type that shows the number of validation messages received from the validation layers. - Text: A generic text. VulkanLastValidationMessage is an overlay widget of this type that shows the last validation message. - PerSecond: A value that gets reset every second automatically. FPS is an overlay widget of this type that simply gets incremented on every swap(). - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an overlay of this type. On every vkQueueSubmit, the number of nodes in the command graph is accumulated. On every present(), the value is taken as the number of nodes for the whole duration of the frame. - RunningHistogram: A histogram of last N values. Input values are in the [0, 1] range and they are ranked to N buckets for histogram calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay widget of this type. On vkQueueSubmit, the memory waste from command buffer pool allocations is recorded in the histogram. Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py processes to create an array of bits, which is processed at runtime to create the actual font image (an image with 3 layers). The overlay widget layout is defined in overlay_widgets.json which gen_overlay_widgets.py processes to generate an array of widgetss, each of its respective type, and sets their properties, such as color and bounding box. The json file allows widgets to align against other widgets as well as against the framebuffer edges. Two compute shaders are implemented to efficiently render the UI: - OverlayCull: This shader creates a bitset of Text and Graph widgets whose bounding boxes intersect a corresponding subgroup processed by OverlayDraw. This is done only when the enabled overlay widgets are changed (a feature that is not yet implemented) or the surface is resized. - OverlayDraw: Using the bitsets generated by OverlayCull, values that are uniform for each workgroup (set to be equal to hardware subgroup size), this shader loops over enabled widgets that can possibly intersect the pixel being processed and renders and blends in texts and graphs. This is done once per frame on present(). Currently, to enable overlay widgets an environment variable is used. For example: $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste $ ./hello_triangle --use-angle=vulkan Possible future work: - On Android, add settings in developer options and enable widgets based on those. - Spawn a small server in ANGLE and write an application that sends enable/disable commands remotely. - Implement overlay for other backends. Bug: angleproject:3757 Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi f0dd087e 2019-08-23T15:45:34 Move timer functionality from util/ to common/ The main timer functionality (get absolute time) is moved to common/ for use in ANGLE itself (in upcoming overlay change). util/Timer.h is no longer an abstract class and uses this functionality to implement the timer. Bug: angleproject:3757 Change-Id: I3fe418778d80d1089c9bfe43a9e8098e43236f18 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769061 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 56ba54cc 2019-08-08T13:03:34 Support separate read and draw surfaces in eglMakeCurrent Update ANGLE's default framebuffer implementation to support reading and writing to different surfaces within the same framebuffer. Bug: angleproject:2620 Test: EGLSurfaceTest[3] Change-Id: I4b1ea04ca87a751f80cf190bf3adec148fc4fce3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1744746 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiacheng Lu 120b61d3 2019-08-21T12:51:58 Use ShaderProgramID in place of GLuint handles Bug: angleproject:3804 Change-Id: I5dc640004c2cc054c53261e8e939b6a9f5fc23bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762363 Commit-Queue: Jiacheng Lu <lujc@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com>
Tobin Ehlis aae21ef6 2019-08-29T21:56:06 Revert "Reland "Vulkan: Use VK repos' internal BUILD.gn files"" This reverts commit 0ad1559f3ae95efecaa209f990987d3ce4ebd150. Reason for revert: linux-rel no-op build issue showing up in Chromium integration. Tracking in chromium:997016 Original change's description: > Reland "Vulkan: Use VK repos' internal BUILD.gn files" > > This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6 > > Original change's description: > > Vulkan: Use VK repos' internal BUILD.gn files > > > > This retires custom BUILD.gn files for the Vulkan Headers, Tools, > > Validation-Layers, and Loader repos. They now have integrated BUILD.gn > > files so switched ANGLE to use those by default. > > Also Validation Layer, Loader, and Tools repos no longer uses codegen > > so this speeds up the build overall. > > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer > > to VK_LAYER_KHRONOS_validation unified layer. > > > > This changes includes a temporary workaround to the Vulkan-Loader repo > > to remove its Window's build dependence on WDK. There are plans to > > remove that depenedence in Loader master, but until then we can use > > our custom branch workaround. > > It also includes a custom branch for validation layers that includes > > some build fixes for ANGLE. > > Finally, the layers were crashing on Android when attempting to use > > DebugUtils extension so forcing DebugReport on Android for now. > > > > Bug: angleproject:2449 > > Bug: angleproject:3320 > > Bug: angleproject:3852 > > Bug: chromium:997009 > > Bug: chromium:997016 > > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833 > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438 > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Tobin Ehlis <tobine@google.com> > > Bug: angleproject:2449, angleproject:3320, angleproject:3852 > Change-Id: I9597be99000083b135e19b6ee68d4ae222158e72 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769036 > Commit-Queue: Tobin Ehlis <tobine@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> TBR=tobine@google.com,syoussefi@chromium.org,jmadill@chromium.org Change-Id: I88afdaff07e9f414f9de02f6d3651eaba9a5045f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2449, angleproject:3320, angleproject:3852 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776920 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Tobin Ehlis 0ad1559f 2019-07-18T15:10:49 Reland "Vulkan: Use VK repos' internal BUILD.gn files" This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6 Original change's description: > Vulkan: Use VK repos' internal BUILD.gn files > > This retires custom BUILD.gn files for the Vulkan Headers, Tools, > Validation-Layers, and Loader repos. They now have integrated BUILD.gn > files so switched ANGLE to use those by default. > Also Validation Layer, Loader, and Tools repos no longer uses codegen > so this speeds up the build overall. > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer > to VK_LAYER_KHRONOS_validation unified layer. > > This changes includes a temporary workaround to the Vulkan-Loader repo > to remove its Window's build dependence on WDK. There are plans to > remove that depenedence in Loader master, but until then we can use > our custom branch workaround. > It also includes a custom branch for validation layers that includes > some build fixes for ANGLE. > Finally, the layers were crashing on Android when attempting to use > DebugUtils extension so forcing DebugReport on Android for now. > > Bug: angleproject:2449 > Bug: angleproject:3320 > Bug: angleproject:3852 > Bug: chromium:997009 > Bug: chromium:997016 > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Tobin Ehlis <tobine@google.com> Bug: angleproject:2449, angleproject:3320, angleproject:3852 Change-Id: I9597be99000083b135e19b6ee68d4ae222158e72 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769036 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 5d27a696 2019-08-13T11:29:07 Support separable shader programs The spec states: Shader stages including vertex shaders, fragment shaders, and compute shaders...A single program object can contain all of these shaders, or any subset thereof. This change allows shader programs without a fragment shader. The biggest driver of this change is dEQP since a large number of tests create shader programs without a fragment shader. Bug: angleproject:3803 Test: dEQP-GLES31.functional.program_interface_query Change-Id: Id6cb098c62a1489a14b9ec1b31bd4cd59f655e49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752010 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Geoff Lang 83785d06 2019-08-28T10:56:24 Supress dEQP ETC texture tests on Mac. These tests generate native GL errors because ETC formats are not supported. The test does not verify the data so it previously passed. BUG=angleproject:3853 Change-Id: I21ed60f46031fe9fdc3a38c6a9a1e9197c56a5eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1774471 Commit-Queue: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 780bdace 2019-08-28T09:56:19 Suppress error messages in ANGLE end2end tests on Nexus6P. GL errors are generated during initialization on this device. Suppress them until enough logging is in place to debug. BUG=998503 BUG=angleproject:3020 Change-Id: I74a51a661a930ea89b0234dcb3e6213288e75c86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1774468 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 566c2e3c 2019-08-28T18:37:58 Suppress correct failure on Android FYI Release (NVIDIA Shield TV) TBR=geofflang@chromium.org BUG=chromium:998505 Change-Id: I8e49ee063c2e06f5031a288c5fe32fd7683fcd7d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1774723 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez f8e8fcf8 2019-08-26T15:28:32 Suppress crashing perftests on Win Intel Exp Rel Also moves ANGLE_SKIP_TEST_IF to a header shared between end2end and perf tests. BUG=chromium:997674 Change-Id: I7c5968e6d861c4bff703ddc6ae0e4e021e47061f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1768374 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 7f00d338 2019-08-28T15:19:16 Suppress end2end tests failures on Android FYI Release (NVIDIA Shield TV) These were fixed on desktop drivers but not this Android driver. TBR=geofflang@chromium.org BUG=chromium:998505 Change-Id: Ie5f434c52753beff4d8f119713ef55f229ee7b95 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1773253 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Ian Elliott 14a9be44 2019-08-26T10:40:45 Vulkan: Enable the official GLES1 conformance tests Needed to suppress 3 tests for Vulkan. Bug: angleproject:3408 Bug: angleproject:3862 Bug: angleproject:3863 Bug: angleproject:3864 Bug: angleproject:3867 Change-Id: I87379125f7f794f5c8ed8eccff7e24bd0d9fab94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1771938 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 2a19c59f 2019-08-23T14:10:24 GL: Check for errors around GL calls. Add a macro to check for GL errors after each GL call to catch errors as they happen even if the debug callbacks are unavailable. GL errors are only checked when asserts are enabled unless explicitly requested with the ANGLE_GL_TRY_ALWAYS_CHECK macro to verify GL calls that may allocate memory. Updated TextureGL to use the macro. BUG=angleproject:3020 Change-Id: I7678b204899e940824b010ab4be7e7f159bee6de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1764476 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Sami Väisänen 76a93c33 2019-08-21T13:21:52 Remove skipping of several tests on NVIDIA since they are now passing Remove skipping of several tests on NVIDIA since they are now passing. - MissingReturnStructOfArrays - DrawWithLevelsOutsideRangeWithInconsistentDimensions - TextureFormatChangesWithBaseLevel - TextureLuminance16Implicit BUG=angleproject:3849 BUG=angleproject:1305 BUG=angleproject:596 Change-Id: Ie3c3ba6634a251a7320a61c6c4cc03cb178db925 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1763964 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
shrekshao cd31f286 2019-06-25T14:22:41 Implement Draw base vertex and base instance functions This patch implements functionality of glDrawArraysInstancedBaseInstanceANGLE, glDrawElementsInstancedBaseVertexBaseInstanceANGLE, glMultiDrawArraysInstancedBaseInstanceANGLE, and glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE Workaround for OpenGL driver on Mac: gl_VertexID on Mac with AMD GPU doesn't include baseVertex value. So replace gl_VertexID with (gl_VertexID + angle_BaseVertex) if any. Workaround for Vulkan GLSL: gl_InstanceIndex on Vulkan includes baseInstance. So replace gl_InstanceIndex with (gl_InstanceIndex - angle_BaseInstance) when angle_BaseInstance is declared. Bug: chromium:891861, angleproject:3402 Change-Id: Ia1d94b5d4d7da7e635468c05c962c4f7eb1b1919 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1750126 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Nico Weber 52cc70fa 2019-08-26T13:58:53 Try to list files instead of directory in isolate for gl_cts data. Bug: angleproject:3827 Change-Id: I65ed81886dce185bfc7542c321f43cc9bde6ef92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1771979 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 27a8b32f 2019-08-23T10:06:03 Vulkan: Enable ES1_VULKAN testing in end2end tests. Bug: angleproject:3408 Change-Id: I19b3c0f4795130638f43eabfe9c6f41ff85521fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1771547 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
James Dong 83a369bb 2019-08-14T10:39:34 Vulkan: Improve cubemap emulation seam handling Changes seamful cubemap emulation to always compute the derivative, emulating the bias parameter by scaling the provided derivatives. This results in more accurate mipmap levels for seams within primitives. There are some artifacts as a result of how derivatives are calculated, but this matches the native driver. Bug: angleproject:3243 Bug: angleproject:3732 Change-Id: Icb976e2a7e14cb4210645571edc037d4e607bd0d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754383 Commit-Queue: James Dong <dongja@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Brian Sheedy 2f4a7518 2019-08-16T14:09:13 Refactor perf tests to fix metric/story swapping Refactors the perf tests to fix the issue of metric and story being swapped, which causes issues when trying to convert to histograms. Specifically, does the following: 1. Rolls the version of src/tests/perf_tests/third_party/perf/ to Chromium 476dae823269c8d05b544271af97ad1adb0db8ee 2. Switch to using PerfResultReporter instead of PrintResult directly. 3. Split RenderTestParams::suffix into backend and story; backend is used as part of the metric, while story is used as the story. 4. Remove the "average" metric that was being automatically reported by ANGLEPerfTest, as reported results are automatically averaged. 5. Update the reported metric to more clearly distinguish between test, backend, and metric. It is now name_backend.metric. e.g. DrawCallPerf_vulkan.wall_time. Bug: chromium:923564,chromium:924618 Change-Id: I00cc191407052f23df57dbfa53b6fb088fc26960 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762360 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jonah Ryan-Davis 563f9f81 2019-08-23T11:59:30 Suppress failure in MultisampleCompatibilityTest Started failing on Win10 Intel Vulkan recently. Bug: angleproject:3855 Change-Id: I817ac2ffc593a9aac922dae0f5a8fb482940aa62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769077 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Clemen Deng d7d42540 2019-08-21T15:22:49 Don't build symbol table for GLSL built-ins if on Android The GLSL + ESSL autogenerated symbol table is too large for android, and android also doesn't need desktop GL functionality If on android, compile the ESSL only symbol table Bug: chromium:996286 Change-Id: I14dfc7748dae389e78c35f82a390c67962665356 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1757372 Commit-Queue: Clemen Deng <clemendeng@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
James Dong 1d5aaa6c 2019-08-06T11:20:13 Vulkan: support dynamic indices in array of arrays Expands existing struct-sampler rewrite to flatten arrays of arrays. This allows us to support dynamically-uniform array indexing, which is core in ES 3.2. Samplers inside (possibly nested) structs are broken apart as before, and then if the type resulting from merging the array sizes of the field and its containing structs is an array of array, the array is flattened. Also adds an offset parameter to functions taking in arrays to account for this translation. As a result of outer array sizes leaking into function signatures, functions taking arrays of different sizes are duplicated according to how the function is invoked. Bug: angleproject:3604 Change-Id: Ic9373fd12a38f19bd811eac92e281055a63c1901 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1744177 Commit-Queue: James Dong <dongja@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Sami Väisänen 5f45432f 2019-08-22T15:34:57 Add several angle bugs for end2end tests failing on NVIDIA Add several angle bugs for end2end tests failing on NVIDIA. - TwiceMaxVaryingVec2 failing on GLES - MipLevels failing on Shield GLES - GenerateMipmapCubeBaseLevel failing on GL BUG=angleproject:3849 BUG=angleproject:3850 BUG=angleproject:3851 Change-Id: I6e5283f0d4c1c5da8259034dfda3beb94e041b21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1768016 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Sami Väisänen 68c4fec0 2019-08-23T09:48:41 Add AtomicCounterIncrement test case Add AtomicCounterIncrement test case. BUG=angleproject:3246 Change-Id: I6e74f349b758c3ae9fcb44a14e70d36495406dfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1768017 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jaedon Lee 3b46885e 2019-07-30T16:50:36 Vulkan: Implement EXT_texture_type_2_10_10_10_REV - Expose GLES 3.0 feature of 2_10_10_10_REV texture type on GLES 2.0 as EXT. - Handle alpha channel value as 1.0 when used with RGB format. - Add test for "RGB+UNSIGNED_INT_2_10_10_10_REV" case into TextureUploadFormatTest. BUG=angleproject:3232. Test: dEQP-GLES2.capability.extensions.uncompressed_texture_formats.GL_EXT_texture_type_2_10_10_10_REV dEQP-GLES2.functional.fbo.completeness.renderable.texture.*2_10_10_10_rev dEQP-GLES3.functional.fbo.completeness.renderable.texture.*2_10_10_10_rev KHR-GLES2.core.internalformat.*2_10_10_10_rev* KHR-GLES3.core.internalformat.*2_10_10_10_rev* Change-Id: Iac00517971f9242161115c7256117a69093fb5df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1732618 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis a9389dfe 2019-08-23T15:22:35 Revert "Remove skipping of groupMemoryBarrierAndBarrierTest on NVIDIA" This reverts commit aac491fcdb31b7cea6d60db8787531b3acc87cd0. Reason for revert: This test is still failing on the Win7 NVIDIA bots: https://ci.chromium.org/p/chromium/builders/ci/Win7%20FYI%20Release%20%28NVIDIA%29/6206 https://ci.chromium.org/p/chromium/builders/ci/Win7%20FYI%20x64%20Release%20%28NVIDIA%29/6261 Original change's description: > Remove skipping of groupMemoryBarrierAndBarrierTest on NVIDIA > > Remove skipping of groupMemoryBarrierAndBarrierTest on NVIDIA. > > BUG=angleproject:2280 > > Change-Id: I9ea72939cd0f828295bb694c9d3515ef554c9a36 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1763948 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=kkinnunen@nvidia.com,jmadill@chromium.org,svaisanen@nvidia.com Change-Id: Ib7802e66b68419f7aa3dabf3a308811d36c52ff2 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2280 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769076 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi d6c7fec1 2019-08-12T16:46:57 Vulkan: Support mixed column/row-major buffer fields Adds comprehensive tests for mixed column/row-major interface blocks, which flush out various bugs in different OpenGL drivers too. Bug: angleproject:3443 Change-Id: Ie88cca743373891bbb49d9f564f30407475e07fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1749334 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Daksh Idnani 5ec04880 2019-08-22T21:12:08 Reland "Make Mac SystemInfo reflect the currently active GPU on dual GPU machines" This reverts commit 58940f67acd5b89f1c338b134a596864595fcdca. Reason for revert: pixel test failures have been triaged in Gold. Relanding. Original change's description: > Revert "Make Mac SystemInfo reflect the currently active GPU on dual GPU machines" > > This reverts commit 720a8bab0eca86e5b9b8c07c200a217fb2c65755. > > Reason for revert: pixel test failures per http://crbug.com/984780#c13 > > Original change's description: > > Make Mac SystemInfo reflect the currently active GPU on dual GPU machines > > > > Currently, the GetSystemInfo() function (in gpu_info_util/SystemInfo_mac.mm) > > on dual GPU Macs always updates the active GPU field of the SystemInfo > > instance to the first non-Intel GPU it finds. This change overrides the > > activeGPUIndex field of the SystemInfo instance to reflect the current GPU > > instead of the non-intel GPU. > > > > Bug: 985486, 984780, angleproject:3701 > > Change-Id: Ia93f38f4a2f7728c05e99c83a940722bd3808766 > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752334 > > Commit-Queue: Kenneth Russell <kbr@chromium.org> > > Reviewed-by: Zhenyao Mo <zmo@chromium.org> > > Reviewed-by: Kenneth Russell <kbr@chromium.org> > > TBR=zmo@chromium.org,geofflang@chromium.org,kbr@chromium.org,dakshidnani@google.com > > Change-Id: Iacf4b8433ac1aa4d30c51f08ddfc6489af440cc4 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: 985486, 984780, angleproject:3701 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1757373 > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> > Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Bug: 985486, 984780, angleproject:3701 Change-Id: I8f2f26f68329a2826a92742c46471b8c092b36ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1765963 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Clemen Deng 56db3789 2019-08-01T17:09:53 Use flat arrays instead of switches for function lookups Current implementation of built in function lookup uses autogenerated switch statements. Instead, use the perfect hash mapping to have the lookup use arrays instead. This will improve runtime performance. Bug: angleproject:3805 Change-Id: I6d0ba62d79abd53a7fe818fe675282800781f256 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1756883 Commit-Queue: Clemen Deng <clemendeng@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Clemen Deng 05744c23 2019-08-21T16:21:30 Change gl_DrawID from level = ESSL1+ESSL3 to COMMON Built in variable gl_DrawID is exposed to ESSL1 with a suffix, when the variable is the exact same. No need to do this. Bug: angleproject:3805 Change-Id: I63c71791bb6a0e8aa7b644171a3f5a81099eddc0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762359 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Clemen Deng <clemendeng@google.com>
Sami Väisänen aac491fc 2019-08-21T13:21:52 Remove skipping of groupMemoryBarrierAndBarrierTest on NVIDIA Remove skipping of groupMemoryBarrierAndBarrierTest on NVIDIA. BUG=angleproject:2280 Change-Id: I9ea72939cd0f828295bb694c9d3515ef554c9a36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1763948 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 58940f67 2019-08-22T15:40:58 Revert "Make Mac SystemInfo reflect the currently active GPU on dual GPU machines" This reverts commit 720a8bab0eca86e5b9b8c07c200a217fb2c65755. Reason for revert: <INSERT REASONING HERE> Original change's description: > Make Mac SystemInfo reflect the currently active GPU on dual GPU machines > > Currently, the GetSystemInfo() function (in gpu_info_util/SystemInfo_mac.mm) > on dual GPU Macs always updates the active GPU field of the SystemInfo > instance to the first non-Intel GPU it finds. This change overrides the > activeGPUIndex field of the SystemInfo instance to reflect the current GPU > instead of the non-intel GPU. > > Bug: 985486, 984780, angleproject:3701 > Change-Id: Ia93f38f4a2f7728c05e99c83a940722bd3808766 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752334 > Commit-Queue: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Zhenyao Mo <zmo@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> TBR=zmo@chromium.org,geofflang@chromium.org,kbr@chromium.org,dakshidnani@google.com Change-Id: Iacf4b8433ac1aa4d30c51f08ddfc6489af440cc4 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 985486, 984780, angleproject:3701 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1757373 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Daksh Idnani 720a8bab 2019-08-12T16:56:45 Make Mac SystemInfo reflect the currently active GPU on dual GPU machines Currently, the GetSystemInfo() function (in gpu_info_util/SystemInfo_mac.mm) on dual GPU Macs always updates the active GPU field of the SystemInfo instance to the first non-Intel GPU it finds. This change overrides the activeGPUIndex field of the SystemInfo instance to reflect the current GPU instead of the non-intel GPU. Bug: 985486, 984780, angleproject:3701 Change-Id: Ia93f38f4a2f7728c05e99c83a940722bd3808766 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1752334 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Hyunchang Kim 6d653c02 2019-08-14T14:09:02 Vulkan: Set empty buffer to xfb descriptor set as an initial buffer When we have xfb descriptor set without buffer bindings it causes errors in Vulkan validation layer. So we set empty buffer by default. BUG=angleproject:3681 Tests: dEQP-GLES3.functional.*transform_feedback* dEQP-GLES3.functional.lifetime.attach.deleted_input.buffer_vertex_array Change-Id: I4e7c9c9ee661f1fc92bf01fb78a2212c1a423eaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1753387 Commit-Queue: Hyunchang Kim <hckim.kim@samsung.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 396527c9 2019-08-20T13:48:38 Autogenerated kFunction* variables detected as mutable constants The android binary size is increased incorrectly because the autogen kFunction* variables are detected as mutable constants. Rename them to function* to workaround this. Bug: angleproject:3823 Change-Id: Ia335d1ae97ce5276a0ff8b9e432b53181cc36680 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762494 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill ddbc8e44 2019-08-17T15:59:08 Suppress nonportable include path warning. Might be related to Goma and C files on Windows. Bug: chromium:995046 Change-Id: If80168356a1e2a60abe8dfbf89aeed7298fd0a54 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1758998 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
James Dong 2f07e4fb 2019-08-02T10:41:56 Add test for array of arrays of samplers This test fails on the Vulkan backend because Vulkan does not allow arrays of arrays of samplers. Also adds a few other tests relating to arrays of arrays. Test: ./angle_end2end_tests --gtest_filter='GLSLTest_ES31.*' Bug: angleproject:3604 Change-Id: I5c47119b6ba6d26fe30fdd9c6730caac6f222696 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1733476 Commit-Queue: James Dong <dongja@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Clemen Deng 486f381f 2019-07-18T15:47:31 Add desktop GL built-in functions to symbol table Added GL built-in functions to symbol table autogeneration Built-in lookup now checks against spec and returns GL symbols when appropriate. Bug: angleproject:3719 Change-Id: I74786150f6063b40e13aebcb2eb9ea35e4ecaa53 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1731550 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Clemen Deng <clemendeng@google.com>
Jeff Vigil 265fdf0c 2019-07-31T15:10:44 EGL: Set errors per spec for eglCreateContext Per spec, in eglCreateContext when client version attributes are invalid - set EGL_BAD_ATTRIBUTE. Set EGL_BAD_MATCH when config is not compatible. Rename config variables in ValidateCompatibleConfigs to distinguish context from surface configs. Context config handled differently when EGL_NO_CONFIG. Bug: angleproject:3755 Test: angle_end2end_tests --gtest_filter=EGLCreateContextAttribsTest* Change-Id: Iaea57653cf643ff60c8d4eabd3f022306bf1f4ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1747298 Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Mohan Maiya 46be1a60 2019-08-16T10:39:23 Vulkan: Enable an fbo attachment query test in dEQP These tests are now passing with vulkan backend. Remove them from the expectations file Bug: angleproject:3679 Test: dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_texture_layer Change-Id: Ifb07b3743bf4ea0a7a98c33ae15cce46f6f2f75b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1758683 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott cc25d9fb 2019-08-15T15:13:02 Vulkan: Update copy_tex_image test failure bug ids Splitting out two bugs from 3458. Most of failing tests are failing because of Vulkan validation errors in the ANGLE glDrawArrays code. In those csaes, the copy_tex_image test code actually passes, but the ANGLE test-runner code is marking the tests as failing because of Vulkan validation errors. Bug: angleproject:3458 Bug: angleproject:3817 Bug: angleproject:3818 Change-Id: Idd91d9e44fa7eb6f527425dd77d6cbf949aa5e61 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1756816 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
shrekshao cdecd97c 2019-06-25T14:22:41 Add Draw base vertex and base instance function entrypoints Split from https://chromium-review.googlesource.com/c/angle/angle/+/1705035/27 This patch adds entrypoints glDrawArraysInstancedBaseInstanceANGLE, glDrawElementsInstancedBaseVertexBaseInstanceANGLE, glMultiDrawArraysInstancedBaseInstanceANGLE, and glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE Implementation will come in a later separate patch. Bug: chromium:891861, angleproject:3402 Change-Id: I18e19b850cddd79be4798b9ae7efe0680a050c7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1750125 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott 29b2fc4a 2019-08-15T09:25:04 Vulkan: Expect more texture-specification tests to pass. Recent changes allow these tests to pass. Bug: angleproject:3190 Bug: angleproject:2905 Change-Id: I549b3d0cc7beced756c2b44e9a72d399b51aa8f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1756284 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>