src/tests


Log

Author Commit Date CI Message
Shahbaz Youssefi 37457d08 2020-09-15T14:38:53 Vulkan: Support MSRTT color renderbuffers Color renderbuffers are similar to multisampled-render-to-texture textures, but much simpler. The same mechanism is used to implement them. Bug: angleproject:4836 Change-Id: I298529c9fd1b03e78b1e37cdbe595e66166ee130 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2412847 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Mohan Maiya c99c22bb 2020-09-15T16:53:26 EGL: Add support for EGL_ANDROID_create_native_client_buffer This EGL extension will add support for creating EGLClientBuffer backed by an Android window buffer (struct ANativeWindowBuffer) which can be later used to create an EGLImage. Bug: angleproject:5018 Tests: angle_end2end_tests --gtest_filter=ImageTest.SourceNativeClientBufferTarget* Change-Id: If78ed7b80ad09629b8c5f5b5a0eb07a548e82e6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2404320 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Amy Liu 83c7e1ae 2020-09-17T16:42:19 Fix the regression of color blit. Move the offset aligning code to stencilBlitResolveNoShaderExport to avoid affecting color blit. Test: dEQP-GLES3.functional.fbo.blit.default_framebuffer.*_linear_* Bug: angleproject:5044 Change-Id: Ic2ebef94091853146424d567b0035161611ba32d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2416008 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Courtney Goeltzenleuchter 0a8a3ea2 2020-09-14T11:12:43 Vulkan: Skip nested pow test on NVIDIA, Windows Suspect possible NVIDIA driver issue as unable to repro on some NVIDIA, Windows, NVIDIA configurations. Test: angle_end2end_tests --gtest_filter=GLSLTest.NestedPowStatements/ES3_Vulkan Bug: chromium:1127866 Change-Id: Ic6a95915af72aab086753a0e0199ac1dee8bfb62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2410560 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten f12e4123 2020-08-25T12:01:12 Vulkan: Match descriptor pool sizes to descriptor set layouts When a descriptor pool is created, a list of descriptor types and counts are given to vkCreateDescriptorPool(). Later, when allocating a descriptor set from the pool, we pass along a descriptor set layout to vkAllocateDescriptorSets() which is used to determine how many of each type of descriptor (i.e. binding) to allocate from the pool. In order for our "free descriptor set" counts to be accurate for each pool, the descriptor pools need to be created with descriptor counts that match the descriptor set layout binding counts. This change fixes a bug where the descriptor set layouts were created with more bindings than the descriptor pool sizes, causing the "free descriptor set" count to be inaccurate, leading to allocating too many descriptor sets from a pool. Bug: angleproject:3570 Test: VulkanDescriptorSetTest Change-Id: I660bf02d29a1291391fb15f39e6479bf348d0f83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2391114 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 58463573 2020-09-16T19:30:56 Test Runner: Fix dirty thread teardown. When the standalone tests shut down they would not wait for the watchdog thread to exit cleanly. Fix this by setting a flag that shuts down the watchdog and attempting to wait. This was detected by running angle_end2end_tests with TSAN. Bug: angleproject:3162 Bug: b/168744561 Change-Id: I765ce7a21c3be11703619470a81adb1882b009e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2415175 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill a2d670c5 2020-08-15T21:13:33 Run trace tests against Vulkan Mock ICD. Required an upstream fix: https://github.com/KhronosGroup/Vulkan-Tools/pull/437 Also a workaround filed as an issue: https://github.com/KhronosGroup/Vulkan-Tools/issues/445 Bug: angleproject:4950 Change-Id: I21333464d2a8e52d5d85d35654f0e6372f9650db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2358517 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Nicolas Capens 07c03b6d 2020-09-11T14:43:37 Validate GLSL attribute location range The location index of a vertex shader input's layout qualifier must be less than GL_MAX_VERTEX_ATTRIBS to link successfully. We can check for this during shader compilation to not rely on other layers to handle pathological cases. While strictly speaking only 'active' attributes are considered during shader linking, this is merely intended to allow for 'uber' shaders to declare more inputs than GL_MAX_VERTEX_ATTRIBS but only use a subset of them. There is no known reasonable use case for a manually specified location to exceed the valid range. Note that according to http://opengl.gpuinfo.org, the highest GL_MAX_VERTEX_ATTRIBS value at the time of writing is 32. Also, D3D12_VS_INPUT_REGISTER_COUNT = 32. Hence the unit test's value of 1000 should be sufficiently future proof. Also address the case where the uniform location might be close to INT_MAX and not be detected as out-of-range due to numeric overflow. Bug: chromium:1110800 Change-Id: I9985c8eab3bb8a2a59b8f985e8f5b6884756383c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2405368 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Nicolas Capens <capn@chromium.org>
Jamie Madill 23cff4e1 2020-09-16T13:41:49 Test Runner: Handle GTest sharding args. These were messing up the test runner when used in combination with the test runner's specific args. Make it an error if the arguments are used together. Bug: angleproject:3162 Change-Id: I6fa1c0fb346a8c376ca455f7f4bf0492cfc0198a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2414931 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 99b71417 2020-09-16T11:41:24 Vulkan: Disable BlitStencilWithFlip test on Win These tests fail on the Windows NVIDIA bots Bug: angleproject:5044 Bug: chromium:1128064 Change-Id: Idad4cc33d8e49b0b468b8e560b44f9a9c6a2f37f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2414932 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Alexey Knyazev ed01473e 2020-09-12T13:01:05 Vulkan: Fix blendEnable-02023 VU Enable BlendIntegerTest Add DrawBuffersTest.BlendWithGaps test Add BlendPackedTest Bug: angleproject:4548 Bug: angleproject:4571 Bug: angleproject:4583 Change-Id: I139183099b26f0fe1ac9e43f96d18b8ccb134a2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407772 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 4d3a0f60 2020-09-11T12:36:05 GN: Componentize D3D format tables. These tables are used by both the GL and D3D11 back-ends. Also moves them to renderer_utils to be in a shared place. Bug: angleproject:3943 Change-Id: I1f5d79842396a87e795547fa03c6855d6f9c5e9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2405805 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Xinyi He 377e7487 2020-08-27T17:11:35 Vulkan: Support array of array image type Implement supporting the array of array of image type in uniform. Add a new end2end test for it. Bug: angleproject:3881 Change-Id: Idd757ae1d0ed34d585ae1ca5e0b6577459a0acb7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2379335 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 39185acc 2020-09-12T13:47:16 Test Runner: Re-use displays when using "bot mode". This will allow us to speed up test execution by using multiple processes on non-Windows platforms. Because of the process isolation of "bot mode" we don't run into display re-use bugs like we do when running in a single process. Bug: angleproject:3162 Change-Id: I25370d4a07236e34f87e1c1efef8684f9891ecf8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407835 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao c03c4490 2020-08-28T11:03:20 Vulkan: Defer glFlush issued in middle of renderpass to endRenderpass Manhattan is calling glFlush in middle of a renderpass. This CL defers the flush that issued in the middle of renderpass to the end of renderpass. Bug: b/166475273 Change-Id: I6baa3898d5efc456e2205c44e13c64f3d79d1464 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2381942 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 7fc325cc 2020-09-12T13:48:38 Test Runner: Print total test execution time. Also has a few other tweaks to test spin-up. Bug: angleproject:3162 Change-Id: I8753f1afedbcc5c4b5ae257965ce68dc4a02ae06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407836 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao e4e2a016 2020-09-01T11:23:09 Vulkan: Use color mask to handle draw buffer disabled case When draw buffers set to GL_NONE, instead of remove the attachment from renderpass which breaks renderpass, we force vulkan's per buffer color mask to false while keep the disabled draw buffer attached. This CL also always create FrameBuffer with all color attachments regardless it is enabled or not. Bug: b/167301719 Change-Id: Ice9fca9aacf774a47d13b749f822b222cc050174 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2389007 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill ba7f8913 2020-09-12T23:23:01 Samples: Enable Debug callback. This moves the debug callback code into a common location. For ease of access it's in shader_utils since that file has access to the GL API. Bug: angleproject:5040 Change-Id: Iab9de47c2d520a5618ea6825852f8afa63565c8a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2408715 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amy Liu b3c7d39a 2020-09-03T15:51:02 Align the sample position in blitResolveStencil compute shader The input coordinates of blitResolveStencil compute shader start from 0,we need to align the sample position to start from 0 if x/y is flipped. Test: dEQP-GLES3.functional.fbo.invalidate.*.unbind_blit_msaa_* Bug: b/159995959 Change-Id: If0c9f5b7cacddbe1a2d7062469a757a63bcc1378 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2392162 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Mohan Maiya ed518d15 2020-09-11T12:47:52 EGL: Refcount external AHB when backing an image When an image is backed by an external source like an AHB we need to refcount the buffer appropriately to prevent deletion of the buffer while in use. Bug: angleproject:5018 Tests: angle_end2end_tests --gtest_filter=ImageTest.SourceAHBTarget2DEarlyDelete* Change-Id: Ib6318fc3dc442460d1a2bdd6d75a4458895667bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2406615 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 2879eb55 2020-09-12T09:04:16 TestRunner: Fix missing "=" on swarming args. These were missing from debe4683095450940883164ca6. Also fixes a misnamed "perf" parameter. Bug: angleproject:3162 Change-Id: Iad4c4d8d35cc8a08d0e30d50dd9bbf159a4a7ab9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407833 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 6830eb60 2020-09-11T12:37:31 EGL: Fix a bug in ImageTest During cleanup, we were incorrectly calling glDeleteRenderbuffers on a texture object. Also update comments to correctly reflect intent. Bug: angleproject:5018 Change-Id: I28eaf6a23056f3b09eebb7331620e6a27cb14302 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2406614 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Jamie Madill bca88739 2020-08-16T11:32:40 Add a perf test that cycles through many VBOs. Stresses the RenderPass buffer tracking in the Vulkan back-end. Bug: angleproject:4950 Change-Id: I33d38d8703d0e333d0092195d34228d90f1af52a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2358522 Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter ae09e889 2020-09-10T17:00:13 Fix mismatch issue with precision qualifiers. GLSL allows varyings passed from one stage to another to not match in precision (e.g. float & half-float). Vulkan doesn't allow that so adjust those mismatches to use the higher precision. To fix we keep track of the precision of varyings and in the Vulkan backend if we see they are different patch up the SPIR-V to make them match. Bug: angleproject:3078 Change-Id: I385d31e082da46ccdd4817b6612f5f9d9cbce17c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2337755 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Hidehiko Abe 90a9cf96 2020-09-11T02:40:34 Expand is_linux to is_linux || is_chromeos. Currently is_linux is set to true on Chrome OS build, but it is planned to set to false. This CL is the preparation to keep the current behavior. Bug: chromium:1110266 Test: Built locally. Tryjob. Change-Id: I4124dfb251d68a519fed3e08555d1aa5a694c77c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2404500 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shrek Shao a3bf9092 2020-09-09T12:16:54 Suppress AtomicCounterBufferRangeRead failure on Nexus6P TBR=syoussefi@chromium.org Bug: angleproject:3726 Change-Id: I8e4eb420ef43ee50b7e4df563148ed296f260adb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2401545 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Shrek Shao <shrekshao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 41c93c55 2020-09-01T11:34:32 Vulkan: Bug fix in atomic counter buffer count calculation When binding a new atomic counter buffer to a slot it is necessary to take into account the previous binding of that slot. This rectifies a bug introduced in f7b607c63c Bug: angleproject:3566 Test: angle_unittests.exe --gtest_filter=AtomicCounterBufferTest31.AtomicCounterBuffer* Change-Id: If78954d27c3345e8620294a84e839058d7dd7b9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2388431 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f184cb61 2020-09-06T22:29:29 Add perf test for multisampled render to texture Bug: angleproject:4881 Change-Id: I4733e2868a3e056ec61463fec88d17aaa564234f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2394955 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen 50704dc3 2020-08-04T12:08:00 Metal: Implement EXT_occlusion_query_boolean. - Metal's occlusion(called visibility) query operates per render pass. Implementation details are in src/libANGLE/renderer/metal/doc/OcclusionQueries.md. - New tests: - OcclusionQueriesTest.ClearNotCounted. - OcclusionQueriesTest.MultiQueries (failure on OpenGL/D3D11 back-end). Bug: angleproject:2634 Change-Id: Idd1327b5472d0e8c2b69307a7f04a1da4a847a40 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336121 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Ian Elliott 4a41204d 2020-09-02T05:04:33 Vulkan: Improve invalidate for depth/stencil Improve state tracking when the depth and/or stencil attachments are invalidated. Since no draw-time tracking is done, we use the number of command-buffer commands to determine when an attachment is drawn to. That allows all cases to be handled for store ops. Still need to handle mContentDefined at endRP time (we have the data, just not the plumbing). Test: angle_white_box_tests --gtest_filter=VulkanPerformanceCounterTest.*Invalidate*/* Test: angle_deqp_gles3_tests --gtest_filter=dEQP.GLES3/functional_fbo_invalidate_* --use-angle=vulkan Bug: b/167276207 Change-Id: Iae10857dbb4d43b934c51ad7e400b71ae0db4f55 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2378670 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi cba9bbbe 2020-09-02T09:55:31 Vulkan: Fix resolve-with-subpass retaining resolve attachment The temporary resolve attachment used to optimize blit was not removed from the framebuffer and render pass descriptions, resulting in subsequent draws to be resolved again. Bug: b/159903491 Change-Id: I9a9c90d25cb07ba9a25999f808b164f9085387d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2390441 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi b2944fcf 2020-09-02T11:10:00 Vulkan: Don't break the RP on masked/scissored clears Bug: b/166809097 Change-Id: Iedd10a6528808e859c5693a2d30c98aca1a1159c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2390862 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi d701eae2 2020-09-02T12:23:21 Vulkan: Fix resolve with different formats vkCmdResolveImage and subpass resolve attachments cannot be used if the source and destination formats aren't identical per Vulkan spec: vkCmdResolveImage: > srcImage and dstImage must have been created with the same image > format VkSubpassDescription: > each resolve attachment that is not VK_ATTACHMENT_UNUSED must have the > same VkFormat as its corresponding color attachment Bug: chromium:1123524 Change-Id: Iaf7182dbcad0420483ac2c23d0acf8c109688565 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2390781 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Nicolas Capens <capn@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 543a3962 2020-09-02T09:40:10 Vulkan: Fix resolve-with-subpass with non-zero read attachment The draw framebuffer's color index was used to get the read buffer of the source framebuffer. Bug: b/159903491 Change-Id: I7a1626e6732367c14d46f1e1be4057998fdbf011 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2390440 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi fdb7874d 2020-08-26T22:04:19 Gracefully fail end2end tests if no window support EGL_WINDOW_BIT is now specifically requested for tests that open a window (those that aren't WithNoFixture). This makes sure pbuffer-only configs are not selected for the window. Additionally, a few WithNoFixture tests are made more robust in the presence of no-window configs. In the context of crbug.com/1034840, this means that a subset of end2end tests would be able to run in a remote desktop environment. Tested on Linux/X11 by turning a subset of configs PBUFFER-only. Bug: chromium:1034840 Change-Id: I09fd149d43d3b865856fe6b9491c5f333f4a2efc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2378922 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 6eeb3d8b 2020-08-07T16:09:53 Support DXT textures with non-block sized mip levels. The block size requirement for each mip level meant that all DXT textures had to be POT sized. Relax these restrictions for non-zero mip levels to allow NPOT DXT textures. Increase the size of the D3D11 staging textures to the nearest block size to make sure allocation succeeds. Bug: angleproject:4841 Change-Id: I42fa295a0965241d77f81e57b17454091fda9376 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380237 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 7e815c77 2020-07-08T13:43:40 Implement EXT_shadow_samplers Bug: angleproject:4863,b/161716126 Change-Id: I6beb45d91f59a851787c9f40b40266fb985198d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2288330 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org>
Charlie Lao c0dda021 2020-08-26T11:20:06 Vulkan: release the ImageHelper's staging buffer after flush For mutable textures, right now glTexImage call and some of other cases, we are still using the ImageHelper's staging buffer. This will release the staging buffer after flush to reduce memory footprint. Bug: b/164511310 Change-Id: Ie1e52865a1c3a8f235c88331c4bb83c50d3f04da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2378179 Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Corentin Wallez a1d5ebbf 2020-08-31T17:29:49 Suppress flaky failure on Win Intel OpenGL TBR=syoussefi@chromium.org Bug: angleproject:5003 Change-Id: I4bc2c963d69ba529d62e01c21080540e54b46796 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2385497 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Shahbaz Youssefi 2f291c0b 2020-07-31T10:50:31 Vulkan: Re-enable fixed dEQP tests The script that loads the entry point loaded glRenderbufferStorageMultisampleEXT from GL_EXT_multisampled_render_to_texture wrong. This is fixed in https://github.com/KhronosGroup/VK-GL-CTS/pull/221. Bug: angleproject:4836 Change-Id: I843b359b12a042f08a63ba6723cf31bdb8509661 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2331740 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a0d048a4 2020-08-27T12:03:02 Vulkan: Fool-proof usage of GL and VK level indices Using boxed types, this change allows the compiler to catch errors when a level index in one space (e.g. GL) is mistakenly used in another space (e.g. VK). This change uncovered a number of bugs due to such mistakes which are fixed. Mistakes are still possible when the index is explicitly extracted, for example to be given to a Vulkan command, or when it's created, for example when retrieved from gl::ImageIndex::getLevelIndex. Future work can include using gl::LevelIndex in gl::ImageIndex directly to alleviate the latter at least. Bug: angleproject:4880 Change-Id: I6427c68c3bc096f771402f51c8554d8171758aa9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380232 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill f71283c9 2020-08-25T23:35:06 Fix EGLContextCompatibilityTest. The check for "IsPlatformAvailable" was inverted. We were incorrectly trying only to create a context on invalid configs. Bug: angleproject:4449 Change-Id: I03fbdc7794a338a55b9dc64521915a8be247bf35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2376045 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 1c654d54 2020-08-26T00:16:52 Metal: Fix handling of vertex attrib offset not multiple of 4 Metal requires the vertex attribute offset to be multiples of 4, and its stride must not be less than attribute's size. This should fix the WebGL's test: conformance/attribs/gl-vertexattribpointer-offsets.html Bug: angleproject:4846 Bug: angleproject:2634 Change-Id: I0784a8ccaedd5e6c58a266243bfa94ba36e53e11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2374829 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 91004654 2020-08-25T01:08:00 Metal: Implement ANGLE_robust_resource_initialization. Bug: angleproject:4929 Bug: angleproject:2634 Change-Id: Ib99b810059420e69d939f1bbb644c2b95de62850 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2374826 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 167a0f22 2020-08-25T17:11:54 Vulkan: Fixes to transform feedback emulation path Two bugs were affecting the following scenario: - Create program with xfb and no default uniforms - Draw without xfb - Begin xfb - Draw with xfb - End xfb - map and validate The first bug was that the descriptor set that contains the xfb buffers and default uniforms was never allocated for the first draw call resulting in VVL errors and crashes. The second bug was that "Begin xfb" was not setting the xfb buffers dirty bit, which meant that after the first draw call bound dummy buffers to the descriptor set, they would not get updated. This was simultaneously fixed in 5d3a4ca4e, but the added test nevertheless tests this. Bug: angleproject:4660 Change-Id: I16eee315e39ec5a657481e54ecd0491581e886aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2376172 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Courtney Goeltzenleuchter d3eba1db 2020-08-27T09:15:48 Fix ASAN error with test Test was not creating large enough vertex attributes for the DrawQuad call and thus hitting ASAN error when trying to copy the 6 vertices worth of data from an array of 3. Bug: b/166617516 Change-Id: Ia05909ada12cafa48e70c6b4ecdbbf729bbb71be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380234 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com>
Jonah Ryan-Davis bb33c7cb 2020-08-27T16:22:20 Fix badly formatted dEQP test expectation Bug: angleproject:4996 Change-Id: Ib96c8fe05e715df32390378443e1394b8df74833 TBR=jmadill@chromium.org Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380247 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Ian Elliott 44df3fa9 2020-08-27T14:26:49 Vulkan: Fix whitebox test to end render pass Since the RAII-based GLRenderbuffer goes away at the end of the test function, we should end the render pass before ending the test. Bug: chromium:1122621 Change-Id: I5aaf2a0b4fd63a38fc5018830ee4e9d7d93f0c81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380248 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jonah Ryan-Davis 1e068e1d 2020-08-27T15:03:10 Suppress functional_shaders_indexing_tmp_array_*_const_* on Metal These tests were recently added, and fail on the Metal backend. Bug: angleproject:4996 Change-Id: Iadffa25ab5b6c1372874c82f8356f7f19c76d1e0 TBR=jmadill@chromium.org Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380244 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Geoff Lang 710e408e 2020-08-25T18:00:39 Add support for P010 IOSurfaces Add test coverage of multi-plane IOSurfaces. Bug: chromium:1115621 Change-Id: Ib2150c4221a3e49f01ab016cebba4830194ab2b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2376174 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis b89e9611 2020-08-19T11:19:35 Fix SwANGLE suppressions of EGLIOSurfaceClientBufferTest Suppressions were missing for several texture formats. This slipped through because angle_end2end_tests are not run on SwANGLE on Mac. Bug: angleproject:4369 Change-Id: I0cbafe5daab591da15f86f2658c4edc724ae2561 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2364190 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill c5b9c49c 2020-08-25T18:01:29 Vulkan: Fix optimizeRenderPassForPresent regression. gfxbench clears the depth buffer right before the swap. Even though the last draw call that presents the frame didn't ever read or write to depth, the tracking we added thought this depth write meant we had to keep the LOAD_OP as CLEAR. Instead we can refine our check to treat clears specially when enabling the depth-stencil read-only mode instead of changing how the tracking works for clears. This way the tracking can not affect other apps that don't use depth-stencil read-only loops. Also adds a regression test that counts the clears after a swap. Bug: angleproject:4959 Bug: angleproject:4979 Change-Id: I12ece6474019f7519a467f827110ad817f7d4df7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2370364 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Le Hoang Quyen a4f706b2 2020-08-04T12:08:00 Metal: Use compute to generate 3D texture's mipmap. - Metal's built-in blit based mipmap generator doesn't use box filtering. Hence manual generation using compute is needed. - Compute based mipmap gen can generate up to 4 mips per pass if the base level is power of 2. - This approach can be extended to 2D/cube texture's mipmap generation in future. Bug: angleproject:4921 Bug: angleproject:2634 Change-Id: I7f997669fe39afef075b2bca2406e9424cbb3016 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336120 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Jamie Madill 5d3a4ca4 2020-08-21T13:09:56 Vulkan: Fix dirty state in XFB emulation on EndXFB. This regressed in "Vulkan: Preserve RPs on XFB changes when possible." The bug manifested as incorrect fire rendering in Manhattan. The fix is to ensure we dirty the correct buffer state when we call endXFB. Also adds a regression test. Bug: b/161744596 Bug: angleproject:4622 Change-Id: If16cc22b149526950f300e74c0cc82c0fefae5bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2368016 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 18cd3cea 2020-08-25T12:51:19 Revert "Work around dEQP KHR-GLES31 bug with tess/geom support." Fix is now upstreamed, we can remove the workaround. This reverts commit 2ba626dc121339a995a1ffd16a32299bf023cb21. Original CL message: > dEQP was inadvertendly requiring the presence of these extensions to > even run the tests. There's a WIP fix to the dEQP tests and this CL > implements that fix as a temporary workaround until we can update dEQP. > Fixes several tests in KHR-GLES31.core.constant_expressions and > KHR-GLES31.core.shader_macros. They now correctly return unsupported. Bug: angleproject:4143 Change-Id: I4001b30ab609ac4c9be2ce06c2d3c0dca75b64e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2375965 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Tim Van Patten 85ddcc93 2020-08-24T14:22:22 Vulkan: Convert ProgramExecutableVk::mDescriptorSets to std::array Currently ProgramExecutableVk::mDescriptorSets is a vector, but it's size is bound so it can be a std::array (DescriptorSetLayoutArray). To ensure the size grows correctly in the future, the various descriptor set indexes are also being converted from independent constexpr uint32_ts into the enum DescriptorSetIndex. Bug: angleproject:4898 Test: CQ Change-Id: I7ae8ff3455bcfb61e24b73bd16cc3f8cf9873087 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2372664 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill d787149a 2020-08-20T17:33:49 Allow rendering to unused levels of bound Textures. This CL refines the feedback loop check to allow rendering to non- sampled levels of currently bound textures. This is a technique sometimes used to initialize a mip chain of a texture. Also adds a regression test that fails on Vulkan. Bug: angleproject:4500 Bug: angleproject:4690 Change-Id: I5fd370e36a2919c82170abcbd2b0897c075bdcc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2367314 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 33f8e4d4 2020-08-25T12:06:35 Fix sub-invalidate of incomplete framebuffers Just like invalidate, this should attempt to sync the framebuffer after nooping incomplete framebuffers. Bug: chromium:1119669 Change-Id: Ie4bc6211bbeb1765674f7e0aef884faf7ceb8cc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2375565 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 09924221 2020-08-24T17:17:17 Convert the EGL end2end tests to use RAII types/macros These tests are frequently cloned to make new tests, and so it's good to do a more-global refactor so that these and future tests will use RAII. Bug: angleproject:4947 Change-Id: I2973e70ee075629965b18c685793975537e96b6c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2372627 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Maksim Sisov 6b175c5c 2020-08-19T15:11:16 X11 and Ozone: fallback to X11 backend for tests. USE_X11 && USE_OZONE build is a new config for Chromium/Linux that is going to be enabled soon. However, it breaks angle tests for Linux bots that run these tests. Atm, we don't support Wayland in angle anyway, and always falling back to X11 is the right thing to do. However, it's a bit strange to return false in IsOzone for USE_X11 && USE_OZONE case, but it's something we can do now to unblock switching Chromium to use_x11 && use_ozone config for Linux and resolve the problem later. Bug: angleproject:4977 Bug: chromium:1085700 Change-Id: Id223110cc504d8a4faa38608a96338a297a8cfc3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2367856 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 4f7edbe1 2020-06-03T14:51:50 State: Add dirty object for active textures. Checking sampler completeness after every sampler related state change is inefficient. Defer sampler completeness check to draw time. Based on a CL by hckim.kim@samsung.com. Bug: angleproject:4765 Tests: angle_perftests.exe --gtest_filter=TexturesBenchmark.* Change-Id: I7e971371e40b3044ca3d5ca39bfe7fc600620c3e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2268577 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Le Hoang Quyen acda9dde 2020-08-08T18:36:57 Metal: Implement GL_OES_texture_3D Bug: angleproject:2634 Change-Id: I8c46493ac28fe1bbfdb29ee3a60b23076bbc4c0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336119 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Le Hoang Quyen 4f247baf 2020-08-23T22:58:56 Metal: Implement EXT_draw_buffers & ANGLE_framebuffer_blit Bug: angleproject:2634 Change-Id: I769ca7e113e660870e9b31dafb706c313db8ac24 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332146 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Ian Elliott 296d3bfd 2020-08-21T10:38:32 Vulkan: do not end render pass when invalidating Initially, FramebufferVk::invalidateImpl() was very conservative and always ended a render pass (if the framebuffer is part of the current render pass). This adversely affects PUBG Mobile, which invalidates the depth buffer every frame, causing the render pass to be split. Test: PUBG MOBILE on Android Test: angle_white_box_tests --gtest_filter=VulkanPerformanceCounterTest.InvalidatingAndUsingDepthDoesNotBreakRenderPass/* Test: angle_deqp_gles3_tests --gtest_filter=dEQP.GLES3/functional_fbo_invalidate_* --use-angle=vulkan Bug: b/163854287 Change-Id: I343dee1db3ebaf039ff92557f9ef25b24bcdcc93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2352627 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 682f9141 2020-08-18T10:57:40 Remove feedback loop support from back-end. Front-end detection still in place and will be removed in a follow-up. Removes the Vulkan feature and the special clear handling. Bug: angleproject:4959 Change-Id: I5d44c3f7dbdb49d8aa0375f54b7148df09732ba2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2363208 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d3e800e9 2020-08-15T17:26:04 Vulkan: Restart RenderPasses in DS read-only mode. We can combine an initial RenderPass with a read-only RP if the first RP never writes to depth. We can check the depth-write tracking in CommandBufferHelper and substitute in a new Framebuffer/RP Desc in this case as well as issue new layout barriers. We need to disable barrier merging in this special case. This reduces the RenderPass count in the Manhattan trace from 15->13. The performance on the Pixel 4 benchmark goes to ~82% of native for the on-screen version and ~88% for off-screen. There's also a ~5% bump in speed for the desktop trace. Bug: angleproject:4959 Change-Id: I70241824f75eaa1e11b50370f826abc36e91686e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2358772 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill e689d316 2020-08-14T22:51:03 Vulkan: Don't end RenderPass on DS feedback loops. Instead of always switching the Framebuffer to mask out depth/stencil loops we now switch the RenderPass to a "read-only" depth/stencil mode. Reduces the RenderPass count in Manhattan from 18->15. There are still a couple extra RenderPasses inserted that we can get rid. We can merge a few RenderPasses by retroactively changing a started RenderPass to "read-only" when there are no prior recorded depth writes or clears. Also adds a test to count the number of RenderPasses ANGLE generates in DS feedback loop situaions. Bug: angleproject:4959 Change-Id: I1855a45959655fc27ccd47a3469c1c672fc8fd9e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2357973 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Tim Van Patten dff47d5f 2020-07-14T19:10:12 Vulkan: Optimize MSAA using subpass resolve attachments If a user is performing a blit to resolve a multisample color buffer into a single attachment, ANGLE can use subpass resolve attachments to resolve directly into the destination buffer as part of the render pass. This allows the data to remain in tiler memory and reduce the extra bandwidth required to write the multisampled data back to perform the copy. This work also requires restoring/reopening a render pass if it has been finished already, assuming the finished render pass was started and for the framebuffer that is the source for the blit command. Other objects that were created when the render pass was started need to be updated as well, such as the source FramebufferVk's resolve attachment, the CommandBufferHelper's vk::Framebuffer and vk::RenderPassDesc, etc. While this is better than performing vkCmdResolveImage(), there is still another major part of optimizing MSAA using resolve attachments not implemented here: discarding the multisampled image rather than writing it to GMEM, which requires the user to invalidate the read FBO after the blit. This CL was verified with AGI to make sure there are no explicit blits to resolve the multiple sampled image. Bug: b/159903491 Test: FramebufferTest_ES31.*Blit* Test: VulkanPerformanceCounterTest_ES31.MultisampleResolveWithBlit Change-Id: I320a26088d8f614a295e7feec275d71310391806 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2298663 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 185d9d08 2020-08-14T22:48:15 Re-land "Feedback Loop Redesign 2/3: Track bound FBOs in Texture." Re-land fixes the crash when drawing with no bound Program executable. Currently we track feedback loops by counting the times a Texture is bound as a sampler or image in a particular context. This is a bit tricky because Texture bindings change frequently. Relative to the number of times we need to check for a feedback loop this causes excess overhead. Usually Framebuffers have a low number of Textures bound (in many cases just 1). And Textures aren't usually bound to many different FBOs. So instead of counting the number of times a Texture is bound as a sampler or image we will track the Framebuffers that the Texture is bound to. This CL adds a small vector class to gl::Texture which tracks all the Framebufer Serials of its bound Framebuffers. We can use this set to quickly check if there's any potential feedback loop between the a FBO and this Texture. We also update the feedback loop check to use this new method. We will be able to remove the old counting method when we switch the Vulkan feedback loop handling to use the new tracking in this CL. Bug: angleproject:4500 Bug: angleproject:4959 Change-Id: If2bd25b08298a99f5e64b4055137f9154b0f0860 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2365595 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 7d38b0ba 2020-08-19T17:33:31 Fix manual, disable automatic rolling of googletest and jsoncpp roll_chromium_deps.py didn't handle properly rolling recursedeps for these 2 repos, only rolling the top level repo but not internal. Temporarily disable rolling these 2 repos in roll_chromium_deps.py and roll them properly to the latest revision used by Chrome. Change log: https://chromium.googlesource.com/chromium/src/third_party/googletest/+log/e3c3f879eee34ec81b1e562d8fecd207716d8945..c20c5a3085ab4d90fdb403e3ac98e7991317dd27 https://chromium.googlesource.com/external/github.com/google/googletest.git/+log/f2fb48c3b3d79a75a88a99fba6576b25d42ec528..4fe018038f87675c083d0cfb6a6b57c274fb1753 https://chromium.googlesource.com/chromium/src/third_party/jsoncpp/+log/ec647b85b61f525a1a74e4da7477b0c5371c50f4..30a6ac108e24dabac7c2e0df4d33d55032af4ee7 No change to https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git/+/645250b6690785be60ab6780ce4b58698d884d11 Bug: angleproject:4973 Change-Id: Ie164c5b1adb8684b875f1be4924b295033e2fb4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2365023 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 831056bf 2020-08-19T12:04:59 Fix typo in test harness README Larget->larger Bug: angleproject:3162 Change-Id: I7ee84b714af179f97db1aa61b58ed946b28373bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2364191 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Amy Liu add9b677 2020-08-17T15:50:20 Delete extra initialization in spirv shader. Only webgl requires initialization of local variables,others don't. Extra initialization in spirv shader may affect performance. Bug: angleproject:4952 Change-Id: I004761779067748d43c1ea2630794491f1389492 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2359608 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen a13f1061 2020-08-14T23:37:21 Metal: Fix missing image view for texture from IOSurface. Image view is used by glTexSubImage*, glCopySubImage* and glCopySubTexture*. This fixed some failed WebGL tests that make use of IOSurface. Bug: angleproject:4846 Bug: angleproject:2634 Change-Id: Iebcf840fdc1be2794feab766957b5848a361a63c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2356107 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop c4a82aaa 2020-08-17T11:16:22 Tests: Add COD:Mobile trace Test: angle_perftests --gtest_filter=TracePerfTest.Run/*cod_mobile* Bug: b/164426913 Bug: angleproject:4048 Change-Id: I306714632b635c728fa212ed793f076c6b889227 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2360047 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Yuly Novikov 863115fb 2020-08-17T19:41:54 Re-enable a dEQP-EGL test on SwANGLE Hopefully no longer flaky. dEQP.EGL/functional_sharing_gles2_multithread_random_egl_server_sync_shaders_compile_9 Bug: angleproject:4495 Change-Id: I121ad4ece0be3e0ab7b0390a1a2c54cfd2bed537 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2360904 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao d63bca58 2020-08-06T17:37:18 Vulkan: Add test for RGB texture not break renderpass This adds a test that will use an empty RGB texture. It should not break renderpass. Bug: b/162603208 Change-Id: I90f5aa2fafdbd70c654c9ad0675d6def32b58313 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2338828 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 9ae6d7f2 2020-08-14T11:00:29 D3D: disable to translate uniform block to StructuredBuffer Temporarily disables the feature that translate uniform block to StructuredBuffer on D3D backend for a bug. Adapted from a patch by xinghua.cao@intel.com Bug: chromium:1112112 Change-Id: I3419a0eb8ae619e1fa532ffb29f56a9099f04618 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2357752 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e89eb912 2020-08-12T11:21:07 Reduce spam in native perf tests. The QC driver was repeating HIGH priority messages about map flags. Bug: angleproject:4943 Change-Id: I927c38249f840544a7c1f5e595fa34e706e401bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2352472 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Maksim Sisov 0a3233fa 2020-07-29T10:35:04 X11 and Ozone: fix compilation of tests. For use_x11 && use_ozone build, use X11 backend by default. For ozone only, continue using Ozone impl, which is basically gbm. Bug: chromium:1085700 Change-Id: Iac104e983135e566b0d42a58e00d3c83b430d6dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2346276 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 6b2d6f82 2020-08-13T23:43:35 Reenable AttributeLayout end2end tests on Linux SwANGLE Hopefully no longer flaky. Bug: angleproject:4502 Change-Id: I958a7febce4057706c0d822b9fffc4d9a2b18f83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2354295 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill d201ed8b 2020-08-02T16:29:35 Vulkan: Track used Images in RenderPass. Adding a simple ImageSerial tracking map in our RenderPass allows us to know when we do or do not need to close the RenderPass on a new Image access. This simple tracking scheme improves Manhattan performance by up to 25% on Android. The improved perf comes from reducing our RenderPass count (23->18 RenderPasses in our capture scene). Adds a FastUnorderedSet class to manage the used RP Image serials. Updates the Query helpers to explicitly flush the RP before inserting queries. Bug: angleproject:4911 Change-Id: I0c34fc8e307514ebdf3e81e08d8e5aedb70ebe8f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2334346 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 5559351c 2020-08-11T14:23:32 Vulkan: Correctly determine mip level in resolveColorWithCommand() FramebufferVk::resolveColorWithCommand() is currently using the wrong mip level value by using the GL index value, rather than calculating the VK value from (index value - the base level). Bug: angleproject:4753 Test: FramebufferTest_ES31::MultisampleResolveIntoMipMapWithBlit() Change-Id: I8ddaeb21c4957b46880f5ef5f6a78242c04b4dcd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2349951 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Manh Nguyen c65517d6 2020-08-12T17:43:53 Add tests' expectations to capture replay tests Skips failing tests so that they do not affect the results of passing tests. Bug: angleproject:4817 Change-Id: I80678cb62b0b81d6a1aa811908019022efbe1268 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2351394 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Jamie Madill cc958e0e 2020-08-12T14:27:42 Remove D3D9 configs from perf tests. We are not maintaining D3D9 for performance and reducing the number of perf tests will speed up the bots. Bug: angleproject:4943 Change-Id: Ib4ddad2cbfefcf6fccf3307df3bac7565ef246f4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2352478 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop d667ad2f 2020-08-11T16:09:36 Tests: Add Mobile Legends trace Test: angle_perftests --gtest_filter=TracePerfTest.Run/*mobile* Bug: b/163619545 Bug: angleproject:4048 Change-Id: I8ed176afe10b758a22b539d526bf02a9fe35ab92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2350582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 48d951e2 2020-07-30T15:32:03 Perf Tests: Handle logError callback. This will force errors when ANGLE runs into Vulkan Validation Layer failures and other internal bugs. Currently we could sometimes fail silently. Especially on Android where the error would only show up in logcat. Bug: angleproject:4909 Change-Id: Ie2888805c577d9fbad417d45a33e3269966b7b25 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2330091 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Ian Elliott 6eb7756d 2020-08-07T17:41:39 Vulkan: tell ContextVk when swapchain is re-created For an app that only draws to the swapchain, if the swapchain is recreated with a different rotation (as done by the ANGLE perf tests when switching from Angry Birds 2 to Candy Crush), ContextVk is not informed, and so the new rotation is ignored. Use the subject-observer pattern to set the appropriate dirty bits. Test: run_angle_perftests --gtest_filter=TracePerfTest.Run/vulkan_angry*:*vulkan_candy* --verbose --local-output Bug: angleproject:4910 Bug: b/163126746 Change-Id: Ib5303e9c4095db1b3e736911f483589e40a73d0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341768 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Le Hoang Quyen f37f1dcb 2020-08-02T19:38:54 Metal: Init format table using Metal-Feature-Set-Tables.pdf - Format table is now initialized using informations from https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf. Previously, it was setup using gl::GenerateMinimumTextureCaps(). - This CL also adds InitializeTextureDataFunction and LoadFunctionMap to mtl::Format. They are needed to properly initialize/convert textures with non-normalized formats. - This CL is prerequisite for integer & floating point format supports. - New test: DXT1CompressedTextureTest.DXT1Alpha (this test was added in the past but was reverted for some reasons). Bug: angleproject:2634 Change-Id: I5eaad812909a49c4c138d0f65fd21a6a199fcb22 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332144 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 05b6740c 2020-08-09T12:23:42 TestRunner: Fix test result handling. The bots expect us to explicitly label "is_unexpected" for all unexpected results (e.g. failures). Also they construct a test filter from our test names so our result names have to match the tests exactly. That means removing prefixes like we have for the test suite name. Bug: angleproject:3162 Change-Id: I1a02ff8e26545b10a8829a3ee47be91f7459aa65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2345028 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov ba7398c8 2020-08-10T21:04:38 Skip WebGL2CompatibilityTest.CopyMip1ToMip0 on Mac Intel GL Flaky. Aleady skipped on Win Intel GL. Bug: angleproject:4805 Change-Id: I206d66079ca4beabfee12f6c9989d960ca461877 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2347463 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 48bfb8ef 2020-08-10T19:34:23 Suppress dEQP-GLES3 failures on D3D11 NVIDIA dEQP-GLES3.functional.shaders.texture_functions.texturesize.* started failing when driver was upgraded to 451.48 Bug: angleproject:4948 Change-Id: Idc547702cabc3a106829be85baf8400e4769e271 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2347454 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jonah Ryan-Davis f9de2e20 2020-08-04T11:53:05 Enable required extensions for Chromium to use the Metal backend. This includes: EGL_ANGLE_display_texture_share_group EGL_ANGLE_display_semaphore_share_group EGL_ANGLE_robust_resource_initialization GL_EXT_debug_marker Bug: angleproject:4847 Bug: angleproject:4930 Bug: angleproject:4929 Bug: chromium:1112800 Bug: angleproject:4946 Change-Id: Ibacb6badf9f784dae3ca42514142ef13ee7297b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332863 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen a0880831 2020-08-06T19:11:40 Metal: Implement CHROMIUM_copy_texture Bug: angleproject:4930 Bug: angleproject:2634 Change-Id: I9fd958aa1dd872855be06a14bdbba4c6624dc934 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2340396 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Manh Nguyen ce5943c5 2020-08-05T23:24:17 Change test result types + add additional logging New result types: Passed, Failed, TimedOut, Crashed, CompileFailed, Skipped. They divide the results of tests more clearly. Results are now immediately logged to the stdout once a test batch completes. Flags, with the exception of --gtest_filter now use "-" instead of "_". Bug: angleproject:4817 Change-Id: I9616b23ef70026818e22126a251e1e2341de641d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2340787 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 3ebac486 2020-08-07T15:35:15 Disabling failing dEQP-GLES2.functional.fbo.render.recreate_* tests The following tests started failing on Android (Pixel 2 and 4) running ToT master: dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4 dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8 dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16 dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16 dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8 dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8 We aren't sure how these failures got through CQ, so I'm suppressing them for now to unblock other CLs. Bug: angleproject:4944 Test: dEQP-GLES2.functional.fbo.render.recreate_* Change-Id: I2b35e07babf3257a3de8d27f6c161c0cb796d8ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2342267 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Manh Nguyen 8956bfb9 2020-08-05T13:34:01 Use striping when making test batches When grouping tests to test batches, instead of grouping neighboring tests together, use striping so that slow tests are fanned out into multiple batches. This way, no test batch is too slow. Bug: angleproject:4817 Change-Id: I7825539e401ea53b5a31167f206d1f5bfb07bdbf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2339540 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Cody Northrop 063d754b 2020-08-07T12:02:13 Tests: Update NBA2K20 trace Significantly reduce setup for this trace. First frame drops from ~430K lines to ~150K lines of code. Compile/link times should be bearable. TBR: ianelliott@google.com,jmadill@chromium.org Test: angle_perftests --gtest_filter="TracePerfTest.Run/*nba*" Bug: b/160014453 Change-Id: Ia33941012e02ec5488d039501f592dc48e9acfe4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2343454 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop fc8866cf 2020-08-07T10:31:35 Tests: Update Angry Birds 2 trace Primarily fix the width/height of the drawing surface, but also pull in changes from July 2020 update. TBR: courtneygo@google.com,jmadill@chromium.org Test: angle_perftests --gtest_filter="*Trace*" Bug: b/157672184 Change-Id: Ia6e16f6d695954f50b3d2a4e8aaaa88514b461d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2343453 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 91a03bd4 2020-08-03T23:24:31 Vulkan: Fix render-to-texture simultaneously bound to two FBOs If a texture is simultaneously attached to two FBOs, one where it's a normal texture and another where it's multisampled-render-to-texture, different render targets must be created for it. If a texture is simultaneously attached to two FBOs, both as multisampled-render-to-texture but with different sample counts, two implicit multisampled images need to be created as well as different render targets. Bug: angleproject:4913 Change-Id: I584ba327e4cb2099ef62f86f5d88719dc156ce13 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2335810 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter 3a3d419d 2020-08-04T09:06:01 Reference count context to fix ASAN issues Running with ASAN there are several use after free issues because a eglDestroyContext destroys the context right away even though it's in use in other thread(s). Adding reference count to context so that it's not destroyed until all users are done using it. Bug: b/162609728 Change-Id: I00b24b53d760e38ff61dd9ce652a49b1f32f0cd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336447 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>