|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|