src


Log

Author Commit Date CI Message
Geoff Lang 7c72fbe9 2023-08-22T16:22:12 Return the vendor string as hex when it is unknown. ANGLE's vendor strings would include the generic "Unknown" when we did not recognize the driver's vendor ID. Print the vendor ID so that we can future-proof ourselves against new GPU vendors. Bug: chromium:1464799 Change-Id: Idac67b369bc95c3c49eb754e8c681d5930a1f494 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804365 Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Shahbaz Youssefi 3822ea3a 2023-08-24T22:42:43 D3D: Move program state to ProgramExecutableD3D Bug: angleproject:8297 Change-Id: Ieead87d2f0ebe5937f262f598443a00504ea1492 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812139 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi bb135f0e 2023-08-24T15:29:11 Make ProgramExecutableImpl managed by ProgramExecutable This change allows both parts of the program executable to be safely backed up and swapped on link. Bug: angleproject:8297 Change-Id: I17e4b6c05e4e481a66a227d6047dbf943d2c2603 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812138 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov d6fd7eaf 2023-08-25T16:33:27 Trace/perf tests: remove calibration and most warmup options This removes calibration and warmup except for --warmup (which does what --warmup-steps=-1 used to do: render each frame once with glFinish) Trace and perf tests now default to no warmup. Unchanged by this CL: --fixed-test-time=x runs a single trial for x seconds. --fixed-test-time-with-warmup=x is effectively the above flag coupled with --warmup-steps=-1 --run-to-key-frame runs to the key frame (no longer disables warmup as it's now off by default) Bug: b/297418214 Change-Id: I7a0d3e490067dbde57c5f519c1b9092ba70b1480 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812049 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 558df6f1 2023-08-21T00:00:00 Fix fragment output variables validation * Reject fragment shaders that assign out-of-range fragment locations * Reject fragment shaders that assign output variables of different types to the same location * Apply similar validation for fragment outputs bound via API calls * Ensure that masks for active output variables and draw buffer types are set after processing all fragment output bindings Bug: angleproject:1085 Change-Id: If29cbb58be1981279fc97c67739fe4136b0cdc98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4813656 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 57388ab2 2023-08-24T14:44:48 Vulkan: Make sure ProgramVk has no members other than executable The program is really just an interface to the executable. It should not hold on to any data on its own. The SpvProgramInterfaceInfo member did not even need to be a member, and was left over from previous refactorings. Bug: angleproject:8297 Change-Id: I4edb53c1c8b27e242a62fb4fc253ade58bd8dde1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812137 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao e066b689 2023-08-25T09:25:19 Ensure struct SamplerBinding is tightly packed without padding crrev.com/c/4798195 might have caused MSan bot failure in chromium due to use of memcpy on the struct. TextureType and SamplerFormat are both uint8_t, which means extra paddings added for the struct. This CL adds warning for struct padding and fixes the warning as well. Bug: b/275102061 Bug: chromium:1475844 Change-Id: Ia3f8a7e7697c6e354efb8a8dc5dfc7861118a818 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812245 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 7e41c5bc 2023-08-24T18:30:43 Remove scripts/perf_test_runner.py and references to it src/tests/run_perf_tests.py is similar and is maintained (runs on CI) Bug: b/297418214 Change-Id: I6fb12ac1fb856672b3bb83c0a4e34eb68afa1475 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812135 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi c8ec8739 2023-08-22T11:30:08 Frontend: Remove link job dependence to context The part of link that needs the context is moved up. Usage of gl::Context is eliminated from the rest of the link (whatever is done in the front-end). Bug: angleproject:8297 Change-Id: Ifa71d2b2c0c0bc7c0c0b7ee89e1cbb203c3018cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4803109 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4376a8c8 2023-08-16T12:02:57 Metal: Reduce link job dependence to context The dependence on ContextMtl is not entirely removed, though it seems feasible. In particular, ContextDevice is passed around while only the real underlying device is needed. Some refactoring is needed here to address that. Additionally, I haven't verified if all that is accessed through the display is thread-safe, which would be a pre-requisite to moving the entire link job to a worker thread on this backend. Bug: angleproject:8297 Change-Id: Ifd4b02694b0997a33d17aad0b47eb7ac4de104e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4784667 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 44b5715c 2023-08-15T15:06:25 D3D: Remove link job dependence to context The part of link that needs the context is moved up. Usage of gl::Context and gl::State is eliminated from the rest of the link. Bug: angleproject:8297 Change-Id: I2064b21a6724d602f6a84f53a8ae5fe42fe4e837 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781566 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 571b4cdb 2023-08-14T16:55:28 Vulkan: Move pipeline/desc-set layout creation to link job The pipeline and desc-set layout caches are consequently made thread-safe. The reference counter on the layouts are also made atomic. With this change, practically all of the link in the Vulkan backend is moved to the link job. Bug: angleproject:8297 Change-Id: Iba694ece5fc5510d34cce2c34441ae08ca5bb646 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4774787 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao b8d5a423 2023-08-21T14:43:42 Add static_assert(std::is_trivially_copyable<LinkedUniform>(),"") Since we are using memcpy for LinkedUniform, it is desirable to utilize compile time assertion to ensure that in future if anyone modifies POD struct (and the class of data members of POD struct) and made it that no longer memcopy-able, we would immediately caught at compile time. std::is_trivially_copyable<>is exactly for this reason. In order to make this work, the POD struct and any data it uses can not have user defined copy constructor. The problem is that right now ANGLE is using clang_use_chrome_plugins=true, and chrome-style generates warnings if the complex struct (has more than 10 data members) does not define a copy constructor, and that warning causes build failure with -Werror. So clang_use_chrome_plugins=true and std::is_trivially_copyable have this conflicting requirements that I can not apply both. This has been raised to compiler team, but before we get a solution from them, if we have to make a choice, I think the better choice is to disable clang_use_chrome_plugins and apply std::is_trivially_copyable, since the later is more critical to ensure safety, while chrome-style is mostly trying to minimize the code size, but won't affect correctness/robustness. This CL sets clang_use_chrome_plugins to false, and removes the copy constructor and copy assignment operator from BitSetT and LinkedUniform and added static assertion is_trivially_copyable for LinkedUniform. Same thing applied to ProgramInput as well. In future once we have a better solution from compile team, we can re-enable clang_use_chrome_plugins and disable only for structs that requires is_trivially_copyable assertion. Bug: b/275102061 Change-Id: If33415ea61deda568d855a7dd6a4fd6042058be5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4799342 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 03f9dff6 2023-08-21T16:57:12 Separate out std::vector<GLuint> boundTextureUnits from SamplerBinding SamplerBinding struct is trivial copy-able except the std::vector<GLuint> boundTextureUnits. This CL moves boundTextureUnits out of the SamplerBinding struct and becomes a vector in ProgramExecutable. This means all of sampler binding's texture units will be stored in one vector and SamplerBinding will remember where its own texture units is stored in that vector by keeping textureUnitsStartIndex and textureUnitsCount. In other word, SamplerBinding::boundTextureUnits (before this CL) is equivalent to mSamplerBoundTextureUnits[SamplerBinding.textureUnitsStartIndex], ..., mSamplerBoundTextureUnits[SamplerBinding.textureUnitsStartIndex + SamplerBinding.textureUnitsCount - 1] after this CL. With this, ProgramExecutable::mSamplerBindings are load/stored with one readBytes/writeBytes call since it is trivially copyable. Bug: b/275102061 Change-Id: I0974cf940875ecbcf655b4469b3bbc910717f1ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4798195 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao a8d77dc4 2023-08-18T15:23:39 Vulkan: Move mVariableInfoMap load/save to its own class This is mechanical change only. This CL moves mVariableInfoMap load/save logic from ProgramExecutableVk to ShaderInterfaceVariableInfoMap class. Bug: b/296433003 Change-Id: I9a934fd2223c559fba899f166e40efc17fa1be2e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794752 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Charlie Lao 607f2636 2023-08-17T11:31:59 Vulkan: Switch ShaderInfo::load to use readBytes Right now it is using readIntVector<uint32_t>, which end up doing a for loop and memcpy each integer. This CL switch to readBytes so that one memcpy is used. Bug: b/296433003 Change-Id: Ibb10f97af4a86a4e93abb825007847a65f934237 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4790827 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Roman Lavrov 9f4bddd8 2023-08-24T10:54:43 Cleanup: remove unused ANGLE_ASSERT_IMPL Bug: b/297343154 Change-Id: Iccde6b93fd26aa5b575a11d0ac61c59f03508567 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4810192 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com>
Cody Northrop 98e351cf 2023-08-16T15:22:37 Traces: Update steps for upgrading traces We've settled on a streamlined method of upgrading traces. We consider the upgraded trace good if: - gets the same pixels for all frames, including after Reset - gets the same frame time and memory usage (or better) This moves away from using serialization, which is useful, but has become too heavyweight. We've preserved the steps as they are still useful in some scenarios. Also formalize a couple of scripts we've been using to compare trace screenshots. It supports two scenarios: - comparing screenshots between ANGLE and native - verifying screenshots after an upgrade Example usages: compare_trace_screenshots.py versus_upgrade \ --before <path> --after <path> --outdir <path> compare_trace_screenshots.py versus_native \ --screenshot-dir /tmp/screenshots --trace-list-path src/tests/restricted_traces Bug: b/294882956 Change-Id: Ifc59d8b31648abb3614da2d8919a1f90a0b6b68f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791916 Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Roman Lavrov 893325b8 2023-08-24T10:03:51 Perf tests: call base class SetUp in all tests https://crrev.com/c/4799388 moved code to SetUp assuming base class SetUp was always called but a few cases were missing this. Changes ASSERT to a check that is enabled in release builds (e.g. perf bots) Bug: b/291604008 Change-Id: I1c3fb123903f09631ef348e311f3dc1c77b4e221 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4810187 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 0b648252 2023-08-23T18:15:38 GL: Fix EAGL build Bug: angleproject:3031 Change-Id: Id6e30804d8eb066cc2353830cbefb798e08e3c0d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4808979 Commit-Queue: Solti Ho <solti@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Solti Ho <solti@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Yuxin Hu f0d3e8b3 2023-08-22T14:25:43 Remove test skips on dEQP-EGL.functional.swap_buffers* Below changes fixed dEQP-EGL.functional.swap_buffers* on pixel devices, too: https://chromium-review.googlesource.com/c/angle/angle/+/4794979. Update the tests to only skip on Win OS. The tests running on other platforms will be reported as Not Supported due to lack of readScreenPixels() implementation on other platforms. Tests failures on Win OS needs further investigations. Bug: angleproject:2341 Bug: b/224537784 Change-Id: I46a59dd8708e621b2d91ac3c46584bdad4ff759e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804568 Auto-Submit: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Alexey Knyazev 0688a940 2023-08-21T00:00:00 GL: Disable EXT_texture_mirror_clamp_to_edge on Mesa Although the extension string is exposed, the new enum is currently rejected when using an OpenGL ES context. Bug: angleproject:8319 Change-Id: I17c4105344fe7ca3038a79e0e09528db1d96376b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4807744 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi 68f2c10c 2023-08-15T22:47:32 Remove program executable backup during link This was added in https://chromium-review.googlesource.com/c/angle/angle/+/2181450/30 to support the case where a program fails to relink, but needs to still be usable. However, this does not seem to be an issue anymore. New tests are specifically added for this, and they, along with every other test, pass. If this needs to be reintroduced, it needs to be rethought. It does not play well with parallel link as it changes the executable pointer while link is in progress (and it was done on the assumption that everything needing the executable is linked serially). A better solution would likely be an `mLastSuccessfullyLinkedExecutable` that normally points to `mExecutable`, but not during link. On `resolveLink`, it would either make `mExecutable` point back to `mLastSuccessfullyLinkedExecutable`, or the other way around based on whether the link was successful or not. Bug: angleproject:8297 Change-Id: Ic9d55bccb75fff0253fe299a244bf1e4bbc416a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781632 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi cfd9ccd0 2023-08-09T17:21:20 Reland: Vulkan: Move SPIR-V set up to link job This is a reland of 10f54902e816fa7e4cf314384e00590e2b9bfa1d Bug: angleproject:8297 Change-Id: I701b750a13ac5b17df67dee5b6c37c13c60f5b10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4793219 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 711db275 2023-08-23T11:06:42 Translator: remove usage of contains() It's not available pre-C++20 Bug: angleproject:8311 Change-Id: I41940b5f8e6a90bc0224852aefe54643f2be9cb5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4806924 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop b0777def 2023-08-21T13:54:08 Traces: Upgrade octopath_traveler Test: angle_trace_tests --gtest_filter=TraceTest.octopath_traveler Bug: b/294882956 Change-Id: I690f4f6ad65542cd015ce61ee246f009f0907740 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794728 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 8f64b51d 2023-08-09T16:51:13 Reland: Vulkan: Move default uniform init to link job This is a reland of d8cd4dcdc9c55c88f030f7fca41357e99e600ed2 Bug: angleproject:8297 Change-Id: Ib4f8e9dd258da71d44983bbb619b6b4abda0b109 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4793218 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 865eceaa 2023-08-21T15:17:02 Trace perf: power metric uWs/frame -> W, exclude startup&teard Switching from uWs/frame to W, which is easier to measure as we don't need to know how many frames were rendered between the measurements and just need to avoid warmup, turndown. Also, W is a more "natural" metric as it reports actual power usage that can be reasoned about in terms of device thermals etc. Changing starting point to post-warmup by waiting for test message in logcat. The logcat -> script delay seems very small in my tests. Turndown also shows spikes in some traces so avoiding that by shifting the time for end point collection to 1s before the test is expected to finish (which makes this only compatible with --fixedtime) Also made device selection set env var instead of a global variable and passing via args it slighlty simplifies subprocess(adb) handling. Bug: b/291604008 Change-Id: I2109da0d75eba167eec939df88a34d9a9b7f330b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4799391 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 72c00885 2023-08-23T08:00:03 Tests: Skip injustice_2 on Windows/Nvidia Bug: angleproject:8316 Change-Id: I5bdef9df9bc6f922a15f3377e4af31cc60db73a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4807130 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 9f258f8a 2023-08-21T00:00:00 GL: Add disableRenderSnorm workaround Disable the extension on Mesa versions that clamp negative snorm values to zero on read. Fixed: angleproject:8315 Change-Id: I5459db40cb08c546fba15f5e6d70578029a8218a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804324 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi d8f088e0 2023-08-14T11:07:24 GL: Remove parallel compile/link without driver support This feature was practically disabled everywhere due to various bugs, and is complicating the code. In effect, the code was always spawning a thread for the compilation and link jobs, immediately fail it (due to a workaround), then do the job when compile/link is resolved (much closer to draw time). This leads to bad user experience, but also is racy because the shaders may get recompiled in the meantime and there is little the GL backend could do to stop that (efficiently). After this change, parallel compile/link is either done by the driver (if supported), or it isn't done. This is a partial revert of a100d8f471f79b9f88d387164992cc5bd9c6ee9f. Bug: angleproject:3031 Bug: chromium:922936 Bug: chromium:1184692 Bug: chromium:1202928 Change-Id: I6348bee3249ccb3828bb98ac2a69dc7d305f821c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4774785 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 0ef565c5 2023-08-22T17:50:36 end2end test with --use-gl fails with a note Bug: None Change-Id: I7e6e40c912910d0ffc8d4690e9b9b4c8599342db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804368 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov d41ac4da 2023-08-18T11:25:05 Cleanup: 'am instrument' readability and consistency Reconcile android_helper and restricted_trace_perf formatting of 'am instrument' command. The only real difference is that restricted_trace_perf uses 'shell=True' in subprocess which requires escaping spaces inside "" Bug: b/292249127 Change-Id: I002e49ae5b2913db46b92a7b643bc12d21abce1e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794430 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 84576a5b 2023-08-18T12:08:04 Trace perf: log script args in the spreadsheet Excludes the --output-tag flag Example: ... Source: raw_data.android.20230818.csv Args: -f *blade_and_soul_revolution --fixedtime 1 --power --loop-count 2 --sleep 1 Bug: b/292249127 Change-Id: Ic40666921fe49845032d47f32ecda9609ba7b044 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794431 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 9e2d4c0b 2023-08-18T10:25:48 Trace perf: add test crash handling When missing time and no '[ PASSED ]' tag in stdout, assume test crashed. Example stdout: trace wall_time gpu_time ... Starting run 1 with native at 2023-08-18 10:23:17 native_blade_and_soul_revolution crashed 0 ... raw_data: trace,wall_time(ms),gpu_time(ms),... native_blade_and_soul_revolution,crashed,0,... summary: 1,blade_and_soul_revolution,-1.000,-0.00%,-1.000,... Set cpu_time to 0 on a crash for consistency with other metrics. Bug: b/292249127 Change-Id: I9533c0ee7aa9a3b45f360ad1618984eb620d657f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794428 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 864de574 2023-08-18T09:49:30 Trace perf: subprocess.wait() -> subprocess.communicate() subprocess.wait() deadlocks when enough output is produced by the command to fill the stdout/stderr buffers. https://docs.python.org/3/library/subprocess.html#subprocess.Popen.wait recommends .communicate() instead. Replaced result.process.stdout with result.stdout which is a string rather than a stream. Bug: b/292249127 Change-Id: I172ac058ebc6aafda82edab7c45787252d612013 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794288 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Mark Lobodzinski 823de3a3 2023-08-22T07:40:39 Tests: Add Injustice 2 trace Test: angle_trace_tests --gtest_filter=TraceTest.injustice_2 Bug: b/296913308 Change-Id: I35f1e17767f924c4f31d4e00a2c9f737c6c4822b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4802266 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi cb1c5ca4 2023-08-22T10:13:17 Manual roll vulkan-deps from aa121378c102 to 2cb515574109 (9 revisions) Includes an adjustment to syncval message format. https://chromium.googlesource.com/vulkan-deps.git/+log/aa121378c102..2cb515574109 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/c5117b328a..db8719ae07 * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/bfc94f63a7..714966003d * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/300d9bf6b3..b441f434a0 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/d1ff40512a..ebab3bc86c If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC angle-team@google.com,syoussefi@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: None Change-Id: I94f05554452f1c8b97a1426fb4b61ac1a1fa4b1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4802525 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi f3c1de36 2023-08-17T15:29:24 Make shader recompile while parallel linking safe Prior to this change, Program* objects held references to Shader* objects. This poses a problem where a shader recompile can race with a program link, if the program link is done in parallel. As a result, a good chunk of the link job is done serially and under the share group lock. After this change, that is no longer a problem, and most of the link can be made lockless/parallelized. This change separates out the "compiled state" from the rest of the shader state. This was already done for the front-end state (for the sake of caching), but is also now done for the backends that need it. The compiled state in turn is placed in a shared_ptr, and is shared with the program. When a shader is compiled, its own shared_ptr is replaced with a new object, leaving all programs currently compiling unaffected and using the previous compilation results. Once a program is linked, its references to compiled shader states is updated. Bug: angleproject:8297 Change-Id: Iff7094a37088fbad99c6241f1c48b0bd4c820eb2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791065 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jeff Vigil 1bd45c4f 2023-07-17T14:18:53 Add tiling mode for GL_EXT_memory_objects Add set and get TexParameter for pName GL_TEXTURE_TILING_EXT Add test case to VulkanImageTest for import LINEAR memory object Bug: angleproject:8274 Change-Id: I4432093e41f45e3926a27e3dee00d48c0438cae5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4752793 Reviewed-by: Jeff Vigil <j.vigil@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: mohan maiya <m.maiya@samsung.com>
Yuxin Hu d0730eba 2023-08-18T14:41:03 Disable NativeWindow screen read capability on non-win32 platform NativeWindow::readScreenPixels() only returns true on win32 platform. Enable CAPABILITY_READ_SCREEN_PIXELS on DE_OS_WIN32 only. Bug: b/296487949 Bug: angleproject:8261 Change-Id: I964870a3a5c6911a16382e2b9bb9d2cecea2b706 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794979 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Alexey Knyazev 27836f21 2023-08-21T00:00:00 Metal: Support incomplete integer textures Ensure that a compatible placeholder texture is created for sampling from an incomplete texture. Covered by these tests with Metal API Validation: * IncompleteTextureTestES3.IntegerType * IncompleteTextureTestES3.UnsignedIntegerType Bug: angleproject:5594 Change-Id: Ib7322b7cf32cadabf40eb6050476c1bde98ee404 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4801369 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Geoff Lang 084643d9 2023-08-22T11:04:32 EGL: Make sure unitialize values don't leak into configs Old Android emulators did not implement many of the eglGetConfigAttrib parameters, including EGL_COLOR_BUFFER_TYPE. They return EGL_SUCCESS without writing the attribute value and DisplayEGL::getConfigAttrib would write an uninitialized temporary value to the config in this case. Make sure the default config value is stored when eglGetConfigAttrib behaves this way. Add more logging about unexpected color buffer types to diagnose issues like this from logcat more easily. Bug: chromium:1442132 Change-Id: Ifbbbbfba43658bcd59c73cbb6586b76f636479e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791066 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org>
Jonah Ryan-Davis 280e79e1 2023-08-10T14:08:00 Rescope globals only used in one function to function-local. We can demote global variables when they are only used in one function. This has performance implications on Metal. Bug: angleproject:8311 Change-Id: Id666e6b167be771c14768cd73efa61fdacd897d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4771215 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Li Hao aaeeea0c 2023-08-17T14:28:12 D3D11: Add device id to the render string To get device id from GL_RENDER string when using D3D11 backend. Bug: angleproject:3026 Change-Id: Ied666a481575ece077126c3e1177b150e7358a01 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4786902 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mike Frysinger 71c90dfd 2023-08-18T21:50:22 gtest: disable legacy test case API Remove APIs that upstream has deprecated so we make sure no one uses them anymore in new tests. Bug: chromium:1474588 Change-Id: Ic760439ec41131a5bb5a30a59e23b9166c7fd23d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794112 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Mike Frysinger <vapier@chromium.org>
Roman Lavrov 54770d82 2023-08-21T11:44:12 Perf tests: move calibration out of run() to SetUp() calibrateStepsToRun is called from SetUp for ANGLERenderTest subclasses, but direct ANGLEPerfTest subclasses call it from run() instead. Moving it to SetUp for consistency - just need a check to avoid doing this for render tests and we already have a hack to do that. Bug: b/291604008 Change-Id: Ifddb60d55c6404660b0dff938a079fcd0545a6fb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4799388 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 2c624a5e 2023-08-17T15:36:37 android_helper cleanup: remove smoke test and timeout This was added to help debug cases of stuck tests on bots, but this doesn't seem to have happened in over a year and the code (and timeout) keeps getting in the way. Bug: angleproject:7242 Change-Id: Ic30d976408bd32a745d830921f6e4d98d17e863c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4789845 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Mike Schuchardt 8f5a6124 2023-08-18T17:13:18 Tests: Add Stumble Guys trace Test: angle_trace_tests --gtest_filter=TraceTest.stumble_guys Bug: b/296557360 Change-Id: Iebf81920eaaf8a3b52a3ffed0027aeb01ebed16b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794756 Commit-Queue: Mike Schuchardt <mikes@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Charlie Lao 3479f4a1 2023-08-16T14:43:35 Move more ProgramExecutable basic type vars to mBasicDataTypeStruct They can be just load/saved along with mBasicDataTypeStruct, no need to do them separately: mLinkedShaderVersions was previously only saved if it is separate program, now it is always saved along with mBasicDataTypeStruct, since the extra cost of a few more bytes of memcpy is ignorable, but will make it more consistent. mActiveUniformBlockBindings was previously updated instead of load, now it is load (and verified with ASSERT) mCanDrawWith was previously updated, now chnaged to load. Bug: b/275102061 Change-Id: I4e15b955606f34966d56b1c5e3d9d2f22ddeb14d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4786308 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Mike Schuchardt be60f879 2023-06-28T17:29:45 Workaround for tex buffer type mismatch In the event of a mismatch between a texture buffer format (eg GL_R32F) and the shader sampler type (eg usamplerBuffer), adjust the tex buffer format to match the sampler (eg GL_R32UI). Test: angle_end2end_tests \ --gtest_filter="TextureBufferTestES31.TexBufferFormatMismatch*" Bug: b/233119699 Change-Id: I3461bcecabfe1d96be6350c43c15b32d35265b23 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4769137 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao c34f83d9 2023-08-16T11:53:27 Group all ProgramExecutable basic data type members into a struct So that we can load/save with a simple memcpy. Bug: b/275102061 Change-Id: I178404fd72b615174a7a0412ea5482ae2bea2f80 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4785567 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Amirali Abdolrashidi cf2c9c56 2023-08-17T10:45:51 Vulkan: Add VMA 3.0 support in ANGLE * Updated the VMA hash in the dependencies to the 3.0 version. * Updated ANGLE_VMA_VERSION in the build_override GN file to 3.0. * The ANGLE_VMA_VERSION in the root BUILD.gn is unchanged. * The flags and thresholds for the buddy algorithm are only used when the used VMA version is less than 3.0. * The general algorithm is used for all cases for VMA 3.0. Bug: b/295208838 Change-Id: I00a95a2c2513112f8888c40931da4e2e5db97e2b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777337 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Mark Lobodzinski d85de0e9 2023-08-09T14:15:56 Capture/Replay: Add optional replay of trimmed resources This CL: - Adds '--include-inactive-resources' option to angle_trace_tests - Removes the 'trim-enabled' option - Outputs all previously trimmed shaders/programs to trace file in a new Setup function, SetupReplayContextSharedInactive() which is executed only if the new option is specified - Modifies CaptureTest to add inactive resources, but does not set the include-inactive-resources flag Bug: b/296055694 Change-Id: I33b18d5da727d55c90c2012c2bf64b1413521429 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781552 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Yuxin Hu 88341a52 2023-08-15T18:07:42 Update deqp_gles31 test expectations files Skip below test on Pixel 4 vulkan backend only dEQP-GLES31.functional.atomic_counter.* Bug: angleproject:5185 Bug: b/224537784 Change-Id: Ibc8e93f2dbe483fa6ef07104d14eaeab9d069ead Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4782155 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Charlie Lao 5217beb2 2023-08-15T13:43:12 Reland "Tightly pack LinkedUniform by using int16_t" This is a reland of commit 152cf62b38874238095a91307e4ea9bcdedf8f46 Original change's description: > Tightly pack LinkedUniform by using int16_t > > There is a check of vector size when we link uniforms and the maximum > vector size is 4096 due to we clamp the maxUniformBlockSize to 64KB. In > reality, if we exceeds this number, program link will take really long > time and then hit failure. So there is no real need to keep all the > variables in 32 bit integer. This CL changes to 16 bit integer. Further, > sh::BlockMemberInfo and ActiveVariable data members are embeded into > LinkedUniform struct as well so that the unused variables can be removed > and data can be tightly packed. This also makes LinkedUniform easier to > maintain as a simple struct with basic data types. With this change, > LinkedUniform size is reduced from 108 bytes down to 60 bytes, 48 bytes > reduction. Given some apps has 200-ish uniforms, this CL reduces 48 > bytes x 200 = ~9K memory just for uniforms per program (which goes > through hash compute and decompression and file reads). > > Bug: b/275102061 > Change-Id: I7fae20f5b75f3239305e2094a992e3040b8c8e4c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754133 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: b/275102061 Change-Id: I1cdec9407e930608d3239a104dcbf77c8d8e2113 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791661 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov d85b2905 2023-08-15T16:50:03 Android: improve error message due to missing trace libs I think this only happens when angle_restricted_traces wasn't set in gn args, resulting in traces outside of the apk. Previously we'd get a confusing error about missing gen/tracegz... files, now we get this: I15:55:48.527742Z Syncing harry_potter_hogwarts_mystery trace (1/1) Error: missing library: libangle_restricted_traces_harry_potter_hogwarts_mystery.so Is angle_restricted_traces set in gn args? Also removed swallowing errors in _PushLibToAppDir, crashing seems better than running with out of date files. Bug: b/294861737 Change-Id: I5696f35a910f6db2310d90e112a83881af3a8f50 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781569 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuxin Hu d425a6bb 2023-08-15T17:20:32 Update deqp_gles3* test expectations Restrict below test failure expectation on vulkan backend, nvidia driver only: dEQP-GLES3.functional.rasterization.flatshading.* Add buganizer ticket to track the progress of below test failure investigation: dEQP-EGL.functional.color_clears*other dEQP-EGL.functional.render*other Bug: angleproject:3430 Bug: b/295394803 Bug: b/224537784 Change-Id: I14c064a55ab81764c7dc7e4bdb894c964bc46858 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4782154 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Charlie Lao 1e1c9d9d 2023-08-11T15:16:26 Pack and reduce Program::mProgramInput size Right now mProgramInput is std::vector<sh::ShaderVariable>. It really only need a subset of ShaderVariable struct. This CL adds a ProgramInput struct so that we can add data members that actually required. This CL also makes bools into bitfield and some variables to uint16_t to further compact the size. This CL also groups the data memebers other than string to basicDataTypeStruct which only contains basic data types and the entire struct is memcpied during program binary load and save. This not just reduces number of memcpy calls, but also improves reliability so that when someone adds a new member into the struct, it will automatically load/save correctly. Bug: b/275102061 Change-Id: Ic055c986453ed46e56057a0122c9926245fef4d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776267 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Roman Lavrov 124e90af 2023-08-17T13:07:46 Retrace: copy get_min_reqs data over when upgrading Bug: angleproject:7639 Change-Id: I9a6e3a5ca75d6dcd5b537123948d2498e6bb47f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4789844 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 8e744e9f 2023-08-14T14:40:41 Android: support dEQP in android_helper and add bundle script Example: autoninja -C out/Android angle_deqp_gles31_tests && (cd out/Android; ../../src/tests/run_angle_android_test.py --suite=angle_deqp_gles31_tests --gtest_filter='dEQP-GLES31.functional.image_load_store.3d.*') For angle_deqp_bundle.py example usage see comments at the top of the file. Note: this change is not supposed to have any impact on CI. dEQP tests are still ran using Chromium's test runner, not android_helper. Bug: b/293590167 Change-Id: I605102ebea8b135f3239ffac012ce5dc13e84943 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776109 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev aa8d60aa 2023-08-14T00:00:00 D3D11: Normalize blend state for MIN/MAX operations Use default blend factors for MIN/MAX operations to reduce the number of unique keys and to avoid D3D11 state allocation failures. Fixed: angleproject:8305 Change-Id: I6abcf93240653de8d7d8e174c1f8109d12de63e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776071 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 4ba4af61 2023-08-17T11:28:18 Revert recompile blocking on link Causing timeouts on some platforms. An alternative implementation will follow. This change also reverts two changes that depend on it: Vulkan: Move SPIR-V set up to link job 10f54902e816fa7e4cf314384e00590e2b9bfa1d. Vulkan: Move default uniform init to link job d8cd4dcdc9c55c88f030f7fca41357e99e600ed2. Bug: angleproject:8297 Change-Id: I9a258460e7bcaeac214be5e63c16c20681e0bcde Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4789843 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Vivian Pao 9f48f931 2023-08-16T06:38:15 Revert "Tightly pack LinkedUniform by using int16_t" This reverts commit 152cf62b38874238095a91307e4ea9bcdedf8f46. Reason for revert: Suspect cause of failure in for several Linux MSan Tests, e.g. https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20MSan%20Tests/42403/overview https://ci.chromium.org/ui/p/chromium/builders/ci/WebKit%20Linux%20MSAN/22174/overview https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20MSan%20Tests/42403/overview Original change's description: > Tightly pack LinkedUniform by using int16_t > > There is a check of vector size when we link uniforms and the maximum > vector size is 4096 due to we clamp the maxUniformBlockSize to 64KB. In > reality, if we exceeds this number, program link will take really long > time and then hit failure. So there is no real need to keep all the > variables in 32 bit integer. This CL changes to 16 bit integer. Further, > sh::BlockMemberInfo and ActiveVariable data members are embeded into > LinkedUniform struct as well so that the unused variables can be removed > and data can be tightly packed. This also makes LinkedUniform easier to > maintain as a simple struct with basic data types. With this change, > LinkedUniform size is reduced from 108 bytes down to 60 bytes, 48 bytes > reduction. Given some apps has 200-ish uniforms, this CL reduces 48 > bytes x 200 = ~9K memory just for uniforms per program (which goes > through hash compute and decompression and file reads). > > Bug: b/275102061 > Change-Id: I7fae20f5b75f3239305e2094a992e3040b8c8e4c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754133 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: b/275102061 Change-Id: Id344e306307553731097f06edafc40bfeb73ff80 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4780494 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 5d2a1749 2023-08-17T09:52:57 Add an assert that capture_tests isn't supported on Android Bug: b/286067106 Change-Id: I3657faa7e2733ad28d1db844cb74e5224a6f47c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4790522 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Steven Noonan be7ab480 2023-08-10T12:04:45 gles: disable MSRTT on Windows/NVIDIA The angle_end2end_tests for MSRTT fail on Windows/NVIDIA/GLES, at least on driver version 536.99. Let's add Windows NVIDIA to the list of known bad configurations for disableMultisampledRenderToTexture. Bug: angleproject:8304 Change-Id: Ic102881bb6d483d5ff2bd0e86a07bf5fe3683fcb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4771740 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 59b0c7d7 2023-03-27T10:10:11 Add regression test for VVL AlphaToCoverage bug https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5520 Bug: b/264062978 Change-Id: I0619cb28495c16d0d8d83635ad7a93f0c47cea6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374098 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Shahbaz Youssefi 78de02ab 2023-08-16T15:23:23 Warn only once for shader recompile during link Bug: angleproject:8297 Change-Id: Ia6ac89e4c474ff51c36fcc3506d9178f6a4aedaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4785947 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi ba41a4d8 2023-08-16T13:52:57 Suppress parallel-link tests on Asan/Windows/SwiftShader They are flaky with no clear reason. Bug: angleproject:8306 Change-Id: I1331c6d792417edccad6b337e55b3816df2c2f12 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4783055 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 4fffc993 2023-08-15T14:10:58 Gold tests: add temporary logging of angledata hashes Should allow us to determine whether corruption happens between CAS and local files on bots or something's wrong with the test harness. Bug: angleproject:8307 Change-Id: I8a599777a38d7a1b5c56143eb8d02829895175a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777836 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Roman Lavrov <romanl@google.com>
Charlie Lao 152cf62b 2023-08-15T13:43:12 Tightly pack LinkedUniform by using int16_t There is a check of vector size when we link uniforms and the maximum vector size is 4096 due to we clamp the maxUniformBlockSize to 64KB. In reality, if we exceeds this number, program link will take really long time and then hit failure. So there is no real need to keep all the variables in 32 bit integer. This CL changes to 16 bit integer. Further, sh::BlockMemberInfo and ActiveVariable data members are embeded into LinkedUniform struct as well so that the unused variables can be removed and data can be tightly packed. This also makes LinkedUniform easier to maintain as a simple struct with basic data types. With this change, LinkedUniform size is reduced from 108 bytes down to 60 bytes, 48 bytes reduction. Given some apps has 200-ish uniforms, this CL reduces 48 bytes x 200 = ~9K memory just for uniforms per program (which goes through hash compute and decompression and file reads). Bug: b/275102061 Change-Id: I7fae20f5b75f3239305e2094a992e3040b8c8e4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754133 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Alexey Knyazev 59f158c1 2023-08-10T00:00:00 GL: Add explicitFragmentLocations workaround Some drivers produce incorrect results when a fragment output has an implicit location and gl_SampleMask[] is written to. Fixed: angleproject:8308 Change-Id: I615952ef61b1cb611984ec7defb189d89ab3281c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777702 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi 29aae8ac 2023-08-14T15:33:16 Vulkan: Don't access the XFB object during link The descriptor set layout set up for XFB emulation lived in TransfromFeedbackVk, but did not access anything in that object at all. More importantly, it doesn't make any sense to look at the current XFB object when linking a program. Bug: angleproject:8297 Change-Id: I8bd0e747b7d3e3783ef053f20378cc42d2c1d997 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4774786 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi 10f54902 2023-08-09T17:21:20 Vulkan: Move SPIR-V set up to link job Bug: angleproject:8297 Change-Id: I2c7eb0281d181560c8fa3ace007b1e547b6cf18e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4764619 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Shahbaz Youssefi d8cd4dcd 2023-08-09T16:51:13 Vulkan: Move default uniform init to link job Bug: angleproject:8297 Change-Id: I5bab916f452439d92afa65b9172574000ee0b587 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4762838 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Cody Northrop f4e5c327 2023-08-03T13:48:51 Tests: Upgrade blade_and_soul_revolution Created with: export TRACE_GN_PATH=out/Debug export TRACE_NAME=blade_and_soul_revolution src/tests/restricted_traces/retrace_restricted_traces.py \ upgrade $TRACE_GN_PATH retrace-wip -f $TRACE_NAME Bug: b/291929395 Bug: b/294882956 Change-Id: I7b1e721c5a125fa695fffa6c83dd0418d5331d91 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4760425 Reviewed-by: Roman Lavrov <romanl@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 2fd33fc4 2023-07-17T17:07:52 Android: Make .gz sync faster by only checking last bytes In particular, some angledata.gz are hundreds of megabytes, which results in multiple seconds spend on some traces which adds up to a few minutes when running all traces. Gzip format includes an 8-byte trailer with the CRC-32 and the length of the uncompressed data https://en.wikipedia.org/wiki/Gzip#File_format Instead of checking hash(file) check hash(tail(file)). Check more than just 8 bytes (arbitrarily picked 4096) so that in a rare event of a collision we're still likely to see different bytes as compressed streams tend to diverge when data changes. This reduces the already-fully-synced sync from ~130s to ~60s in my tests. Bug: b/276742336 Change-Id: I899b80ac90ef4def498c8cb52d6b096d8b1ef826 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4691962 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 424f43e4 2023-08-11T17:07:16 Prevent shaders from recompiling while a link job is in progress This will prevent a guarantee that link jobs can take further advantage of. In particular, a good chunk of the link job is done serially and under the share group lock due to this recompile-while-link issue. After this change, that is no longer a problem, and most of the link can be made lockless/parallelized. Bug: angleproject:8297 Change-Id: Ic41ac62fb8c40131a69cd90fa9430584964677fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776338 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 61a5707f 2023-08-11T12:51:21 Load/Save ShaderVariableBuffer::memberIndexes in one memcpy ShaderVariableBuffer::memberIndexes is std::vector<unsigned int>, and can be quite huge (164 on some programs in blade_and_soul_revolution). Right now it is calling readInt for individual index and then push_back. This causes vector to be copied as it grows size. This CL makes one memcpy for entire vector and increase size only once. Bug: b/275102061 Change-Id: I983ad289b126dbfd430cf94a3772c2bfd93cb1c6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4775835 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 745023ef 2023-08-14T10:47:11 Vulkan: Ensure mComputeDirtyBits is set for potential submission. When ContextVk::flushOutsideRenderPassCommands is called and we run out of serial numbers reserved for outsideRPCommands (which means we have an already started renderpass)., we will call flushCommandsAndEndRenderPass so that we can have new queue serials for both renderPass and outsideRP commands. When this happens, the current bug is that we will not add mNewComputeCommandBufferDirtyBits to mComputeDirtyBits. If another thread comes in did the submission, and then this context calls dispatchCompute again without any state change, we will get a new primprary command buffer without dirty bits for the new command buffer. This CL ensures we always add mNewComputeCommandBufferDirtyBits immediately after mRenderer->flushOutsideRPCommands call. Bug: b/295533354 Change-Id: I1c672310b3b00cd9be25b5ee55a0a060239102a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4778445 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 1db320c8 2023-08-08T13:31:04 Docs: Update steps for using experimental CIPD Bug: b/294882956 Change-Id: I2bcdd1874cbf44fac939d43cebd19b3e8903927b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4763611 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 9d7bddc1 2023-08-03T16:46:41 Trace Replay: Allow screenshots of all frames As part of upgrading our traces to the latest format, we want to ensure we get the same rendering results for all frames, including after Reset. To do this, add the ability to pass -1 as the frame to save: angle_trace_tests --gtest_filter=TraceTest.blade_and_soul_revolution \ --use-angle=swiftshader --max-steps-performed 200 \ --screenshot-dir retrace-wip --screenshot-frame -1 In the above solution, there are 100 frames in the trace, but we'll get 200 screenshots (two loops). Bug: b/294882956 Change-Id: I9169403fe716bbe3ea9ba66ce36dfd5a0c58937b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4760424 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Kenneth Russell d48a0d59 2023-08-11T16:57:23 Metal: optimize emulated texture formats. Optimize the following aspects of emulated texture formats like luminance, luminance-alpha and RGB: 1) Redundantly clearing the emulated channels in the texture, for example the alpha channel in RGB textures. If TexImage2D redefines the texture and it hasn't changed format, for example, it's not necessary to re-fill the emulated channels. 2) Clearing the emulated channels was being done on the CPU. Refactor PreferStagedTextureUploads to allow InitializeTextureContents to take the GPU clearing path for emulated textures assuming the texture is renderable. 3) Row-by-row data repacking and upload was allocating a staging buffer for each row. Forcibly disable staging buffers on the row-by-row code paths. Zoom's web client performs well on ANGLE's Metal backend on Intel GPUs with these optimizations. Fixed: chromium:1472087 Change-Id: Ie8b1e9e64fcc82797de76dd07958dd0a5aaa0203 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4771988 Auto-Submit: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi f11c972b 2023-08-04T15:06:39 Update requiredFlags use for VMA image allocations For the OOM fallbacks, we currently remove bits from the required bits when device memory allocation is no longer possible. In doing so, allocating on the device has become a strong preference rather than a requirement. Therefore, we change this method a bit in this CL. * Removed the device-local bit from the required flags when calling allocateAndBindMemory(). * preferredFlags is now used in lieu of requiredFlags initially within allocateAndBindMemory() to signal to the VMA to prioritize allocating on the device. If it fails, we use requiredFlags for the fallback. Bug: b/280304441 Change-Id: Id47a224cd74dacd3fb12d4fbfd815d8cefc016c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4753758 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 16cfa28e 2023-08-08T22:08:24 Vulkan: Basic infra for parallel link This change moves pipeline warm up to a parallelizable task, mostly as an exercise to put in the infrastructure for parallel link in the Vulkan backend. Follow up changes will move more of the link step to this task. The end goal is to be able to make the link task independent of ContextVk, which would allow it to be run as an UnlockedTailCall, even if not using a worker thread. Bug: angleproject:8297 Change-Id: I17047162b2a41f0d681d9e3ee33f2e0239b4280d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4764231 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 394699d3 2023-08-10T10:28:01 tests: skip SwiftShader tests when building without SwiftShader If we are building without SwiftShader, we shouldn't be forced to add a gtest_filter of "-*SwiftShader*" in order to run the various tests. Bug: angleproject:8291 Change-Id: Ic3513445d5d4bb402535a6f41bba818c0d15fd7a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4769826 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Kenneth Russell 237ff2b7 2023-08-11T14:18:38 Fix assertion failure with EGL_FOREVER_KHR. Calling eglClientWaitSync passing EGL_FOREVER_KHR overflows std::chrono and causes an assertion failure. This prevents optimization of Chromium's backpressure fences. Clamp the internal wait value to 1 day. Bug: angleproject:8301 Change-Id: Idfc400351204dee648723a8d951ade7e56c25cb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4776162 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kenneth Russell <kbr@chromium.org>
Alexey Knyazev 6092e0b7 2023-08-10T00:00:00 D3D11: Ensure that clip depth mode is synced Syncing clip depth mode driver uniform should not depend on a viewport state. Bug: angleproject:6554 Change-Id: I6ff2549a88fe3795eef20acfc48d0e945f19c4e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4775599 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 4a195ce0 2023-08-10T11:28:31 Vulkan: Fix SPIR-V id assignment to user-defined webgl_* names The code was incorrectly assuming that webgl_* names are only from ANGLE variables. An explicit check that the symbols are AngleInternal was missing. Bug: b/287166117 Change-Id: Ib8140cfabd74000492d12c11163f318a9ec3b98f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4770236 Commit-Queue: Solti Ho <solti@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Solti Ho <solti@google.com>
Steven Noonan ffe81dd3 2023-08-03T14:53:32 Vulkan: allow opt-in to MSRTT emulation via overrides The existing enableMultisampledRenderToTexture feature combines conditions for device feature support and the policy decision of whether to allow MSRTT emulation. This change splits it into two features, allowing application developers to control the policy condition for the emulation path without impacting the device capability checks. Bug: angleproject:8291 Change-Id: Ic1525c878906b10df777c582e44b931028aae928 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749525 Auto-Submit: Steven Noonan <steven@uplinklabs.net> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan 833f7f69 2023-08-09T10:49:51 Vulkan: improve XFB feature dependency checks Some features need to account for the possible override of supportsTransformFeedbackExtension == false. Since we now frontload the overrides, we also can remove the explicit overrides for the dependent features in TransformFeedbackTest. Bug: angleproject:8291 Change-Id: I0ec54dc0fce440ef3e7bfe9987d0ea19fb9dafaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4763096 Auto-Submit: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan f395f34b 2023-08-03T13:58:43 features: frontload feature overrides This allows us to have features that depend on the state of other features more reliably. For example, let's say you have two features: ANGLE_FEATURE_CONDITION(&mFeatures, allowX, (benefitsFromX || isSpecificHardware) && !isBadHardware); ANGLE_FEATURE_CONDITION(&mFeatures, supportsX, hardware.featureXSupported && mFeatures.allowX.enabled); Before this change, if you overrode allowX, the override would be applied too late for the supportsX test. This also helps with disabling dependent features via overrides. For example, if you disable "supportsRenderpass2", it will also disable features depending on it, such as "supportsDepthStencilResolve" and "supportsFragmentShadingRate". By frontloading the feature overrides, we can have cross-dependencies between "feature supported on this platform" and "allow this feature by policy". Bug: angleproject:8291 Change-Id: Id6da2c89428fa896d677fe8d5a41369277a21b31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749524 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 7c69116f 2023-08-08T10:14:47 Vulkan: Fix data race with DynamicDescriptorPool Right now DynamicDescriptorPool::destroyCachedDescriptorSet can be called from garbage clean up thread, while simultaneously accessed from context main thread, and data race will happen and cause bugs. This can only happen when the buffer is not being suballocated. In this case, suballocation owns the bufferBlock and bufferBlock gets destroyed when suballocation is destroyed from garbage collection thread. If buffer is suballocated, the shared group owns pool which owns bufferBlocks and they gets destroyed from shared group with the share group lock. This CL avoids this race problem by release the shared cacheKey when the buffer is released, while we still had the shared group lock. Bug: chromium:1469542 Change-Id: Ic1f99e6b6083d63e4efb9c3f408921da62c006ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4761365 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang ae8a5cfd 2023-08-09T12:00:53 GL: Accept more config options when creating the EGL context Some drivers fail to find any configs in ANGLE but succeed with Chrome's config searching. Widen ANGLE's config searching to include 565 configs and configs without depth stencil. Refactor the config search logic to be used for both backend context and mock pbuffers instead of hard-coded pbuffer config. Bug: chromium:1442132 Change-Id: I52378ec66542ec7aa56849ec8470f8eadb4abf58 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4764230 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org>
Yuxin Hu a990ba34 2023-08-02T17:21:00 Fix write out of bounds on non robust contexts crashes dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds_non_robust.reset_status.writes.* tests are failing, because the test expectes EGL_SUCCESS upon eglMakeCurrent(EGL_NO_CONTEXT), regardless of whether the context was lost. This CL: 1) Changes the validation function of eglMakeCurrent: if the EGLContext passed to eglMakeCurrent is EGL_NO_CONTEXT, do not return EGL_CONTEXT_LOST even if the context is already lost. 2) Adds a lost context check in checkOneCommandBatch. If the context is lost, do not check fence status and assume all of the vulkan commands have finished execution, so that we can properly destroying all the resources before destroying the context. 3) Changes the GL error code from GL_INVALID_OPERATION to GL_CONTEXT_LOST when there is a vulkan device lost. Bug: b/286921997 Bug: b/289544394 Change-Id: I91e8a4105f0d7a3ec3b59bae58da80bc64ffa94a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4728466 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Steven Noonan fa3ecccb 2023-08-09T10:48:36 Vulkan: make fragment shading rate depend on renderpass2 The extension depends on renderpass2 and will raise a VVL failure if it's not available and enabled. Note that this doesn't yet work as intended if you only override supportsRenderpass2=false. A subsequent commit will fix this. Bug: angleproject:8291 Change-Id: I6843b342909fb9000ebdcea80e006670c865f858 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4763095 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Commit-Queue: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi df76f5b1 2023-08-08T15:13:54 Respect KHR_parallel_shader_compile for program link Parellel shader compilation was using the single-threaded vs multi-threaded pool appropriately, while program link was always being multi-threaded. This change makes sure the program link tasks uses the same pool as shader compilation per KHR_parallel_shader_compile. Bug: angleproject:8297 Change-Id: I0508617678a6e875fc0719a2d447cf1a9c5ca40f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4762086 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 164ac246 2023-08-08T15:13:10 zero-initialize all memory in LinkedUniform. LinkedUniform is serialized directly, ensure that any padding inserted into the struct is zero so there is no chance of uninitialized reads during serialization. Bug: b/275102061 Bug: chromium:1470644 Change-Id: If6b9f579938019c7e16fb306ed3b7d839953f6d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4762085 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 2d87c31d 2023-08-09T07:47:20 Revert "Metal: initialize std::arrays in mtl_render_utils" This reverts commit c40d31b02690788cf61f93d71bbe094ddbb1a004. Reason for revert: Invalid rationale, it does not solve the problem. std::array does run the default constructors of the AutoObjCPtrs held in them. Original change's description: > Metal: initialize std::arrays in mtl_render_utils > > The std::array default constructor does not initialize the memory. > This leads to uninitialized access in mtl_render_utils *Utils. > > Fix by initializing them. > > Bug: angleproject:8293 > Change-Id: I597df067f3c19907a038bb4899a178734158302c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4756783 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: angleproject:8293 Change-Id: Ibacacd70fc196b5ecb3d0bc971d6565f7f578d4c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4765207 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Charlie Lao 719165c8 2023-08-04T12:13:37 Remove "const UniformTypeInfo *typeInfo" from struct LinkedUniform This is a cached pointer to the const kInfoTable. There isn't much of performance benefit to cache here compare to directly retrieve from the table. This cached pointer is removed in this CL, which means we do not need to update the pointer in the ProgramExecutable::load(). This and a few earlier CLs that attempt to do memcpy for entire mUniforms reduced average frame time of blade_and_soul_revolution app trace 3%, from 4.3359 ms to 4.2066ms on pixel 7 pro. Bug: b/275102061 Change-Id: I6fd34d665234e3a5cc85344924049bf5b13aaa80 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4753933 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>