src/libANGLE


Log

Author Commit Date CI Message
Charlie Lao 0b0744f3 2022-05-05T16:22:28 Vulkan: Fix VVL error for black desert mobile When a depth stencil attachment is sampled in fragment shader and followed by sample from vertex shader, we are not hitting the readOnly to readOnly but with different shader stage code path. This is because IsShaderReadOnlyLayout is not counting VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL as shader read only, even though we are picking this layout for depth texture texture sampling just to avoid renderpass break when transit depth texture from read only depth attachment to shader read. Bug: angleproject:7186 Change-Id: I98c782ce85125a2ade953440145d6cc71d2c1dc1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3629953 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill b54b1146 2022-05-04T10:45:15 Vulkan: Use ImageView layer count functions in TextureVk. Refactoring change only. Bug: angleproject:7269 Change-Id: Iccc271afdee30d1c8df982f713083fabc7848bb4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3625523 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e1de0950 2022-05-04T09:37:50 Vulkan: Always init image views using image format. The same format is already in the image helper. Refactoring change only, no functional change. Bug: angleproject:7269 Change-Id: Ifdd1d71045602ed41cf642ec0b3e1282fcbd6e49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3625522 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yiwei Zhang e316203a 2022-05-07T21:31:52 Vulkan: add forceContinuousRefreshOnSharedPresent feature Android EGL wrapper filters EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID, making it impossible for angle to provide an implementation for EGL_ANDROID_front_buffer_auto_refresh. Thus angle currently is only able to choose demand refresh for swapcahin present mode. This change adds a feature to force angle to create the swapchain with continuous refresh mode without affecting angle internal tracking for shared present. This feature will be enabled on integrations without the auto_refresh hint passthrough to angle, as well as before the platform allows angle to implement EGL_ANDROID_front_buffer_auto_refresh on its own. Bug: b/229267970 Test: angle_end2end_tests --gtest_filter="EGLSingleBufferTest*" Test: smooth draw with gpu accelerated low latency stylus in ChromeOS Change-Id: I29d72830d4e3d9fd5cdd44b8e1ce51fd7d9789fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3633358 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 38a53d65 2022-05-06T18:06:05 Revert "Remove limit_max_texture_size_to_4096 workaround" This reverts commit bcc03bd62200ffb0301fbcaa7e7984a06232c83d. Reason for revert: ANGLE autoroller fails on some Pixel 4 web conformance tests. Original change's description: > Remove limit_max_texture_size_to_4096 workaround > > Chromium will apply workaround to gpu command buffer clients only. So > removing it from angle which is no longer needed. > > See crbug.com/1319451 and in particular crrev.com/c/3626252 > > Bug: chromium:1319451 > Change-Id: I723e525600aa7b93e784c98348e060a503c09657 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3618501 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Lingfeng Yang <lfy@google.com> > Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1319451 Change-Id: I0db424e97ebb0f9141076b409667aa49faeb2ec4 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3630919 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Jamie Madill e0d00563 2022-05-03T17:02:06 Vulkan: Simplify external format Chroma code. The prior code used a const_cast and some other twiddling when we really just needed to add a separate small setting function. Also encapsulates the YcbcrConversionDesc string into a class with private data. The end goal is to refactor image view init and caching. The const_cast and the SamplerState were getting in the way. Bug: angleproject:7269 Change-Id: Ie2fb4ba848c46adc63618f313f7a68a1df5cef8f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3625492 Reviewed-by: Trevor Black <vantablack@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi 1d5d09e4 2022-05-04T12:33:34 Vulkan: Prefer MAILBOX over IMMEDIATE present mode When swap interval is 0, either MAILBOX or IMMEDIATE present modes could be chosen. MAILBOX produces no tearing, so this change prefers that. Bug: angleproject:3163 Change-Id: I80b3c5820358b398ddf0eeba546d1ec10bae3d84 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3628018 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao d075dfe2 2022-05-03T16:25:26 Vulkan: Reduce kMaxBufferToImageCopySize to 64M Bug: b/230538246 Change-Id: Id2ef9c35f74fb6f526744903402562f9354bfcdb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3625834 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 333da2cf 2022-05-03T16:21:41 Vulkan: Limit the total bytes of suballocation garbages in flight This CL tracks the total number of bytes of suballocation garbage. It checks against the limit so that when there are excessive garbages in flight, we will wait for GPU to finish and free up some of these memory before continue. That way we will ensure we do not end up accumulating too much memory and end up with low memory kill on mobile devices. Bug: b/230538246 Change-Id: Ic8292db5617bcee4ec3abe8632f54edfd249cfaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3617226 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 51dc3c3e 2022-05-02T18:11:26 Vulkan: Force prune when there are lots of suballocations destroyed If there are a lot of suballocations destroyed, there is bigger chance that some buffers become empty and we might able to trim down excessive empty buffers. This CL tracks the suballocations destroyed at each cleanupGarbage call and use that information to force immediate pruneEmptyBuffers call. Bug: b/230538246 Change-Id: Icca2ea731639545c635c09d58a8606d67405e1a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3620981 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Bo Liu bcc03bd6 2022-05-01T14:47:11 Remove limit_max_texture_size_to_4096 workaround Chromium will apply workaround to gpu command buffer clients only. So removing it from angle which is no longer needed. See crbug.com/1319451 and in particular crrev.com/c/3626252 Bug: chromium:1319451 Change-Id: I723e525600aa7b93e784c98348e060a503c09657 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3618501 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 2fae9482 2022-05-02T11:05:36 Vulkan: Use heuristic to decide how many empty buffers to keep Instead of rely on static information (16 max empty buffers and not been used for a given period of time), this CL keeps track of how many new buffers are needed (either reused from empty buffer list or allocated new) since last prune. We use this heuristic information to decide how many empty buffers to keep around and trim the excessive empty buffers. Combined with the next few CLs, on pixel6 I am seeing 11.7M reduction with vsync_angry_birds_2_1500. The memory_max minus memory_median reduced from 49M to 38M. Bug: b/230538246 Change-Id: I51da745afe4bfdbff0ba165418531803bdce681b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3622264 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Peter Kasting 2ce60b52 2022-05-05T08:23:07 Fixes for C++20 support. * The compiler grew smart enough to warn about value changes due to casting to float inside floatToNormalized(). Make it smart enough to realize this isn't a problem by using constexpr if. * Types on both sides of a comparison operator should be the same. * Structs with user-declared constructors are no longer aggregates. Provide a constructor and call it. * std::result_of<F(x)> is gone, use std::invoke_result<F, x> instead. Bug: chromium:1284275 Change-Id: I6487bb18c65837a6d7d2661f65e097dc6a7605b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3630478 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Peter Kasting <pkasting@chromium.org>
Antonio Caggiano 9053a641 2022-01-17T11:32:41 Vulkan: Wayland dmabuf extensions Implement EGL extensions image dmabuf import and import modifiers in Vulkan Wayland Display. Bug: angleproject:7065 Change-Id: I91535db3581cbe51f0eddc429e2752641c568148 Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com> Signed-off-by: Constantine Shablya <constantine.shablya@collabora.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3525093 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 77cd0b5a 2022-04-14T13:32:07 Re-land: "Vulkan: Cache ImageView serials on texture changes." Re-land fixes BindTexImage serial caching. This significantly reduces overhead when changing textures before draw calls in the Vulkan back-end. Bug: angleproject:6776 Change-Id: I2cc03cb8a70e8c181f7658ab45df780e412bfc57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3623860 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya a7238b52 2022-04-28T12:04:51 Consolidate handle list before pushing to mReleasedList Walk mUnallocatedList and try consolidating the range before pushing the to-be-released handle onto mReleasedList. This avoids a buggy behavior with dEQP which can be reproduced by running the following tests in this order - dEQP.GLES3/functional_samplers_single_cubemap_diff_wrap_t dEQP.GLES3/functional_negative_api_buffer_framebuffer_texture_layer Test: HandleAllocatorTest.ConsolidateRangeDuringRelease Bug: angleproject:7248 Change-Id: I8d2701f193fc6a2f36151c09719284a7832ab2d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3617198 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Stephen White 9ab47074 2022-05-02T11:51:31 D3D11: fix BufferToTexture copy when UNPACK_ROW_LENGTH is set. The BufferToTexture fast path rasterizes a point per pixel when copying buffer to texture, and uses the vertexID to determine the buffer location. However, the math is wrong if UNPACK_ROW_LENGTH is set. The fix is to use UNPACK_ROW_LENGTH (if specified) rather than the width in the Draw() call. Bug: angleproject:5542 Change-Id: If0bbc0d7ae3ecbb2211cfb27263324d23c5ff0af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621319 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Antonio Caggiano 9ad43bdd 2021-12-09T16:52:35 Re-land: "Vulkan: Support Wayland" Implement DisplayVkWayland and WindowSurfaceVkWayland. Get window size from native window and check egl config is just empty. An EGL wayland test is added for testing rendering and buffers swapping. Re-land fixes: - link failure in systems with no libwayland installed. - XCB display availability check. Bug: angleproject:6902 Change-Id: I5daecf3591493308ac71a7dd3bc0802f492e6fed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621059 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 84e42c3b 2022-05-02T15:42:23 Fix validation cache when deleting a Transform Feedback. Bug: chromium:1320024 Change-Id: I76ef85a3c65c663c138d8caebd4ef2c0da53cd4f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621780 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 4bbc55f4 2022-05-03T08:19:55 Revert "Re-land: "Vulkan: Support Wayland"" This reverts commit e0dd196a0e0aace17dfaa204163d798f504ea94e. Reason for revert: blocks ANGLE roll into Chromium Original change's description: > Re-land: "Vulkan: Support Wayland" > > Implement DisplayVkWayland and WindowSurfaceVkWayland. Get window size > from native window and check egl config is just empty. An EGL wayland > test is added for testing rendering and buffers swapping. > > Re-land fixes link failure in systems with no libwayland installed. > > Bug: angleproject:6902 > Change-Id: I4f091d4f479a537d0390caedce88a5d39f8b356f > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3608088 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6902, angleproject:7260 Change-Id: I7e92bf811b191eee6679d577006cddc0e1286fad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621057 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 5113ae8e 2022-04-29T22:42:59 Vulkan: Explicitly enable per-sample shading if `sample` used The Vulkan spec is not explicit about the `Sample` decoration implicitly enabling per-sample shading. While this is being corrected in the spec, the ARM Vulkan driver does not have this implicit behavior. A workaround is added such that the usage of the `sample` qualifier is reported, and used to explicitly enable per-sample shading through the API. Bug: angleproject:6876 Change-Id: Idb8345aacdcfa45cb37fefcd30aa5405168d21e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615738 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brian Osman 9200ba53 2022-04-26T12:05:07 Reland "Make SPIRV optional for Metal backend" Updated default conditions to match old behavior. This is a reland of commit 29287e1fc7ad3dff0619736a89e64b3598af8659 Original change's description: > Make SPIRV optional for Metal backend > > This allows clients (ie Skia) to build ANGLE without needing > all of the additional Vulkan dependencies. Developer builds > will continue to include both the direct and SPIRV paths, for > debugging purposes. > > Bug: angleproject:7155 > Change-Id: I1c38ee19e747df8b25fd2f8e8efa3b420a4d7766 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3605764 > Commit-Queue: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Auto-Submit: Brian Osman <brianosman@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:7155 Change-Id: I439160f2e1f05a3dbe22df82336246a73a0a7d0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615012 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Charlie Lao 802504ad 2022-04-29T20:22:53 Vulkan: Add log for buffer pool stats For debugging purpose, this will calculate stats of buffer pool and output string to log. Set ANGLE_ENABLE_BUFFER_POOL_STATS_LOGGING to 1 will log stats into INFO() stream. Bug: b/230538246 Change-Id: I68f83af547e782ca7cb6cb222967ba02b8005083 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3617229 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 4d26c66d 2022-04-29T17:39:22 Vulkan: Call cleanupGarbage only if mLastCompletedQueueSerial changed RendererVk::cleanupGarbage() walks through all garbage objects and check its serial with mLastCompletedQueueSerial. If it is completed then garbage gets destroyed. Right now it gets called from CommandQueue::queueSubmit(). But queueSubmit only submit new work, it does not mean anything have completed. Garbage clean up does not depend on submission, but depends on anything have finished. This CL moves the cleanupGarbage call to CommandQueue::retireFinishedCommands() where we update mLastCompletedQueueSerial. Bug: b/230921364 Change-Id: Ib07c4cc75a1d2bd243377fa1215588d8ea4e3f36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3617227 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Brandon Schade 527557b9 2022-04-28T14:35:30 Fix ValidateFramebufferTextureLayer for cubemap arrays GL_INVALID_VALUE is generated if texture is a cube map array texture and layer is larger than MAX_ARRAY_TEXTURE_LAYERS-1. GL_INVALID_VALUE is generated if texture is a cube map array texture and level is larger than the log base 2 of MAX_CUBE_MAP_TEXTURE_SIZE. Fix validation to account for the spec. Bug: angleproject:3584 Tests: dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.framebuffer_texture_layer Change-Id: I51028145fa83ef5eb46c39030a28984411ca801e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615613 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Doug Horn e6662832 2022-04-28T17:30:41 Re-land fixing of commit ID for Android builds. Android infra does not store the .git directory alongside the checked out code, instead using a gitdir directive to point elsewhere. This caused the commit_id script to fail, which could cause issues with disk-backed program caches on updates when the serialization format changes. Tested: 1) Verified that cached binaries do not load when the ANGLE hash is "unknown hash". This fixes a bug where the serialization format could change but we are unaware of a change because the hash is technically the same. 2) Verified that Android infra correctly generates the git hash. Bug: b/206109660 Test: Run script on Android infra, verify hash is gathered properly. Change-Id: I114fc8edb9459592cab45c6726f9d946cf6d17d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615014 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Doug Horn <doughorn@google.com>
Amirali Abdolrashidi 3e05b93a 2022-04-12T19:39:19 Vulkan: MSAA swapchain resolve based on renderArea * Updated the MSAA resolve subpass so it can only be performed if the render pass is covering the entire area (e.g., not scissored). * Added test to make sure that the subpass resolve does not occur when the render pass does not cover the entire area. Bug: angleproject:6762 Bug: angleproject:7196 Change-Id: Iac3ab4b655dfeb7bff1348cc5e289a77a4dc0b83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584942 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Stephen White bc929e6e 2022-05-02T11:00:20 D3D11: recompile all shaders using 10.0.20348.0 toolchain. Bug: angleproject:5542 Change-Id: I604de49c62c0a1c3882946a7bdf9e7d1171e94ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621833 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev f7615d0a 2022-05-02T18:59:22 OpenGL: Add allow_astc_formats workaround Enable ASTC on Mesa only for supported hardware Bug: angleproject:7259 Change-Id: I872ebdead1206ee911c5e0f0f10b6985022dbe47 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621055 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 06fa7e39 2022-05-02T14:07:53 Expand Intel GPU detection - Updated references - Switched array types to 16-bit - Added missing entries to Kaby Lake - Added Gemini Lake and Coffee Lake - Added Gen11 and Gen12 Bug: angleproject:7259 Change-Id: I0e074333f98fad801f4fad289d7b5ae2876160e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621053 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano e0dd196a 2021-12-09T16:52:35 Re-land: "Vulkan: Support Wayland" Implement DisplayVkWayland and WindowSurfaceVkWayland. Get window size from native window and check egl config is just empty. An EGL wayland test is added for testing rendering and buffers swapping. Re-land fixes link failure in systems with no libwayland installed. Bug: angleproject:6902 Change-Id: I4f091d4f479a537d0390caedce88a5d39f8b356f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3608088 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny ea9a2dbe 2022-05-01T17:30:55 Capture/Replay: handle glGetVertexAttrib parameter value Bug: angleproject:7153 Change-Id: I56cbe833268a6d1f6d184c90b7fbe1a345e5f012 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3614518 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Antonio Caggiano 5b4f180c 2022-04-29T16:56:34 Fix formatting Unrelated changes created by running "git cl format" Bug: None Change-Id: I880c7d50aead70353f22502d953efa7aa60ff5d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3616882 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny e55990e3 2021-10-20T19:32:59 Capture/Replay: Handle arrays with uniform block indices When we update the uniform block indices we have to take into accountg that there may be arrays and that the indices of array elements can be retrived by querying with an index. Consider a layout layout(std140) uniform Data { vec4 plainData; vec4 arrayData[3]; } buffers; Then the loop for updating the uniform block indices will see [ "plainData", "arrayData", "arrayData", "arrayData" ] and we have to take care to add the array indices if they are greaten than zero, otherwise we would always query the index of the first array element. Bug: angleproject:6180 Change-Id: I21f96ab49c1c33bc4024711b72df961377afea4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3198881 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Shahbaz Youssefi c7a9f0c6 2022-04-27T16:20:51 Vulkan: Remove syncval suppressions no longer triggering Bug: angleproject:6422 Bug: angleproject:6424 Bug: angleproject:6566 Change-Id: If4d6cf097108f71732d093f3debfc30475a3c90c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3612183 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3eb2bcf7 2022-04-27T16:13:04 Vulkan: Fix syncval errors with DONT_CARE for unused attachments DONT_CARE is a write operation for synchronization purposes. ANGLE doesn't synchronize depth/stencil attachments that are not written to, as it uses the read-only layout. This change makes sure LOAD/STORE_OP_NONE are used instead of DONT_CARE for attachments that are not used, even if they don't have defined contents. This allows ANGLE to continue to not do additional synchronization. Bug: angleproject:5371 Bug: angleproject:5962 Bug: angleproject:6411 Bug: angleproject:6584 Change-Id: I539379aa34f6655f00e798e8c4a5c57f40f7a12d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3612182 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 394fb0d3 2022-04-26T17:17:58 Vulkan: Don't take lock for getLastCompletedQueueSerial getLastCompletedQueueSerial() is simply returning a uint64_t serial number. There is no need to take a mutex lock. This CL uses atomic for mLastCompletedQueueSerial and removed the lock as well as removed the virtual function call. This also avoid the annoyance with mutex lock, that if you call getLastCompletedQueueSerial in places that has other lock held, you may end up with deadlock. This CL avoids that trouble all together other than improves performance. Bug: b/230759914 Change-Id: I9dc688d410e4c6bca7fc70ae4f9fe0c3acc2e005 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3607500 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brian Osman 2c58e7a5 2022-04-27T09:50:01 Reduce console spam from Metal shader translation Skia is seeing this for every test, and it's polluting the logs. Realistically, a developer only needs this once per process. Bug: angleproject:7155 Change-Id: Ied4df3af4024ec542c6a9fd8c33d36f4e82b69cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3611062 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 437053a1 2022-04-28T09:05:43 Revert "Make SPIRV optional for Metal backend" This reverts commit 29287e1fc7ad3dff0619736a89e64b3598af8659. Reason for revert: Possible root cause of Mac failures http://crbug.com/1320588 Original change's description: > Make SPIRV optional for Metal backend > > This allows clients (ie Skia) to build ANGLE without needing > all of the additional Vulkan dependencies. Developer builds > will continue to include both the direct and SPIRV paths, for > debugging purposes. > > Bug: angleproject:7155 > Change-Id: I1c38ee19e747df8b25fd2f8e8efa3b420a4d7766 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3605764 > Commit-Queue: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Auto-Submit: Brian Osman <brianosman@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1320588 Change-Id: Id160118146dad1b8f1af40c60ddefd717516cd1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3614527 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Kenneth Russell <kbr@chromium.org> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill f9729598 2022-04-28T16:36:50 Revert "Fix commit ID gathering on Android builds." This reverts commit 1835e5d895f7f75435c2eddf3f87a88ef534c237. Reason for revert: Breaks Skia integration in linkImpl. Original change's description: > Fix commit ID gathering on Android builds. > > Android infra does not store the .git directory alongside the > checked out code, instead using a gitdir directive to point > elsewhere. This caused the commit_id script to fail, which > could cause issues with disk-backed program caches on updates > when the serialization format changes. > > This CL also makes it a build failure to fail to get the commit id, > and removes the ANGLE_DISABLE_PROGRAM_BINARY_LOAD fallback (which > was broken anyway due to not being used anywhere). > > Bug: b/206109660 > Test: Run script on Android infra, verify hash is gathered properly. > Change-Id: Ie28dc9278b6fbd3dd4f09232c0a88d602fca6980 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3604710 > Commit-Queue: Doug Horn <doughorn@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: b/206109660 Change-Id: I64ac0831a46b9e1ff2e2738624650d67d0609f3c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615009 Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Doug Horn <doughorn@google.com>
Charlie Lao 2a6e123b 2022-04-27T15:27:46 Vulkan: Move pruneOrphanedBufferBlocks to last RendererVk::cleanupGarbage() should call pruneOrphanedBufferBlocks() after clean up mSuballocationGarbage, so that we will be able to find the orphaned buffer block being empty if mSuballocationGarbage actually made it empty. Bug: chromium:1318110 Change-Id: I0cc6e45c192f406e7bbb15c7427d30e06208dd06 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3611648 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 266111a5 2022-04-22T21:52:19 Vulkan: Fix SemaphoreCount best practice warning Bug: angleproject:7231 Change-Id: Ifd02084887aca44aade96474a45f3060b276226e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3603701 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 1ef90012 2022-04-26T16:25:58 Vulkan: Remove API access for mTotalBufferToImageCopySizen Don't expose mTotalBufferToImageCopySize via API if it is unnecessary, for better encapsulation. Bug: angleproject:6354 Change-Id: If69a5a78cc40d54feee6f3474aef6292d60b89c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3609016 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 454efd1d 2022-04-26T23:57:46 Add forceDepthAttachmentInitOnClear frontend workaround AMD on D3D11 skips depth buffer updates in some cases. Bug: angleproject:7246 Bug: angleproject:7200 Change-Id: I27bbea30fbf4173470063a670b9c43a805286c39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3608092 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Brian Osman 29287e1f 2022-04-26T12:05:07 Make SPIRV optional for Metal backend This allows clients (ie Skia) to build ANGLE without needing all of the additional Vulkan dependencies. Developer builds will continue to include both the direct and SPIRV paths, for debugging purposes. Bug: angleproject:7155 Change-Id: I1c38ee19e747df8b25fd2f8e8efa3b420a4d7766 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3605764 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Auto-Submit: Brian Osman <brianosman@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 3b65b803 2022-04-27T11:04:22 Vulkan: Work around Qualcomm imprecision with dithering On qualcomm, sometimes the output is ceil()ed instead of round()ed. With ditering emulation affecting values, some dEQP tests fail due to the excessive change in value when dithering bumps the value slightly over to the next quantum. In this change, a workaround is added to round() the value before outputting it. Bug: angleproject:6953 Change-Id: Iae7df5ca20055b4db3185c6153f3c0bf4ba07f68 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3611064 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jeff Vigil 6c248691 2022-04-21T10:10:03 Enable SINGLE_BUFFER with eglCreateWindowSurface Enable core EGL feature for Vulkan using: VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR Test: angle_end2end_test --gtest_filter=EGLSingleBufferTest Bug: angleproject:7224 Change-Id: I3e85f932471f7b3c97bbc5c2f5314f25eb9b2867 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3610975 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Doug Horn 1835e5d8 2022-04-25T14:42:31 Fix commit ID gathering on Android builds. Android infra does not store the .git directory alongside the checked out code, instead using a gitdir directive to point elsewhere. This caused the commit_id script to fail, which could cause issues with disk-backed program caches on updates when the serialization format changes. This CL also makes it a build failure to fail to get the commit id, and removes the ANGLE_DISABLE_PROGRAM_BINARY_LOAD fallback (which was broken anyway due to not being used anywhere). Bug: b/206109660 Test: Run script on Android infra, verify hash is gathered properly. Change-Id: Ie28dc9278b6fbd3dd4f09232c0a88d602fca6980 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3604710 Commit-Queue: Doug Horn <doughorn@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 7d31a47f 2022-04-23T00:19:15 Vulkan: Optimize away eglSwapBuffers for single buffer surfaces For single buffer surfaces, eglSwapBuffers serves two purposes: - Switch to/from single buffer mode - Implicitly issue a glFlush Simultaneously, for single buffer surfaces, glFlush serves three purposes: - Submit the commands - Call queue present (if necessary) - Throttle the CPU In this mode, ContextVk::flush() already redirects to the surface, calling WindowSurfaceVk::swapImpl() which calls back to ContextVk::flushImpl() (to submit the commands), calls queue present and throttles the CPU. If the application calls eglSwapBuffers(), the exact same thing happens (i.e. WindowSurfaceVk::swapImpl() is called to the same effect). Calling swapImpl() leads to an addition of the corresponding submit serial to the "swap history". The CPU throttling code always throttles the CPU to the serial of two swaps ago. Unnecessary calls to eglSwapBuffers() (when there is no command to be flushed) in single buffer mode would thus lead to the CPU throttled to the end of the last submission, effectively turning into a glFinish(). In this change, eglSwapBuffers() in single buffer mode, when not switching to/from this mode, is redirected to glFlush() as it's functionally equivalent. Simultaneously, ContextVk now tracks whether it has any pending commands for submission at all, and skips glFlush() altogether if there are none. Together, this results in the unnecessary eglSwapBuffers() to become no-op. Bug: b/229908040 Change-Id: I0e3b4a8b7eb4f6b0e0ed22260644825fc67dd330 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3603841 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jeff Vigil 95c1ff52 2022-02-24T08:31:52 EGL: Fix EGL_KHR_mutable_render_buffer Fixes for eglSurfaceAttrib error cases. Improve query for render buffer Add test case to EGLSurfaceTest Test: angle_end2end_test --gtest_filter=EGLSingleBufferTest Bug: angleproject:7134 Change-Id: I4fa568c9530312003dc17111be212bf5b66d97fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3556088 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu fe2c82ad 2022-04-26T12:39:44 check integer overflow in Texture copyImage The code that checks forceCopySubImage could run into integer overflow error for these values: sourceArea.x + sourceArea.width sourceArea.y + sourceArea.height With gn arg is_ubsan=true, these two equations lead to crash. Add the code to check integer overflow Bug: chromium:1314268 Bug: angleproject:5246 Change-Id: I6dee98457a44797ffb806ef8bd05f052c9aaa733 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3597713 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Gregg Tavares 1a144edf 2022-04-13T17:15:29 Metal:ReadPixels AMD Copy Texture to Buffer optimization On AMD GPUs it's faster to copy a texture to a buffer for read back than to read via a texture. For reading from a normal texture 24-27ms -> 6-9ms For reading from a IOSurface texture 17-20ms -> 7-10ms Bug: angleproject:7117 Change-Id: I7c7f276a3121e87f5c52a1a4287d13203a6b1b37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584423 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kyle Piddington <kpiddington@apple.com> Commit-Queue: Gregg Tavares <gman@chromium.org>
Charlie Lao 6b9c5c8d 2022-04-22T11:06:16 Vulkan: Improve GetStorageMemoryType logic This is follow up from previous CL. For discrete GPU (preferDeviceLocalMemoryHostVisible is disabled), we will get HostVisible memory if any map can be created on it. For non discrete GPU, this CL also adds the check if the buffer will never gets updated, we just use DeviceLocal memory without HostVisible bit. Bug: angleproject:7047 Change-Id: I73bdc133badbf01c098db23563b30898d4d16a41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3602943 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 9d6b3a7e 2022-04-22T21:43:14 Vulkan: Move overlay draw after swap's implicit flush While this introduces a render pass for drawing the overlay, it isolates it from the rest of code associated with the implicit flush on swap and relevant optimizations. This makes the overlay counters more accurate when it comes to said optimizations. Bug: angleproject:7084 Change-Id: I3298612923fe07139891a4252cd2a88de1783ee7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3602839 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4aae5815 2022-04-22T13:21:03 Vulkan: Overlay widgets for submission statistics Bug: angleproject:7084 Change-Id: I68e69bda43862f9f2711c25a28dbe4745c19a45c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3602832 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 02b96848 2022-04-21T16:32:31 Vulkan: Add support for GL_QCOM_shading_rate Layer GL_QCOM_shading_rate over VK_KHR_fragment_shading_rate Test: ShadingRateQcomTest* Bug: angleproject:7172 Change-Id: I3f040dbfad3906facd4349937fed2ce9a464b824 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599874 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Antonio Caggiano 01811839 2022-03-17T15:08:38 Refactor platform code Use switch constructs instead of if-else to allow reuse of code and simplify addition of other platforms as new cases. Bug: angleproject:6902 Change-Id: Ia941d0d7bc03538bbc8d96ebece60224994a6c66 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3532260 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com> Commit-Queue: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya ea76cb0f 2022-04-21T15:52:39 Vulkan: Add entry points for GL_QCOM_shading_rate Bug: angleproject:7172 Change-Id: I837d2697d95c44f47a2fab7411cfd87a4ec65e90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599873 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Alexey Knyazev 62ca6449 2022-04-13T09:36:40 Reland "Fix BlendStateExt::mMaxColorMask initialization" This is a reland of commit 50d008a7efcab80f34eb742148d05389b2ed247e Besides fixing the BlendStateExt color mask initialization bug, the following changes were made: * All fields were made private with accessor functions. * A new assertion was added that ensures 64-bit storage for factors and equations. This allowed dropping one redundant mask. * Two new helper functions were added. * BlendStateExt::mMaxDrawBuffers was renamed to mDrawBufferCount. * The BlendStateExt class is now aligned to 8 bytes with an assertion. * Expanded test coverage. Also fixed incorrect usage of BlendStateExt fields in: * StateManagerGL::syncBlendFromNativeContext * StateManagerGL::restoreBlendNativeContext Original change's description: > Fix BlendStateExt::mMaxColorMask initialization > > This variable should not have its unused bits set. > > To avoid confusion with other masks of the same class, > the variable was renamed to mAllColorMask. > > Bug: angleproject:7200 > Change-Id: I72542d49ff8da3dbb8d61c5034ce37c1e8fcc6e1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3581990 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:7200 Change-Id: I87a5fe0f9dfbbf5e525b9120f772aa9adb39ce5f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3593234 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Cody Northrop e0183a42 2022-04-25T09:07:55 Revert "Mark contexts as shared when importing EGL images." This reverts commit e18240d136d15e5cdfa4fa4a6355ca21c8d807b6. Reason for revert: Applications not responding in AOSP: https://buganizer.corp.google.com/issues/229807074 Original change's description: > Mark contexts as shared when importing EGL images. > > Once a context references an EGL image, it can share resources with > contexts in other share groups. Marking the context as shared ensures > that locks are held by all contexts referencing EGL images for GL > functions. > > Bug: angleproject:6957 > Change-Id: Ic3901c458f388306c59f6bb01560a7c66d0574c0 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424659 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: mohan maiya <m.maiya@samsung.com> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Test: CtsWindowManagerDeviceTestCases Bug: b/229807074 Change-Id: I5b7050bd68f67925f77242e483e2aa970ed0ca17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3602954 Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: Lingfeng Yang <lfy@google.com>
Shahbaz Youssefi 400d9fe4 2022-04-23T01:08:19 Rename feature files to *_autogen.h To clarify further that they are not to be edited by hand. Bug: angleproject:6435 Change-Id: Iaf79706d2b688a43b3ebb65700cfbdd71a49a742 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3603842 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano 0f3710d9 2022-03-16T14:30:17 Generalize GetDisplayFromNativeDisplay Add a platform parameter to this function to possibly accept other platforms besides EGL_PLATFORM_ANGLE_ANGLE. Bug: angleproject:6902 Change-Id: I90bd9cf2e8142ca0e656dee4bf687953515b71a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3528757 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
SeongHwan Park a8cac005 2022-04-25T16:27:33 Remove observer when element array buffer is detached Fix an issue where the observer is not removed when the element array buffer is detached from the vertex array. This fixes use-after-free vulnerability. Bug: angleproject:7237 Change-Id: I7cf30322740edffccdba89d40c0d02cd351dad78 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3603007 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2d6e42fc 2022-04-22T14:04:21 Update Program Pipeline TODOs. Bug: angleproject:3570 Bug: angleproject:7232 Change-Id: I0923e6b232b80ee26cb4c5788232c25a545ff87a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600916 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 2db718ed 2022-04-21T23:13:02 Vulkan: Skip empty submissions A number of places in ANGLE perform an implicit flush; eglSwapBuffers(), glFenceSync() etc. Sometimes these flushes are unnecessary because there is nothing to submit. Additionally, an application may unnecessarily issue glFlush() with nothing recorded. In this change, empty command buffers are automatically not submitted, optimizing these unnecessary flushes away. Bug: angleproject:7084 Change-Id: Iecb865b6b9ef8045dfecda7b5221874f7031b42e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600837 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi b07a1156 2022-04-13T10:48:10 Split Context ResourceUseList to RP Commandbuffers * Finished splitting resourceUseList from ContextVk into that from each command buffer, mostly in UtilsVk.cpp. * Removed mResourceUseList from ContextVk. Bug: angleproject:7103 Change-Id: I6344f8144a38b13d7e5f599b2e935f0f92b22f98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3585882 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 37c53684 2022-04-05T15:03:14 Split Context ResourceUseList to RP Commandbuffers * Split the resource use lists retained in context between the render pass command buffer and the outside render pass command buffer, mostly in vk_helper.cpp and ContextVk.cpp. Bug: angleproject:7103 Change-Id: Ib696bdec2c545cd7df9ae4ab86c54a294041d908 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3573581 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen 15895160 2022-04-05T15:43:52 Avoid leaking gl::Framebuffers in gl::Context Fix by holding framebuffer via UniqueFramebufferPointer. Removes redundant functions from gl::Surface. Replaces UniqueObjectPointerBase with unique_ptr. The use-case needs default initialization, move assign and operator bool. With these implemented, UniqueObjectPointerBase would have been an imitation of unique_ptr. Patch by David Kilzer <ddkilzer@apple.com> Bug: angleproject:6920 Change-Id: Id0c8fda95f62caa54c89d0a70684e386804db094 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3568382 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Ian Elliott 64fa5eda 2022-04-22T09:59:57 Suppress VVL UNASSIGNED-BestPractices-SemaphoreCount Bug: angleproject:7231 Change-Id: I2072e5ba5937342452889c370bab4da094cde2f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600153 Auto-Submit: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill e1fdef90 2022-04-22T14:55:11 Revert "Vulkan: Cache ImageView serials on texture changes." This reverts commit 7d229d047f742e93ca194272da9b93959e49d75e. Reason for revert: Crash on Mac blink-web-tests: https://ci.chromium.org/ui/p/chromium/builders/try/mac-rel/979339/overview Original change's description: > Vulkan: Cache ImageView serials on texture changes. > > This significantly reduces overhead when changing textures before > draw calls in the Vulkan back-end. > > Bug: angleproject:6776 > Change-Id: I24e2938c0122c3b23db4a90ec85b7d8f459cc063 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3583360 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6776 Change-Id: Icdf4f4a3628690fd9e074c6f400614890848be7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600910 Auto-Submit: Jamie Madill <jmadill@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 3b38b379 2022-04-20T10:44:24 Vulkan: Add feature avoid HOST_VISIBLE and DEVICE_LOCAL combination Discrete GPUs device local memory usually is not CPU accessible. This adds a feature flag to control that. Fixed bug in BufferVk that when mapRangeImpl is called from angle internal, unmapImpl was using front end mapping parameters that is incorrect. We have to cache the mapping parameters in the backend to hangle the mapRangeImpl/unmapImpl calls from internal. Fixed the test bug in ComputeShaderTest.BufferImageBufferMapWrite that we are calling glMapBufferRange with GL_MAP_READ_BIT but are actually writing to the map pointer. This should result in undefined behavior per spec. Fixed the test bug in GLSLTest.* that VerifyBuffer calls glMapBufferRange, but was giving incorrect length which result in data only been partially copied. This bug was hidden due to previously all buffers are CPU accessible and there is no copy needed. Fixed the test bug in ReadPixelsPBOTest.* and ReadPixelsPBONVTest.* that calls glMapBufferRangeEXT, but was giving incorrect length which result in data only been partially copied. This bug was hidden due to previously all buffers are CPU accessible and there is no copy needed. Added new skipped syncval messages. Because this CL triggers a copyToBuffer call for some of the buffers and that changes the syncval message signature for the same reasons (i.e, feedback loop or synval does not know the exact range of buffer been used for vertex buffers etc). Bug: angleproject:7047 Change-Id: I28c96ae0f23db8e5b51af8259e5b97e12e8b91f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3597711 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill 2dd13ebb 2022-04-21T11:25:00 Track Surface color & depth/stencil init separately. This clears up some trace testing confusion due when robust resource init is enabled, and the app clears color but not depth on the default surface. Bug: angleproject:7221 Change-Id: Id97871aec32ad831b663aaa9116e04b582ab5a36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600375 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 0690f5d3 2022-04-21T21:58:49 Revert "CGL, MTL: pbuffer for IOSurface fails for some formats" This reverts commit 5b84ad7973a3019b66848aabb2d2eef27c094545. Reason for revert: Breaks the build on the bots (see below) Example AutoRoll CL that has compilation pre-submit error: https://chromium-review.googlesource.com/c/chromium/src/+/3598558 Example bot results, showing compilation error: https://ci.chromium.org/ui/p/chromium/builders/try/ios-simulator/1143059/overview Original change's description: > CGL, MTL: pbuffer for IOSurface fails for some formats > > Some IOSurface SPI formats are compressed, and getting the > element size for those returns values that are not consistent > with the validation. Disable the validation > until a better detection of such formats are known. > > A workaround exists for EAGL. > Apply similar workaround for CGL and Metal. > > This hunk is in downtstream WebKit ANGLE and having it upstream would > help merging back and forth. > > Bug: angleproject:7175 > Change-Id: Ic97afd3b952fed236e7b7e1e8511a1dde9008647 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3568380 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Commit-Queue: Kenneth Russell <kbr@chromium.org> Bug: angleproject:7175 Change-Id: I0c18bdb800e39d6930455dbc86931681b6df20b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600148 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com> Auto-Submit: Ian Elliott <ianelliott@google.com>
Jamie Madill 0439d9cd 2022-04-21T13:30:53 Vulkan: Update glslang wrapper TODO. Bug: angleproject:4524 Bug: angleproject:7220 Change-Id: I1a59a626409f9acf52d4b43d6695f7119a9077a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599595 Auto-Submit: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 768c7d47 2022-04-21T16:55:05 Revert "Re-land: "Vulkan: Support Wayland"" This reverts commit f6cdd02fb4bceb4072430e3dbcb1e945809471e0. Reason for revert: Still warns about extra dependency on wayland. https://ci.chromium.org/ui/p/chromium/builders/try/linux-rel/990820/overview Original change's description: > Re-land: "Vulkan: Support Wayland" > > Implement DisplayVkWayland and WindowSurfaceVkWayland. Get window size > from native window and check egl config is just empty. An EGL wayland > test is added for testing rendering and buffers swapping. > > Re-land fixes link failure in systems with no libwayland installed. > > Bug: angleproject:6902 > Change-Id: I706af14620d6298275009f5caf93b0e60339219b > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3578765 > Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6902 Change-Id: I11b1fe473fceb2fddb85bd562b769d18426ce07b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600378 Auto-Submit: Jamie Madill <jmadill@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexis Hetu dc1b7029 2022-04-20T15:41:40 Disable MSAN in the Vulkan loader When trying to reproduce MSAN errors locally, a number of MSAN errors pop up inside the Vulkan loader. This CL disables MSAN checks around function calls which end up inside the Vulkan loader, which similarly had been done for LSAN before, and allows local MSAN builds to reach actual MSAN errors inside SwANGLE. Bug: chromium:1313907 Change-Id: I8c0b841f03ce57cecb01e34b4f6edab398d2924e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3598011 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Guoxing Wu 13784ebe 2022-04-21T10:38:23 Vulkan: use "undefined" for layerProvokingVertex Use "undefined" for layerProvokingVertex because different platforms has different behavior on this. APP would have to set gl_Layer identically. Bug: angleproject:7185 Change-Id: Ia5c31f617c2441c1a6ac8d682c9ce98f464045e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3592274 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Steven Noonan dd493b5c 2022-04-11T17:49:36 EGL: allow eglQueryString(EGL_NO_DISPLAY, EGL_VERSION) According to the EGL 1.5 specification, this should be okay: If dpy is EGL_NO_DISPLAY, then the EGL_VERSION string describes the supported client version. If dpy is a valid, initialized display, then the EGL_VERSION string describes the supported EGL version for dpy. Bug: angleproject:7194 Change-Id: I0d851742695293d553465175ce4b59ce7f5d5336 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3583143 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Steven Noonan <steven@valvesoftware.com> Auto-Submit: Steven Noonan <steven@valvesoftware.com> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Charlie Lao d3dbaa8d 2022-04-19T10:45:57 Vulkan: Remove BufferVk::mHasBeenReferencedByGPU This variable was added before due to we used to only track GPU progress on the entire buffer instead of suballocation. Now each suballocation tracks its own GPU progress, so this is no longer needed. Bug: b/201826021 Change-Id: I2c2b1744b624e028fd905f0752a4264327620515 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3594620 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi c66de085 2022-04-19T23:56:50 Vulkan: Fix surface invalidate w.r.t shared present mode When in shared present mode (i.e. single-buffer rendering), surface shouldn't be invalidated on (the implicit) swap, because the application is expected to continuously draw to it. Bug: b/229689340 Change-Id: I006a954c558a5da1d9af631797546e4b76f4ff2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3594801 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Jeff Vigil <j.vigil@samsung.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 7d229d04 2022-04-14T13:32:07 Vulkan: Cache ImageView serials on texture changes. This significantly reduces overhead when changing textures before draw calls in the Vulkan back-end. Bug: angleproject:6776 Change-Id: I24e2938c0122c3b23db4a90ec85b7d8f459cc063 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3583360 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4efc4ee6 2022-04-19T17:01:20 Fix validate state cache after XFB buffer deleted. Bug: chromium:1317650 Change-Id: Iec9f1167c3b2957091dd0f4ef3efcfcd7c4bf3c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3594250 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gregg Tavares 3f800e5c 2022-04-18T18:36:03 Metal:Clear Backbuffer when Robust Resource Init enabled In trying to optimize readPixels (see: https://chromium-review.googlesource.com/c/angle/angle/+/3584423) the test RobustResourceInitTest.SurfaceInitialized was failing. Digging into it it turns out that backbuffer surfaces were not being cleared. WindowSurfaceMtl was losing initialization requests due to back-to-back calls to ensureCurrentDrawableObtained. Refactor surface preparation and track initialized state separately. Bug: angleproject:7117 Change-Id: Ic7eac9e77c4412c55340039a21be63e39b2abc0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3590971 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Gregg Tavares <gman@chromium.org>
Kimmo Kinnunen 5b84ad79 2022-04-05T14:55:58 CGL, MTL: pbuffer for IOSurface fails for some formats Some IOSurface SPI formats are compressed, and getting the element size for those returns values that are not consistent with the validation. Disable the validation until a better detection of such formats are known. A workaround exists for EAGL. Apply similar workaround for CGL and Metal. This hunk is in downtstream WebKit ANGLE and having it upstream would help merging back and forth. Bug: angleproject:7175 Change-Id: Ic97afd3b952fed236e7b7e1e8511a1dde9008647 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3568380 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jamie Madill ff8a9f6a 2022-04-14T15:15:16 Vulkan: Renaming "ShaderBuffers" to "ShaderResources". This will match the functionality as we expand the descriptor set cache to non-buffer resources. Bug: angleproject:6776 Change-Id: I5597d074beea7d3b464802a2db9bcc2fcf84ca6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3583359 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano f6cdd02f 2021-12-09T16:52:35 Re-land: "Vulkan: Support Wayland" Implement DisplayVkWayland and WindowSurfaceVkWayland. Get window size from native window and check egl config is just empty. An EGL wayland test is added for testing rendering and buffers swapping. Re-land fixes link failure in systems with no libwayland installed. Bug: angleproject:6902 Change-Id: I706af14620d6298275009f5caf93b0e60339219b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3578765 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 5610ab64 2022-04-20T03:22:59 Fix ANGLEGetDisplayPlatform after method deprecation This function verifies that the methods that are named match methods of PlatformMethods. Since 8074061d2, some methods have been deprecated, which caused this function to fail to return the platform methods for the Android platform. The Android platform doesn't actually use the deprecated functions. In this change, ANGLEGetDisplayPlatform is made to ignore deprecated methods (whose names start with `placeholder`) to maintain backwards compatibility. This can be reverted once Android and any other potential user is fixed. Bug: b/229651121 Change-Id: I1d51a6e064f1dec128f67c0991cd8fb2646ad2b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3594804 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill b2a1f0d2 2022-04-14T07:58:32 Track total vs per-frame descriptor set counters. This will give more consistent measurements for descriptor set caches and descriptor set allocations. Bug: angleproject:6776 Change-Id: I584b8807ad19f8393ae54cc1d88b319c8f7f9f39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584636 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 37cdf93d 2022-04-15T12:49:09 Vulkan: Acquire a new buffer even when size is unchanged If a buffer is respecified using glBufferData with no changes to size but client data pointer is null, we need to acquire a new BufferHelper to avoid affecting the results of previously submitted draws. Test: BufferDataTestES3.BufferDataWithNullFollowedByMap*Vulkan Bug: angleproject:7211 Change-Id: Icc20fe3509f94098c7a15988a9ebc888b06fd3c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3588955 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi fcec6904 2022-04-13T14:18:06 Generate feature variable names from display names The json file now only contains the feature display name. The variable name is automaticaly derived. For consistence with Chromium and other Chromium-based projects, the display name is now always snake_case, and that's what's specified in the json files. This also makes camelCase variable name generation trivial (as opposed to the other way around). Feature overrides now accept both snake_case and camelCase names to ensure compatibility with existing scripts. This is done by removing _ and comparing override names with feature names in lower case. Bug: angleproject:6435 Change-Id: I0b6ed2bbf5c312bc4f4be7b3c7d55dbaca2a9886 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584630 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f4fc8e16 2022-04-20T04:32:48 Revert "Fix BlendStateExt::mMaxColorMask initialization" This reverts commit 50d008a7efcab80f34eb742148d05389b2ed247e. Reason for revert: Causes the win-trace bot to fail Original change's description: > Fix BlendStateExt::mMaxColorMask initialization > > This variable should not have its unused bits set. > > To avoid confusion with other masks of the same class, > the variable was renamed to mAllColorMask. > > Bug: angleproject:7200 > Change-Id: I72542d49ff8da3dbb8d61c5034ce37c1e8fcc6e1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3581990 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:7200 Change-Id: Ib9a0927ba4e152d5b4ae4c034e6748faf6b5aa87 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3594802 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 5014ce66 2022-04-18T18:05:20 Vulkan: Add orphaned list for non-empty BufferBlocks. In the fix for chromium:1299211, we added a new pool in the RendererVk and pick which pool to use at the getDefaultBufferPool() call. This CL fixes the original problem differently. In this CL we still uses the ShareGroup's pool. When display global texture is enabled, we orphan the non-empty buffer blocks into renderer and check and destroyed from garbage collection code. This way we still only deal with one buffer pool and all logic is mostly in context destroy code path, which I believe is a better solution. Bug: b/223428306 Change-Id: Ib465a11f7e3656df09cc891416ff57f086a8184b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3573390 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill 55c21842 2022-04-14T05:04:15 Vulkan: Use flat array lookups for shader variables. The array lookups we use after link now are simple array lookups and no longer use string hashing queries. This will make the descriptor cache indexing much faster after the cache key redesign. Bug: angleproject:4524 Change-Id: If19e3a4aa57c415f33c69172dd76c10a207e3264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3580979 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Stephen White 6e130d2b 2022-04-19T11:35:46 D3D: fix SSBOs used in vertex shaders. Use the total number of pixel shader outputs as the base UAV register for vertex and pixel shaders. This is less fragile than making the vertex shader depend on the number of draw-time pixel shader outputs. Add a test that exercises SSBOs in vertex shaders, varying the number of draw-time pixel shader outputs (which should have no effect on register assignment). Bug: angleproject:7156 Change-Id: I5801d59299275ea6d2569456d53c230e7e8ee5a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3579501 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Stephen White <senorblanco@chromium.org>
Alexey Knyazev 50d008a7 2022-04-13T09:36:40 Fix BlendStateExt::mMaxColorMask initialization This variable should not have its unused bits set. To avoid confusion with other masks of the same class, the variable was renamed to mAllColorMask. Bug: angleproject:7200 Change-Id: I72542d49ff8da3dbb8d61c5034ce37c1e8fcc6e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3581990 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Charlie Lao cfc92ebf 2022-04-18T18:16:24 Vulkan: Encapsulate ShareGroup::mContexts Instead of return mContexts, this add addContext/removeContext API and changed getContexts to const function. No functional change expected, but clean up only. Bug: b/223428306 Change-Id: I020c4bc781f58352089980c9d8ff22bcb183dbe6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3590970 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang e18240d1 2022-01-28T13:46:41 Mark contexts as shared when importing EGL images. Once a context references an EGL image, it can share resources with contexts in other share groups. Marking the context as shared ensures that locks are held by all contexts referencing EGL images for GL functions. Bug: angleproject:6957 Change-Id: Ic3901c458f388306c59f6bb01560a7c66d0574c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424659 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill bddb944b 2022-04-14T05:04:09 Vulkan: Prep variable info map to remove hashing. The removes all the string-based query APIs from the program executable descriptor set init. The new APIs still use string-keyed maps but will be switched out with non-hashed maps in a future CL. Bug: angleproject:4524 Change-Id: I427efb3ebcf22d5fbdf6d20679bbdaa23cd2dc94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3573077 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e77be663 2022-04-14T05:04:13 Use ProgramExecutable directly in GlslangWrapper. Using the ProgramExecutable instead of the state means we can deal with merged samplers and images immediately. This will make it easier to use linear maps when indexing program resources for descriptor sets. Bug: angleproject:3570 Bug: angleproject:4524 Change-Id: Icd8ee9fe61730b81fafa2bdc59a2788a0d92ad12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3580882 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade 9cc459c9 2022-04-14T13:55:09 Add check for GL_ANDROID_extension_pack_es31a support Expose Android Extension Pack if we meet the following conditions - 1. GLES version >= 3.1 2. All required AEP extensions are supported Bug: angleproject:3608 Change-Id: I41eaf458b0a8fe7a53cd0fbec818411196ce21ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3587535 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>