src


Log

Author Commit Date CI Message
Jamie Madill 4fa75b5c 2020-07-17T12:58:50 Move restricted trace functions to cpp file. This is a refactoring change only. It will facilitate moving these functions to a shared library. A shared library will allow us to more easily override GL functions with an interception layer. The intercept layer will allow us to do emulation for features like offscreen tests. Bug: angleproject:4845 Change-Id: I0e00c0c22a26f1bb8faec30a825c71953033f8a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2305039 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 23211585 2020-07-21T10:08:03 Roll chromium_revision b0410bba02..fb6cbaf6e5 (763000:790363) Also updates a Vulkan back-end file to not return error. Change log: https://chromium.googlesource.com/chromium/src/+log/b0410bba02..fb6cbaf6e5 Full diff: https://chromium.googlesource.com/chromium/src/+/b0410bba02..fb6cbaf6e5 Changed dependencies * build: https://chromium.googlesource.com/chromium/src/build.git/+log/45ab3c89af..1ee11394cf * buildtools: https://chromium.googlesource.com/chromium/src/buildtools.git/+log/204a35a2a6..9e121212d4 * testing: https://chromium.googlesource.com/chromium/src/testing/+log/3993ef1f52..f126fc6578 * third_party/Python-Markdown: https://chromium.googlesource.com/chromium/src/third_party/Python-Markdown/+log/36657c103c..9c8566e047 * third_party/googletest: https://chromium.googlesource.com/chromium/src/third_party/googletest/+log/217407c478..defbf92951 * third_party/jsoncpp: https://chromium.googlesource.com/chromium/src/third_party/jsoncpp/+log/{chromium_..ec647b85b6 * third_party/nasm: https://chromium.googlesource.com/chromium/deps/nasm.git/+log/4fa54ca5f7..19f3fad68d * third_party/zlib: https://chromium.googlesource.com/chromium/src/third_party/zlib/+log/ae385786ed..89bddfee9c * tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang.git/+log/04b99e7bf9..6412135b39 * tools/md_browser: https://chromium.googlesource.com/chromium/src/tools/md_browser/+log/aae45d8d82..be8cf5a17d DEPS diff: https://chromium.googlesource.com/chromium/src/+/b0410bba02..fb6cbaf6e5/DEPS Clang version changed 4e0d9925d6a3561449bdd8def27fd3f3f1b3fb9f:04b9a46c842f793a2baedcad64de35fcbd3e93b7 Details: https://chromium.googlesource.com/chromium/src/+/b0410bba02..fb6cbaf6e5/tools/clang/scripts/update.py Bug: angleproject:4867 Change-Id: I184945ad4d1fc39f4ad9b37cbf411b2c2b74a3ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2309223 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 1cfc6f0a 2020-07-20T16:03:38 Add test for deferred clear + attachment gaps This test makes sure the list of clear values given to the render pass (for deferred clears) are correctly passed. Bug: angleproject:4862 Change-Id: I4830a72a6f2b01570f6d4427ffb025429b5aa03c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2309109 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Geoff Lang 16856027 2020-07-08T13:47:33 Support EXT_shader_texture_lod on Vulkan. Bug: angleproject:2899,b/161716126 Change-Id: Ia850cbda948c8f6da9ced0bf46fd7f8371125032 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288333 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Manh Nguyen 10e9e9a1 2020-07-13T17:02:38 Apply multiprocessing to capture_replay_tests.py Multiple tests are run in paralell to squeeze the most out of CPUs. Tests are stored in a work queue. Whenever a CPU becomes available, the next unrun test is grabbed and run on a spawn process on that CPU. Each cpu gets their own environment and build folders and trace folders so that tests don't overwrite each other. Bug: angleproject:4817 Change-Id: Ifd35c9c75522e480b0257d090d5af70f2a3428ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2296040 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi d9818fd6 2020-07-19T00:37:21 Vulkan: Improve RenderTargetVk's getImage interface Prior to this change, RenderTargetVk had getImage() and getImageForWrite(). This change introduces getImageForCopy() and renames getImage() to getImageForRenderPass(). Currently, all three functions do the same thing. However, with upcoming changes the semantics will be different: - getImageForRenderPass(): This is the image used as the non-resolve attachment. When resolve attachments are introduced, there will be a corresponding getResolveImageForRenderPass(). - getImageForCopy(): When GL_EXT_multisampled_render_to_texture is implemented, this will return the image that owns the data. - getImageForWrite(): Similar to getImageForCopy(), but should set mContentDefined. This is currently missing, and is a bug that will be resolved in a follow up. This split change gets the mechanical rename out of the way to make future changes simpler. Bug: angleproject:4836 Bug: angleproject:4859 Change-Id: I5f7657cc049c0e1772a7c510e74289e685ba93c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2306516 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Tim Van Patten 80d7725d 2020-07-15T15:14:17 Use Subject/Observer pattern for Programs/Executables in PPOs This CL updates the frontend to use the subject/observer pattern for Programs and ProgramExecutables in PPOs. This allows us to remove the hack that iterated through all PPOs and marking them all dirty when a Program is re-linked. Instead, just the PPOs the Program is bound to are signalled, and only when the Program is in a PPO. Additionally the necessary PPOs are signalled when an Executable's textures are updated, rather than iterating through all PPOs and signalling them. Bug: angleproject:4559 Test: CQ Change-Id: Iaefb88c64c13259e921c8dfe95cf640247d17f85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300705 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi d8ce865b 2020-07-19T00:20:17 Vulkan: Make room in RenderPassDesc for resolve attachments Data in RenderPassDesc is packed better to make room for resolve attachments (9 bits made available; 8 for color and 1 for depth/stencil). mColorAttachmentRange contains values in [0, 8). The right side of the range is made inclusive (i.e. [0, 7]) so it will fit in 3 bits. The number of samples is always a power of 2, and below 128 (for the foreseeable future), so its log is stored instead in 3 bits. This change doesn't add support for resolve attachments yet, but is split off the one that does to simplify it. Bug: angleproject:4836 Change-Id: I2856286d5239499d0ab0c78b8154881c003309bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2306515 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Ian Elliott 7e2a9820 2020-07-20T12:38:05 Vulkan: Make explicitly-[non-]rotated get methods Split FramebufferVk::getCompleteRenderArea() into 2, [non-]rotated, explicitly-named methods. Simplify the uses of these methods, and fix some rotation cases. Also explicitly-name FramebufferVk::getScissoredRenderArea(). Bug: b/151111296 Change-Id: I1754ec2796fd8625b916a2dba2e723e70ecba419 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2305389 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Charlie Lao bdc79361 2020-07-15T17:01:05 Vulkan: No need to add current buffer into mResourceUseList This is follow up to https://chromium-review.googlesource.com/c/angle/angle/+/2288325. There is no need to add current buffer to mResourceUseList for the per context dynamic buffers. These dynamic buffers always shut down after we call finishImpl. Bug: b/160777679 Change-Id: I013cb3c30b4d31804cee13ce9e42da381fd1ae1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300208 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi cd5489ad 2020-07-19T00:05:21 Vulkan: Faster FramebufferDesc compare Objects of this class are used as keys to a hash map and contain 10 serials. Prior to this change, operator== would compare all 10 serials. This change tracks the maximum index set and only compares up to that many serials. To make sure this maximum index stays low in the presence of depth/stencil attachment, this class stores the depth/stencil attachment's serial before the color attachments. The update API of the class is improved so this implementation detail is not leaked. This is in preparation for supporting resolve attachments, which would add another 8 serials to the class. With this change, the performance of cases that don't use resolve attachments won't be affected. Bug: angleproject:4836 Change-Id: Ia4874ab79163901fb86f5bee4120e9f19babdc09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2306514 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Charlie Lao 234be194 2020-07-15T14:55:18 Vulkan: Move mEmptyBuffer from program to ContextVk And merge that with TheNUllBuffer as well so that you only have one dummy buffer per context. Bug: b/161391337 Change-Id: I75fddb5c48393876e745ff237e11d9c5672ae10e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300707 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott 0df0b79c 2020-07-17T16:26:21 Vulkan: Optimize changing texture max level For applications that frequently change the texture max level, to a value that is a subset of the texture's maximum levels, just recreate the VkImageView's. Test: NBA 2K20 game play Bug: b/160976091 Change-Id: I62a05a90cdb90147056ba8cec960c2114479ec37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300532 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Geoff Lang 49108a12 2020-06-30T11:53:23 Support BGRA_1010102 IOSurfaces in CGL and Vulkan. Bug: chromium:1100599 Change-Id: I7bc2c2e35490e28e9f6fe8f2e0c26cdea50650b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2275731 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 5671c2bd 2020-07-17T13:32:22 Capture/Replay: Fix vertex array objects for MEC While debugging NBA2K20 MEC, fixed the following issues: * Don't bind built-in attributes locations. * Don't emit glGenBuffers for the default VAO. * Include element array buffer in MEC. Test: NBA2K20 MEC Bug: b/160014453 Change-Id: I1b809946d67b6748b0670814be8dd090278dc38f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2307276 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 55e85549 2020-07-17T14:02:36 Lift warning from trace tests. Noticed when working on a related feature. Bug: angleproject:3630 Change-Id: I82638d37ee6d27dc824d5782c96387f0d000d585 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2305040 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Kenneth Russell 08c4d094 2020-07-16T18:48:59 Improve WebGL 2.0 readPixels support. Emulate GL_PACK_SKIP_PIXELS and GL_PACK_SKIP_ROWS on macOS, where it appears the OpenGL driver ignores these parameters. Add WebGL 2.0-specific validation constraints for pixel pack and unpack parameters. Bug: angleproject:4849 Change-Id: Iab566299223e05484a009817acb1ed2816023823 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2303905 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Courtney Goeltzenleuchter 9a9ef0ae 2020-07-15T16:50:32 Vulkan: Fix RTs attached to textures with non-0 mip Cleared confusion between GL level indices and VK level indices by adding the corresponding suffix to variables and function arguments. A handful of places that sent one index and expected the other are fixed. A couple more places needed this adjustment that were missed in the first CL. Also included a test to provoke those situations. The conversion between the two is given by: levelIndexGL = levelIndexVk + baseLevel; Bug: angleproject:4695 Change-Id: I3b8e5699abee1b011e52b666e6e245f44cb8ad6f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2302549 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Ian Elliott bcec11c2 2020-07-16T18:28:17 Vulkan: FramebufferVk::clearImpl() break-RP fix FramebufferVk::clearImpl() needs to potentially rotate the results of getCompleteRenderArea(), so that it can be compared with the results of getScissoredRenderArea(). Bug: b/151111296 Change-Id: Iad1fbdcb1943bae00835d31863d32ee85dbc7c2d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2303606 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Le Hoang Quyen 5f531342 2020-07-08T12:50:00 Metal: Enable dEQP GLES2 tests on AMD. The tests are disabled on Intel & NVIDIA for now. Bug: angleproject:4235 Change-Id: I06f7f8ba332edf308b7209f0ca6e6a6503aa1981 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2176814 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill 4e577a2a 2020-07-15T15:50:06 Perf Tests: Make "offscreen" a common test param. This will let us use it in the trace perf tests. Bug: angleproject:4845 Change-Id: I6188a0765c6f482bb38842faa4c58209c70b0153 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300206 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xinyi He 9b9472c3 2020-07-17T10:21:11 Fix ContextLostTest if robustness ext is disabled Reset notification behavior is defined in the GL_EXT_robustness extension, and the resulting context must support the extension and the specified reset strategy. So if the ext is not supported, it should disable delivery of reset notifications. Bug: angleproject:4823 Change-Id: I49b9364a83eab9ebc0fdca3b1dc075c1a43070cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2302874 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 94303d17 2020-07-17T10:20:57 Enable fixed swiftshader tests Bug: b/159712754 Change-Id: I5dc26726072ddadc3104561606cd425755679a83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2304173 Reviewed-by: Nicolas Capens <nicolascapens@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao cc551385 2020-06-29T10:25:45 Vulkan: Add cache for default uniform descriptor set Instead of free and allocate a descriptor set whenever buffer changes, add it into the descriptorset cache. Every time you get the buffer, we also look in the cache first to see if there is a descriptorset for that buffer or not. If yes, we use the cached descriptor set instead of allocate one. Bug: b/159457348 Change-Id: I64c252dfe22db66ea8188415e1b384af371b82ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2273698 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Charlie Lao 67980f13 2020-07-08T08:51:02 Vulkan: add Buffer/Texture/ImageViewSerial class In a few places we need a unique ID to represent that object and use that to compute hash key. Right now we are using Serial for that purpose but it creates confusion with QueueSerial which we are using Serial to track GPU progress. This CL changes these usage of Serial to TextureSerial, SamplerSerial, ImageViewSerial type so that compiler can perform type checking. It also adds BufferSerial in preparation for next CL. Bug: b/159457348 Change-Id: I8e2da69c2029e4ddbcf163981ae46f85e19f751b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2287426 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten e0a2bd5e 2020-07-15T18:07:45 Remove ProgramPipelineState::mHasBeenBound The member ProgramPipelineState::mHasBeenBound is unused and should be removed. Bug: angleproject:3570 Test: CQ Change-Id: Idc41574f79e665ac36bef5b206704c667c49dadb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2301101 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Charlie Lao 22e1f3e2 2020-06-26T14:26:50 Vulkan: Let all shader stages share one buffer for default uniform Right now each shader stage has its own vk::DynamicBuffer for default uniform storage. This is less efficient than just share one buffer. This CL moves the storage from per shader stage into its ProgramVk object. Bug: b/159457348 Change-Id: If47248ea23c4e48407d3b211583ae2b048d4d10f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2265281 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 4e7a6a69 2020-07-15T19:35:43 Perf Tests: Fix trace test calibration. The trace tests were including the startup time in their calibration calculations. Then was forcing them to always render one step. This fixes the calibration to attempt to get a more consistent measurement. The trace tests now render many more steps than they did before. It should increase the stability and decrease variance in our measurements as they will be runnnig many more frames than before. Also adds a verbose logging flag to help debugging. Noticed this bug when working on the trace test offscreen mode. Bug: angleproject:4845 Change-Id: Iff0c987008a935e7051fca34ef12f4433eb46092 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300205 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xinyi He 45f54928 2020-06-17T16:25:35 Vulkan: Fix capturing arrays using VK_EXT_transform_feedback Vulkan is able to capture the whole array when using transform feedback extension. Add a new end2end test for it. Due to the outdated nv bots, khr_gles31 tests are faild. Add these suppressions in the khr_gles31 expectations file in order to unblock the commit. Bug: angleproject:4723 Change-Id: I929f99544a01cf5fc781dc31c2c041c851976676 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2247952 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen 349b661d 2020-07-08T12:50:00 Metal: fix max point size and RGB565 renderbuffer bug. - Max point size is set to 64, since this is the max size observed. It is not 511 as https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf claims. - RGB565 is emulated on macOS by RGBA, needs to disable alpha write for this format. This was already done for TextureMtl, but wasn't for RenderBufferMtl. - Also enable true non-power-of-two textures support (OES_texture_npot). This was technically already supported, just that the extension wasn't advertised yet. - New Test: FramebufferFormatsTest.RGB565Renderbuffer Bug: angleproject:4816 Bug: angleproject:2634 Change-Id: Ie7e3efb4cb29bb9a3fd706c26e2b50b42ff3f6be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281797 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 08b9ad57 2020-07-08T12:50:00 Metal: Prevent vertex shader's inactive varying from being removed If vertex shader declares a varying but doesn't use it, and this varying is being used in fragment shader, linking will fail because the varying would be removed by spirv-cross. Fix: initilize the unused varying with zero(s). New test: GLSLTest.InactiveVaryingInVertexActiveInFragment. Bug: angleproject:2634 Change-Id: Ia37acd8eea85d5da4ddbca6457d6cddb1b41662c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281796 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop 6fe87f4a 2020-07-10T09:13:39 Tests: Change screen orientation for traces on Android This CL adds a reverse JNI call to our Android Native Activity that sets the orientation of the screen based on width and height. To achieve this we: * Attach to the java thread once at the beginning to grab JNI env. * Detach from the thread once when platform sends APP_CMD_DESTROY * Set the orientation during test init Bug: angleproject:4327 Change-Id: Ifbe31a6a84dd60a0dfe7d7032962c99b290d8b81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2289054 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Manh Nguyen dc9743fb 2020-07-14T11:33:29 Add buffer serialization capability Serializes buffers' states stored on CPU. Gets buffers contents on GPU by mapping buffers to CPU's address space, then copy their data. Unmap buffers after finish. Since this feature is for tests only, it is only implemented for the Vulkan backend. Adds buffer serialization to serializeContext method so that capture replay regresssion testing now compares the states of buffers too. Bug: angleproject:4817 Change-Id: Ic9b529701014d5ba8420023a021cd5ea381bd9a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2295950 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis a3ed8e19 2020-07-09T12:31:15 GL: Fix issue with EXTBlendFuncExtendedES3DrawTest The call to glBindFragDataLocationIndexedEXT was not being properly forwarded through ANGLE because we assumed that if its location was set, then its index was set, which is not always the case. Fixed this, and also added a link status check after linking so the error will properly propagate in the future. Bug: chromium:1099763 Change-Id: I28981c04a3f2d6a59c239b35b3f7eb0c7f586804 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2289653 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill debe4683 2020-07-15T14:36:33 Test Runner: Accept Chromium args. This change lets the test runner accept the same isolated script parameter syntax as Chromium. It keeps the old parameter names so the tests accept both. This will let us more easily integrate with the Chromium Android test_runner.py script. Also update the README which was missing a few flags. Bug: angleproject:3162 Change-Id: Ic22b289a095418ffdaa19a04caa1b45c6c657872 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300530 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop dd4723e3 2020-06-23T11:08:43 Capture/Replay: More ES 3.1 support This CL adds the following changes: * Support variable block sizes for ASTC * Support glMapBuffer * Additional param captures Test: Capture from beginning of Asphalt 8 and Aztec Ruins Bug: b/150484427 Bug: b/160808198 Change-Id: Ic1041011c3f51c32dbf7bf7105f41dffb9460b87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2264832 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 3e0b61a9 2020-07-06T01:18:22 Metal: Compile default shader source files separately. - Previously all default shader files were included in one file named master_source.metal. - Now they will be compiled separately and link together to generate binary shader. - Also generate a debug binary variant that will be used in debug build. Bug: angleproject:2634 Change-Id: Ic040835c4a729666e73afeba52f5be839b632396 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281784 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 9277ee74 2020-07-06T12:40:58 Metal: Implement MSAA default framebuffer. GL_SAMPLE_COVERAGE_VALUE is implemented by inserting gl_SampleMask writing logic to fragment shader. New test added: MultisampleTest.ContentPresevedAfterInterruption. - Skip on D3D11 (Bug: angleproject:4609) Bug: angleproject:2634 Change-Id: Ib44daf0baccc36ea320596d81713156047da059c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281783 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill f9e01f12 2020-07-14T17:20:18 Fix stale validation cache on buffer deletion. When we would delete the currently bound element array buffer we would neglect to invalidate a specific validation cache variable. This incorrectly would let us skip buffer size validation and lead to internal invalid memory accesses. Bug: chromium:1105202 Change-Id: I23ab28ccd3ac6b5d461cb8745b930f4d42d53b35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2298145 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4ad0f250 2020-07-14T21:22:35 Revert "Vulkan: Enable VK_KHR_get_memory_requirements2 extension" This reverts commit d98afb787a24285eccd554daa6b8de197187a636. Reason for revert: Suspected for angle_perftests failure. See issue. Bug: chromium:1105609 Original change's description: > Vulkan: Enable VK_KHR_get_memory_requirements2 extension > > 1. Don't assume support for VK_KHR_get_memory_requirements2. > Enable the extension, if supported, during device creation. > 2. Also let VMA fill in the function pointers for these commands > based on Vulkan API version - > 1. vkGetBufferMemoryRequirements2KHR > 2. vkGetImageMemoryRequirements2KHR > > Bug: angleproject:4830 > Change-Id: Icd0b3baf56732b5f5f49f320c1feb996204169ed > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2293633 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> TBR=syoussefi@chromium.org,jmadill@chromium.org,m.maiya@samsung.com Change-Id: Ida9a333f897d87e7608d4fafe9da9f1fad0221e4 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:4830 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2298146 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 5e7b1c41 2020-07-06T12:34:52 Metal: Create a dedicated class for Window Surface. To distinguish it from PBuffer class in future. Bug: angleproject:2634 Change-Id: I1e256a74584fb001158465cd3068925847231984 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281795 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 95bfb3e5 2020-07-08T23:07:48 Vulkan: Fix resolve draw path If the draw path is taken for resolve, the internal shader previously calculated (1+sum(sample.a))/sampleCount instead of sum(sample.a)/sampleCount. Additionally, due to a typo, the result was rounded. This change also fixes a number of off-by-one errors when calculating src/dst offsets in blit/resolve path. Tests are added to resolve from default to FBO and vice versa to exercise the draw path which was otherwise never invoked for color buffers. Bug: angleproject:4746 BUg: angleproject:4092 Change-Id: I4b9c181339b89af44b27d61d27a6b3d88cde2eea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288224 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Mohan Maiya d98afb78 2020-07-10T17:11:15 Vulkan: Enable VK_KHR_get_memory_requirements2 extension 1. Don't assume support for VK_KHR_get_memory_requirements2. Enable the extension, if supported, during device creation. 2. Also let VMA fill in the function pointers for these commands based on Vulkan API version - 1. vkGetBufferMemoryRequirements2KHR 2. vkGetImageMemoryRequirements2KHR Bug: angleproject:4830 Change-Id: Icd0b3baf56732b5f5f49f320c1feb996204169ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2293633 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Austin Eng 66d85686 2020-07-13T21:25:40 Revert "Refactor DisplayGbm::generateConfigs" This reverts commit 7d82d29398cc9106af5204f9df3525660ffe2866. Reason for revert: Suspect CL failing on Linux FYI Ozone Original change's description: > Refactor DisplayGbm::generateConfigs > > Bug: angleproject:4809 > Change-Id: I5f352f737bbd53c78d9e01055c17eabd17d5fb8a > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2278667 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> TBR=geofflang@chromium.org,jiajia.qin@intel.com,jmadill@chromium.org Change-Id: I62c8a6a78d1ccfe8aa63bea7a9409229cd0059ab No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:4809, chromium:1105208 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2296041 Commit-Queue: Austin Eng <enga@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org>
Manh Nguyen e5c18475 2020-07-06T09:50:49 Multi-frames serialization + comparision for capture replay test Changes how context states are serialized during capture run. Now, context states are serialized after each frame until the end frame is reached, or context is destroyed. Adds an api to the trace files to query serialization results of multiple frames. Makes change to CaptureReplayTest to serialize multiple frames then compares the serialization results with the ones retrieved from said api. Adds to capture replay the ability to produce working, compilable trace files even when end frame is not reached. Adds to the generated trace files config information and makes CaptureReplayTest utilize said config information to reproduce the exact environment of the captured application. Bug: angleproject:4817 Change-Id: Ie3d487af2bacf349dc3ff6f6b1b5f89e1169dc84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2282885 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Xinyi He 92ffd40e 2020-07-08T18:25:55 Vulkan: Disable GL_EXT_robustness extension on Mali Vulkan doesn't have a mapping extension to GL_EXT_robustness, so we need to disable it. Bug: angleproject:4823 Change-Id: If7b66c0eb7ba14b9349925af64ec2efcec9985a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2287092 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jiajia Qin 7d82d293 2020-07-02T15:15:54 Refactor DisplayGbm::generateConfigs Bug: angleproject:4809 Change-Id: I5f352f737bbd53c78d9e01055c17eabd17d5fb8a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2278667 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Shahbaz Youssefi 120e1d66 2020-07-09T17:56:54 Vulkan: Set the wideLines features when available Bug: angleproject:4827 Change-Id: I40fc893fdaf7135e2ad782a489b59c518346db9c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2290582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 73b6b3a8 2020-06-03T14:38:34 Vulkan: Fully enable pre-rotation for Android Bug: b/157667116 Change-Id: I3e5d41eed9b27eb2b49db853d85ec5c867dd2409 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2228366 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
Mohan Maiya 2a2b4b13 2020-07-09T13:15:13 Vulkan: Force flush staged updates for external textures For textures that are backed by external memory, immediately flush sub image updates instead of staging them. Bug: angleproject:4828 Tests: angle_end2end_tests --gtest_filter=ImageTest.UpdatedExternalTexture* Change-Id: I51e5bd0cb5df7df3af21f0cdb3007eebc1be29cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2290490 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Charlie Lao fe36a647 2020-07-08T18:27:21 Vulkan: Add driverUniform's buffer to mResourceUseList There is a bug with mDriverUniforms' dynamicBuffer that we never add it to context's mResourceUseList to let it hold onto it until GPU completes. This causes old buffer gets recycled prematurely and gets overwritten, result in rendering corruption. This CL adds current buffer to the mResourceUseList so that it will be waited properly before gets recycled. Bug: b/160777679 Change-Id: I7707442e0f5ba408f5f28337422274e0c23b6bfb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288325 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Courtney Goeltzenleuchter f61272fb 2020-06-17T11:38:37 Add support for VK_KHR_sampler_ycbcr_conversion This adds ability for applications to import Android Hardware Buffers (AHBs) as OpenGL images which in turn can be sampled from and/or written. This was specifically tested with the common use case of importing a buffer created by an media decoder and using that as a texture source to include that video content on the screen. Tested with: - Angry Birds 2 video player (for ads) requires YUV conversion. - Basic Media Decoder example: https://github.com/android/media-samples/tree/master/BasicMediaDecoder Bug: b/155487768 Change-Id: I9255450f81aa4daa2aace7205d4f6c3f225abcca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2175103 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi b549be96 2020-07-02T16:17:10 Vulkan: Warm up glslang on startup As soon as glslang is initialized (which is done when EGL is initialized), try to compile a simple shader. This will warm up glslang's internals to avoid hitches on first shader compilation when a WebGL application starts. Potential future optimization is to use a worker thread to do this. Bug: chromium:1091440 Change-Id: I6ac22e982d748af52a6e8b61239889425edc2edb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280401 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Nico Weber fac68170 2020-07-08T22:19:43 Don't build vulkan_validation_layers on macOS. angle_enable_vulkan_validation_layers is false on is_mac, so it looks like they were built by accident. Guard the dep on $angle_root/src/common/vulkan:vulkan_validation_layers by angle_enable_vulkan_validation_layers instead of angle_enable_vulkan, and only define the target if angle_enable_vulkan_validation_layers is true (because src/common/vulkan/BUILD.gn gets loaded due to deps on other targets in it, and when a .gn file is loaded all the targets in it get defined). Since vulkan_validation_layers doesn't currently build on arm macs, this happens to fix a build problem there, but it also makes the build on intel macs a bit smaller. This sidesteps comment 13 on the bug. If we ever want to use the validation layers on mac, we'll have to do a real fix then. Bug: chromium:1098741 Change-Id: I8164ff13de98d34ed875c6e6d0550eae64b2d0dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2289042 Commit-Queue: Nico Weber <thakis@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott a740b193 2020-07-08T16:58:46 Vulkan: Rotate damage rects for 90/270 rotation ANGLE supports the EGL_KHR_swap_buffers_with_damage extension by using the Vulkan-equivalent VK_KHR_incremental_present extension. The damage rectangles need to be rotated for 90/270-degree rotations. Test: Aztec Ruins with VVL Bug: b/157667116 Change-Id: I9a43594b30bc67ca80aeff7705b4350659207d09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2289035 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Cody Northrop 13859945 2020-06-26T13:21:35 Capture/Replay: Fix default uniform array capture The pointer from vector::data() already reflects the size of the underlying type, so no need to include sizeof. This caused us to write beyond the vector bounds when reading multiple values. We were also missing component count. Test: MEC of NBA2K20 Bug: b/160014453 Change-Id: I51fc3f5f80c732221d6ea4b4bd1afde635e410a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2270909 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Manh Nguyen <nguyenmh@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Manh Nguyen 900c7e87 2020-07-07T14:20:36 Serialize d/s buffers + use color buffers' impl format for readPixels Adds serialization of depth/stencil buffer contents Currently, readPixels on color buffers uses the gles front-end format, which can be different from the implementation format used in the backend. This can cause seg fault crashes when the number of bytes in a pixel differs between the two format. Changes so that readPixels for color buffers always use the backend format. Bug: angleproject:4817 Change-Id: I62d5deb1320ea38ee46143b2aa97f372ba01baeb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2284451 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Jonah Ryan-Davis 514c8f64 2020-07-08T13:48:54 Skip MultithreadingTest.MultiCreateContext on Ozone This tests crashes on Ozone, skip for now. Bug: chromium:1103009 Change-Id: Ie686e69d937710b43b615372251801e83b7bde20 TBR=geofflang@chromium.org Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288334 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Manh Nguyen 3688cb36 2020-06-28T15:28:10 Fix bugs in angle_end2end_tests and frame capture 1. CaptureGetShaderInfoLog_infoLog method should not require shader object to be compiled 2. glCompressedTexImage3D's parameter locations are off by 1 3. EGLContextSharingTest.DisplayShareGroupObjectSharing test should not delete buffers it has no access to since it will crash when running capture replay Bug: angleproject:4801 Change-Id: I0d407cdb44eb41eea4209eebab0996d3dd8ae5f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2272862 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Etienne Bergeron 6fc53fdb 2020-06-30T18:08:21 Fix typos in comment This CL fix typo in a comment introduced recently. There is no functional change. Bug: chromium:1091259 Change-Id: I56f1963514b87b2a93859a6db707be093e865e28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2276748 Commit-Queue: Etienne Bergeron <etienneb@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 8b80e852 2020-06-25T09:43:01 Remove debug info from SPIR-V When dcheck_always_on=false, the SPIR-V transformer will strip all debug information to reduce the SPIR-V binary size. Running T-Rex shows about 27% reduction in the SPIR-V binary size. Bug: angleproject:4680 Test: CQ Change-Id: Id9d0189cdc9c12fa5a1741cf62ef549a533cdf93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2267358 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b291ad09 2020-07-03T23:53:10 Build specialized version of glslang Bug: angleproject:4763 Change-Id: Ibb98c872a1283b9d6acde958a7c5212cf79e72df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281618 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 36a97db1 2020-07-02T23:29:45 Vulkan: Compress internal shaders Shaves ~200KB in binary size. The compressed SPIR-V blobs are in most cases a little smaller than 1/3 of the original size. The internal shader blobs at this point take ~100KB. Bug: angleproject:2022 Change-Id: I1a2cec073cb1f330632c8dce7a550a0cca1e373d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280945 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
shrekshao 9349e262 2020-06-25T14:28:17 Fix multiDraw* with DYNAMIC_DRAW buffer usage Specialized Context11 impl to prevent promote Dynamic during MultiDraw. Add different buffer usage to MultiDraw and BaseVertexBaseInstance tests. Bug: angleproject:3402, angleproject:4754 Change-Id: I50e1a6fd6c8b6fd48f130c43545b895335d2e55b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2268581 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
shrekshao 796df76c 2020-06-25T11:49:12 MultiDraw Refactor Refactor MultiDraw* from general Context to different ContextImpl. Move general multiDraw code to renderer_utils.cpp. Bug: angleproject:3402 Change-Id: I85cb4b781afa2b3a8beb382a9c735910057f2ebe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2268580 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 69fa4d23 2020-06-30T09:06:33 Vulkan: Query aspect flag from the image When transferring images across queues we need to query the aspect of the image instead of hardcoding it to VK_IMAGE_ASPECT_COLOR_BIT Bug: angleproject:4791 Bug: angleproject:4818 Tests: angle_end2end_tests --gtest_filter=ImageTest.SourceAHBTarget2DDepth* Change-Id: Ia43a00262085dab492935c0c299635f3af468b50 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2274868 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jonah Ryan-Davis 3c8f6094 2020-06-26T12:42:37 EGL: Add basic multithreading support Adds first step to allowing multithreaded contexts: letting multiple threads use ANGLE as long as only one thread has a current context at a time. Bug: angleproject:4724 Bug: angleproject:4725 Change-Id: I4f606bdb15386cff9e3cb84d4120781e24e15fe4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2269864 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill acbe145c 2020-07-02T14:59:55 Test Runner: Batch tests by config. This CL sorts tests into subprocesses organized by a single config. It will allow for the test runner to use a single EGL display per process in most cases. It doesn't implement the display sharing right now, that'll be in a forthcoming CL. It assumes test configs are split between / and (optional ending) __ characters. Bug: angleproject:3162 Change-Id: I28e8b4687640da6e501f08b8b9347185c99ce30f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280403 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi d38c75c5 2020-07-02T22:12:19 Vulkan: Remove BufferUtils shader This was the first internal shader written for prototyping UtilsVk. It ended up never having a user. Bug: angleproject:2022 Change-Id: I846dcc216c4c018f5bda16ad67463f698b8e1c56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280944 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya dd2316df 2020-07-02T14:20:05 EGL: Add image test for AHB based EGLImages Add new end2end test where the source for EGL images is an Android Hardware Buffer Bug: angleproject:4810 Tests: angle_end2end_tests --gtest_filter=ImageTest.SourceAHBTarget* Change-Id: I20f303c6ad839ac2e65d407cfe3813a8be4c1cfa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231884 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Manh Nguyen 05e2fe78 2020-07-03T12:25:01 Remove class size static_asserts from serialize methods Right now, the static_asserts will fail on certain platforms with certain configurations as the class sizes differ between platforms. Bug: angleproject:4779 Change-Id: I92f61393b2e9e5b7d6dc9085b1a42cb377143469 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280987 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ad782a84 2020-07-02T16:21:59 Tests: Use "__" to delineate test config names. This will allow the ANGLE test runner to identify test configs for tests that use parameterization to break up different test permutations with the same config. Note that GoogleTest doesn't allow for anything other than alphanumeric characters or "_" in test names. Bug: angleproject:3162 Change-Id: Iee215fbd8c397eef04dce0269da9b58ec568fce7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280402 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 0757a61a 2020-07-03T10:03:08 Remove suppression of passing test Bug: angleproject:4698 Change-Id: I1c97f27534f25e1b63b1e07a82ffade353f805d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280983 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Sylvain Defresne bae95f81 2020-07-02T17:19:14 Convert GN libs lists to frameworks GN recently added support for Apple frameworks to link, rather than overloading the libs lists. This pulls .frameworks out of the libs lists, so that GN can stop supporting .frameworks in libs in the future. Bug: chromium:1052560 Change-Id: I3aed298db01bdb5f6e7f37a74c1bbc06f99d760c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279931 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi cbdb76b0 2020-07-02T10:09:34 Vulkan: Create sRGB views only when needed Creating sRGB views was conditioned to VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT being necessary, but that flag can be set for reasons other than sRGB override, such as when recreating the image to be used as a storage image. Bug: angleproject:4551 Change-Id: I6f94a1c898b599d4333d74608c7451b4ce4f71f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279134 Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Dirk Pranke a86c8547 2020-07-02T12:57:52 Add missing data deps to angle test executables. Currently the Chromium build defines some wrapper test targets for ANGLE (//chrome/test:angle_perftests and //chrome/test:standalone_angle_unittests) that seem to exist only to specify some extra data dependencies. By moving those data dependencies into angle, this removes a couple of targets in Chromium that are otherwise problematic for my planned changes for crbug.com/816629. Bug: chromium:816629 Change-Id: Ic0d50132f102f39749c92b062eec38a529db2c1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2280255 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Dirk Pranke <dpranke@google.com>
Mohan Maiya 89c88559 2020-06-20T11:13:57 Add end2end test for readonly feedbackloop Bug: angleproject:4778 Test: ./angle_end2end_tests --gtest_filter=ReadOnlyFeedbackLoopTest* Change-Id: I1c2500395d261c1686e5d325aad173462311c8c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2252543 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Manh Nguyen dce37b7d 2020-06-21T22:27:06 Serialize framebuffers + compare contexts for CaptureReplayTests Adds to frame capture the ability to serialize a frame's pre-swap GL state and store it in the binary data file Adds to CaptureReplayTests the ability to compare its serialized GL state with the serialized state pulled from the binary data file Adds a serialization module that serializes framebuffers' GL states and the contents of their color attachments Adds checks to automation script so that it would skips tests that do not produce the expected trace files Adds exception handling to automation script so that it will not crash when a replay build crashes Bug: angleproject:4779 Change-Id: I40a02e018073749e79f0ddbfd3d4065745548f46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2258295 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 5fec8ecf 2020-07-02T11:14:30 Fix CopyTexture3D test to remove Nvidia workaround Bug: angleproject:4748 Change-Id: I8e66fda3c9fd234451ad765c8777cd75b4fc44fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279136 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 65f7ab79 2020-07-02T10:04:48 Vulkan: Cleanup extension properties and features Bug: angleproject:4551 Change-Id: Iae6b94027cfaca6c72318203a286865c2e3b19a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279133 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 62ff54eb 2020-05-12T13:27:21 Vulkan: Featurize shadow buffers Shadow buffers help reduce the latency of glMap* operations at the cost of CPU overhead. It might not be desirable to incur such an overhead for all usecases. Featurize it but enable it by default. Bug: angleproject:4339 Change-Id: I6374618bf99677eef55fd50a139fb86f5ea70791 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2278102 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Shahbaz Youssefi cf63d872 2020-07-02T09:59:58 Vulkan: Use mipmap hint when generating mipmaps If the application asks for GL_FASTEST, this uses VK_FILTER_NEAREST instead of VK_FILTER_LINEAR. Bug: angleproject:4551 Change-Id: I6c10758104bd63dd477ea853a3b0464665f371ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279132 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Corentin Wallez cbcc500f 2020-06-26T14:10:37 Broaden EGLFeatureControlTest Linux AMD suppression After the initial suppression the bot started failing on the next test. Use GTEST_SKIP in testSetUp to make all tests using the fixture skipped. Bug: chromium:1097750 Change-Id: Ic993d7cd274e1328684571c5ba1a1520b9cb80d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2270020 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jordan Bayles 1265dbe6 2020-06-24T15:12:17 Update JsonCpp usage This patch updates usages of the JsonCpp library, including the following changes: 1. Removed unused version variable from the DEPS file. 2. Removed deprecated writer and reader usages, in favor of the new builder pattern inside JsonCpp. 3. Modernized usage of the Json::Value types, including some rewrites to avoid unnecessary heap allocations, and using the new foreach iterators. Bug: chromium:983223 Change-Id: If26abc8be677d905183a23498fbb81256854525c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2265093 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Ian Elliott d2ca995f 2020-06-30T16:33:11 Vulkan: Update "fragment_ops" failures on Android A Qualcomm driver bug causes certain "dEQP-GLES3.functional.fragment_ops*" tests to fail. On Pixel 4 XL, this only occurs when the device is rotated 90 or 270 degrees. Bug: angleproject:4344 Bug: b/157933198 Change-Id: Iedb7e8c76fbe55795537cab3e821a410899fdea3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2277103 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Alexey Knyazev 1ae8d2dd 2020-04-29T09:47:01 Fix blendable FP32 texture caps on ES2 contexts Although the EXT_float_blend extension is defined only for ES 3.0+, ANGLE exposes it on ES 2.0 client contexts. Bug: angleproject:4595 Change-Id: I7451062ed8b1ab4eb18a8c7c1d37ee7383c8ea4b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2172738 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott 28300e6f 2020-06-30T10:41:27 Vulkan: Fix off-by-1 180/270-rotated CopyTexImage The rotation calculations are a little different for this code (that uses a special shader) than for other pre-rotation cases. I also modified the CopyTexImageTestES3.2DArraySubImage test to make future bugs a little easier to diagnose. Test: Test: angle_end2end_tests --gtest_filter=*CopyTexImageTestES3.2DArraySubImage*Vulkan* Test: Test: angle_end2end_tests --gtest_filter=*WebGLReadOutsideFramebufferTest.CopyTexSubImage2D*Vulkan* Bug: b/158245571 Change-Id: I497ec541cae5cd4085c3e9d596ee20943f5510f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2275733 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Tim Van Patten 68e60a92 2020-06-26T11:10:07 Vulkan: Don't store transformed SPIR-V Since the original SPIR-V is never store after being modified, we don't need to keep the transformed SPIR-V either. Bug: angleproject:4513 Test: CQ Change-Id: I4b70cfa355a08107e6a27377f6258cbf9e4072be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2270718 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 34eb401b 2020-06-19T15:36:18 Vulkan: Skip repeated VkCmdClear call with the same value Some apps actually do this. One of them is gfxbench. This helps performance by dropping the redundant clear calls. Bug: b/159489614 Change-Id: Ib7958042f081b8fd58c5bc912fbb45bb223aec0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2255643 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Xinghua Cao d1bf23d7 2020-06-23T16:57:05 Restrict member types for StructuredBuffer Std140 storage layout has some rules for uniform block, must pad StructuredBuffer element type explicitly to match std140 layout rules when translating std140 uniform block to StructuredBuffer. In this CL, restrict member types which are not needed to add paddings according std140 layout rules. Bug: angleproject:4783 Change-Id: I50130da64ad6865083849bf55b76525f3d2835a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2259226 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Tim Van Patten 774cd1b2 2020-06-25T09:15:24 Vulkan: Only transform SPIR-V once Prior to this change, the SPIR-V would be transformed as part of GlslangGetShaderSpirvCode() and then possibly another time afterward to disable the early fragment test optmization (for monolithic programs) or to update the descriptor set/binding values (for PPOs). By storing the original SPIR-V in the ProgramVk and the transformed SPIR-V in the ProgramExecutableVk, we can now remove the SPIR-V transformation from GlslangGetShaderSpirvCode() and only perform it once in ProgramInfo::initProgram() for monolithic programs and PPOs. Bug: angleproject:4513 Test: CQ Change-Id: I4e7240b2abe7c796c46cf531948dad0e37c1419a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2267537 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 8ea72e86 2020-06-29T23:42:42 Skip failing test on NVIDIA Shield Bug: chromium:1100613 Change-Id: I1e05b2b7829ee790f878bf99976310c8a697faa2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2274520 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 06462add 2020-06-04T16:14:18 Add a test for copying from one mip to another Bug: angleproject:2914 Change-Id: Ib39f8599a613cbb85688c230cf8a72e23d8e1c1c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231618 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tim Van Patten 7993f34d 2020-06-24T18:39:08 Vulkan: Store transformed SPIR-V in ProgramExecutableVk The original SPIR-V is specific to a ProgramVk while the transformed SPIR-V is specific to a ProgramExecutableVk. This CL keeps the original SPIR-V in the ProgramVk::mOriginalShaderInfo and the transformed SPIR-V in ProgramExecutableVk::mTransformedShaderInfo. This allows us to skip an extra copy that was occurring during PPO link(). Bug: angleproject:4513 Test: CQ Change-Id: I796dcd6bcfb2df08d9b8f1a5295b2821a4096f16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2265484 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis e2de2c1c 2020-06-25T11:59:14 Fix disable_native_parallel_compile workaround condition. This workaround should only be enabled when ANGLE is built with TSAN on. Bug: chromium:1094869 Change-Id: If527457c11ce744b543ac69761cc64235d2f1dd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2267420 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Manh Nguyen bdf91e5f 2020-06-29T13:47:13 Refactor frame_capture_utils.h to frame_capture_test_utils.h frame_capture_utils.h is only used in tests so changing the name to be frame_capture_test_utils.h is more appropriate. Also frame_capture_utils.h will now be a file in libANGLE_with_capture library where serialization code is stored. Bug: angleproject:4806 Change-Id: I7482693a75b2d0edda7e84ae9b777fd3f46f1855 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2273917 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 58ff77a8 2020-06-27T09:30:00 Vulkan: Set new layout based on VkImageUsageFlags When transferring vkImages between queues, the new layout needs to be set based on the usage flags of the vkImage instead of hardcoding it to AllGraphicsShadersReadWrite Bug: angleproject:4791 Change-Id: I3b543a6280e6c2317cc11bf65dc4c337bc5f90b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2271563 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter b31a1939 2020-06-25T08:13:20 Vulkan: Implement invalidate for color buffers This will set the color buffer load_op to DONT_CARE if the application has invalidated the color buffers prior to drawing. Will also set load_op to DONT_CARE for depth & stencil, though this isn't likely a common use case. Tests: angle_deqp_gles3_tests --gtest_filter=dEQP.GLES3/functional_fbo_invalidate_* --use-angle=vulkan angle_end2end_tests --use-angle=vulkan --gtest_filter=StateChangeRenderTestES3.InvalidateNonCurrentFramebuffer/ES3_Vulkan Bug: b/150458520 Bug: angleproject:4444 Change-Id: I6ce3d20fc1e9f4ab7ba3af9755c5ddc544f58ddd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2267057 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi b0245f68 2020-06-23T22:38:12 Vulkan: Remove superseded updates when flushing to image Especially with emulated formats and robust resource init, a clear is staged that's often superseded by a data upload to the same subresource. This change ensures that superseded updates are dropped to avoid unnecessary GPU work. Bug: angleproject:4691 Change-Id: I697ccd438b92fd2fff17a5800550694658c95c54 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2262574 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Ian Elliott 7538f91e 2020-06-29T10:17:09 Vulkan: Skip *functional.attribute_location.bind* tests Bug: angleproject:4249 Change-Id: I980054c374f43596050a3387d1d6c3e71b5efed9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2273697 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>