|
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>
|
|
c40d31b0
|
2023-08-07T12:33:42
|
|
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>
|
|
d1e26fa2
|
2023-08-04T11:07:25
|
|
gpu_info_util: Close X11 display after usage
This ensures that the X11 display connection won't leak if
GetNvidiaDriverVersionWithXNVCtrl gets called multiple times.
Bug: angleproject:8294
Change-Id: Id9fe8e6b6d5524965c1638841af88416fe28c76a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749333
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f7d7be8d
|
2023-08-04T14:16:38
|
|
Metal: upstream "UBO convert only whole block".
Authored by Dan Glastonbury; reviewed by Dean Jackson.
This upstreams https://commits.webkit.org/264375@main .
OpenGL doesn't guarantee that the buffer backing uniform blocks needs
to be a multiple of the block size. When converting OpenGL layout
blocks to Metal layout, ConvertUniformBufferData is rounding up the
size of the backing buffer to a multiple of the block size which leads
to reading out of bounds.
To ensure we don't read outside the source buffer, this change
replaces calls to `memcpy` with `memcpy_guarded` which accepts a
pointer to the limit of available data and copies as much data as is
available, writing zeroes for any unavailable amount.
Conversion of bools didn't use memcpy, so the raw pointer is checked
against maxSrcPtr and only dereferenced if valid, otherwise zero is
used.
This has been tested with ASan and UBSan enabled against the OpenGL
dEQP tests for Uniform Buffer Objects in ANGLE.
Fixed: angleproject:8292
Change-Id: I0d472277889f073e54a9049f01bc04f6965a7b68
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754175
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Auto-Submit: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
e50d3876
|
2023-08-04T14:47:41
|
|
Vulkan: Retain loadOp when there is a resolve attachment
Rendertargets with resolve attachments cannot optimize away loadOp
Load or Clear even if they are marked ResourceAccess::Unused and
storeOp is RenderPassStoreOp::DontCare.
Bug: angleproject:4836
Bug: angleproject:5981
Tests: ImageTest.SourceAHBTarget2DMSRTTInteraction*
Change-Id: I39ec67a457de6876ed0bd47d66a963cc59fab064
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4753735
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d1117834
|
2023-08-04T10:48:22
|
|
Simplify struct LinkedUniform a bit more
In earlier CL crrev.com/c/4740298, we added mFixedSizedData structure to
group the data memebrs that can be memcpy-able into one variable, so
that we can memcpy that. Since then, we have made entire LinkedUniform
struct memcpy-able (crrev.com/c/4750443 is doing memcpy of entire
std::vector<LinkedUniform>). Thus, there is no longer a need for
mFixedSizedData. This CL removes that.
This CL also removes isStruct and inArrayOfArrays from LinkedUniform,
since they are always false.
This CL also removes some unused APIs from LinkedUniform.
Bug: b/275102061
Change-Id: I6ead3d8f179efc0d383352f7ac0efa6bf3dc8a1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4753932
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
41d27ec3
|
2023-08-03T18:06:08
|
|
load/save entire std::vector<LinkedUniform> with one call.
Now LinkedUniform is a simple data struct with only fundamental types,
we can load the entire vector at once.
Bug: b/275102061
Change-Id: I7c030677d02517f86d960de85b0e7ae2c916a26e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4750443
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
eff12c1e
|
2023-08-03T12:10:05
|
|
Move name and mappedName out of LinkedUniform struct
These are std::string objects. This CL moves these two data out of
LinkedUniform and into ProgramExecutable class, side by side with
mUniforms. With these two data moved out, LinkedUniform is now a simple
struct with basic data types, and I can memcpy entire vector of
uniforms.
Bug: b/275102061
Change-Id: I9ae13e7daca85f8e5f3662a4718f190bebb5f5d2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4750442
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
4963febf
|
2023-08-02T16:52:52
|
|
Vulkan: Remove type indices with host-visible bit
Currently, the memory type index for VMA image allocations are
selected and returned by the API. However, it could potentially
choose a type index with more flags than required or preferred,
and ignore the index with exactly the flags we want. For example,
it could pick a type index with the host-visible property flag,
even if is unnecessary and a type index with a device-local flag
would suffice.
Using memoryTypeBits during the allocation allows us to filter
the unwanted type indices out and use the other indices initially.
* Added a new function to RendererVk.cpp to try to remove the memory
type indices with the host-visible bit for VMA image allocations
if they should be device-local.
* GetMemoryTypeBitsExcludingHostVisible()
* It also removes the indices with the protected bit if it is not
required.
* If the allocation is unsuccessful, the fallback resets the field
for memoryTypeBits, allowing all available type indices to be used
for the allocation.
* Added memory type index to the pending allocation log during OOM.
Bug: b/294085818
Change-Id: Icc1b218df075170a6baa7ec57c837ed59cd4fa96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4743604
Reviewed-by: Kaiyi Li <kaiyili@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9c588180
|
2023-08-02T16:39:44
|
|
Change LinkedUniform::arraySizes from std::vector to unsigned int
We always flatten multiple dimensional arrays in the uniform to a one
dimensional array, so the arraySizes can be simplified to unsigned int
instead of a vector. With this, we can now move the arraySize into the
simple mFixedSizeData struct and the normal memcpy will cover the
load/save.
Bug: b/275102061
Change-Id: I24c026f783b755f7aa691a5db5746b6309a21227
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4735275
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
d2a6b2a0
|
2023-08-04T14:15:11
|
|
Use offscreen DisplayVk on ChromeOS
Currently, we always use DisplayVkHeadless on ChromeOS which can
fail if the drivers do not support VK_EXT_headless_surface (like on
Intel). At the end of the day, CrOS never really uses Vulkan WSI, so
it shouldn't need a WSI extension anyways.
This CL introduces a simple DisplayVkOffscreen that requires no WSI.
We then configure CrOS to use this new DisplayVk.
Bug: b/292249282
Change-Id: I1fcbb48d187eb656c6e03bc7ac7b15ac8ad0a4ae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4752416
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Brian Ho <hob@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f4e901b4
|
2023-08-07T10:52:09
|
|
Validate program binaries are the same CPU bit-ness.
ANGLE's program binary serialize/deserialize logic uses size_t and
other non-fixed sized integer types. This can cause crashes if the
CPU architecture changes between saving and loading of binaries.
Bug: chromium:1470074
Bug: angleproject:8223
Change-Id: Ib2529e0e6e66e28a184aa1ec94075e343e1f1d5e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4752265
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8ba04f1c
|
2023-08-05T00:48:35
|
|
Metal: disable fastmath less often.
Stop disabling fastmath if atan is used in the shader. Application
developers will surely prefer the significant performance improvement
of the fastmath optimizations over corner-case differences in
precision.
Make disabling fastmath more precise: only if it's forcibly disabled
as a driver bug workaround, or if the shader uses invariance and
preserveInvariance is not available.
Suppress the test:
dEQP-GLES[23].functional.shaders.invariance.lowp.loop_2
which fails when fastmath is enabled for shaders using atan and
invariance.
Fixed: chromium:1320111
Change-Id: I6e33b14b1d05faedc15373f24af3e22a4074a35b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4754018
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
30bd0149
|
2023-08-02T08:06:47
|
|
ANGLETest: fix crashes when switching between GLESDriverTypes
The condition for mLastLoadedDriver was incorrect. We never initialized
it, so it never switched to the correct EGL implementation when
alternating between tests using different GLESDriverTypes.
This was reproducible with:
angle_end2end_tests.exe --gtest_filter="SimpleOperationTest.DrawSingleSampleWithAlphaToCoverage/ES3_D3D11:SimpleOperationTest.DrawSingleSampleWithAlphaToCoverage/ES3_ANGLE_Vulkan_Secondaries_SwiftShader:SimpleOperationTest.DrawSingleMultiSampleWithAlphaToCoverage/ES3_D3D11"
The above does three tests:
- D3D11 test (using GLESDriverType::AngleEGL)
- Vulkan test (using GLESDriverType::AngleVulkanSecondariesEGL)
- D3D11 test (using GLESDriverType::AngleEGL)
What would happen is this:
- the first test would initialize a D3D11 EGLDisplay
- the second test would switch the API entry points to use
AngleVulkanSecondariesEGL
- the third test begins reuses the first test's EGLDisplay, but
fails to notice the GLESDriverType change and uses the
AngleVulkanSecondariesEGL entry points
- when eglQueryString is called with the D3D11 EGLDisplay, the
VulkanSecondaries library has no knowledge of this display and
fails the call
Bug: angleproject:8286
Change-Id: I1f22060e2c5725dad5e410a76385e2802b627844
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749296
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
22438ad8
|
2023-08-02T14:01:45
|
|
Embed ActiveVariable into BufferVariable and ShaderVariableBuffer
This CL embeds ActiveVariable into BufferVariable and
ShaderVariableBuffer struct instead of subclass. This allows us to
remove the virtual function of ~ActiveVariable(), which means
ActiveVariable is a simple struct with basic types and memcpy can be
used for load/save. Thus, in this CL, I also moved activeVariables to
LinkedUniform::mFixedSizeData structure and let memcpy handle the
load/save.
Bug: b/275102061
Change-Id: I8d21080cfdd72d4d22cef927d136ca428d9b12e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4722265
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ee019f58
|
2023-08-01T17:03:24
|
|
Group fixed sized data of LinkedUniform into a struct
Most of gl::LinkedUniform struct is a basic types and can be simply
initialized with memcpy. This CL groups these together and encapsulate
them with get APIs. The load/save is now a single memcpy for the entire
fixed size data structure of basic types.
Bug: b/275102061
Change-Id: I49120c06ec941c783790ac0ecb0ee314a4234b26
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4740298
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
7bb13226
|
2023-08-01T12:10:44
|
|
Pack booleans inside struct LinkedUniform into bitfields
Right now every bool is load/stored as integer, which itself is a
memcpy. This CL moves them into a bitfield and load/store with one
uint32_t, thus improves efficiency of cache load/save.
Bug: b/275102061
Bug: angleproject:8223
Change-Id: Id8e8e8861c8fcbd75dbef6056e4ff6c8ad2fc4a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4740292
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
2a950c63
|
2023-07-31T00:00:00
|
|
Adjust ANGLE_stencil_texturing specification
STENCIL_INDEX enum is not defined in GLES/gl3.h,
so the extension has to provide its value.
Bug: angleproject:8051
Change-Id: Ia383162afee8cdcffc1d68ddf833fbd91a87b1f0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4748399
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
34a99db4
|
2023-08-03T16:46:36
|
|
Metal: Check the full generated default shader in
Add the default MSL shader text in the repo.
Fix an error with include path setup to make the script runnable
from an arbitrary directory, for WebKit purposes.
WebKit would compile that to a compile-specific metallib and then
attach that metallib to the compilation as .h.
Current upstream behavior is to compile the metallib once few platforms.
Bug: angleproject:8284
Change-Id: Icbf7c0055718496cb380fad0b73d5b9b0d0abb0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4748400
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
1b94197a
|
2023-08-03T13:45:34
|
|
Metal: Enable fast math based on runtime OS version checks.
Chrome compiled with a recent SDK but a low minimum required OS version
so fast math was always disabled at compile time. Turn this into a two-
part check: Use macros to make sure preserveInvariance can be compiled
and @available to do the runtime OS check.
Fix the UseFastMathForShaderCompilation check. It was incorrectly
inverting two negative conditions.
Mark some dEQP precision tests as failing due to fast math. We would
prefer to have the performance improvement over some precision loss.
Bug: chromium:1468346
Bug: angleproject:8287
Change-Id: I31d9c732a12841cb4d0bc1a555ea1f1ea8a434fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4750199
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
dbae1804
|
2023-07-02T18:39:14
|
|
Display: remove redundant 'metal' ANGLE_DEFAULT_PLATFORM
This one is already handled only a few lines before.
Bug: angleproject:8285
Change-Id: Ib62ce6062551faf39360371c46a05f9cc4a70b07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749295
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
95f09c88
|
2023-08-01T20:48:45
|
|
Vulkan: Drop VkAHBFormatPropertiesANDROID for BLOB
VkAndroidHardwareBufferFormatPropertiesANDROID is only valid for
images.
Test: details in ag/24283178
Bug: b/293592961
Change-Id: I72077ceac867da8522620a67d81f7093efa591f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4739718
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Solti Ho <solti@google.com>
|
|
79973750
|
2023-07-27T17:53:24
|
|
Let UniformLinker uses its own struct instead of LinkedUniform
UniformLinker itself needs more detailed information than the final
linked uniforms. Right now they are using the same data structure. This
CL adds a new structure for linker to use. Since the linker data
structure is temporary, we never needs to load/save from cache, we have
more freedom here to use complex data types. The benefit of separate out
intermediate structure from LinkedUniform is that it allows us to
further simplify LinkedUniform structure without change much of
ProgramLinkedResource implementation. As result of this, this CL removes
field and outerArraySizes (both are std::vector type) from
LinkedUniform.
Bug: b/275102061
Change-Id: Ic1291b51b8906ac586a2f25eb1dbbe74eae8fdc5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727742
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f24ea41e
|
2023-07-31T11:12:44
|
|
Embed sh::ShaderVariable data member into gl::LinkedUniform
ProgramExecutable::load and save function is load/save each individual
data members. Uniform can be quite large as shown in some app traces and
this causes performance problem even when program memory has a cache
hit. This CL flattens gl::LinkedUniform structure by embedding
sh::ShaderVariable data members so that we can remove unrelated members
and also prepare for further optimization in future CLs.
Bug: b/275102061
Change-Id: I7c18cb73e359fba7cd6375b4b1635e9040ef140d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4735152
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
7b0c78ba
|
2023-07-28T10:00:28
|
|
Remove unused code in ProgramPipeline
shaderUniforms is set but never used.
Bug: b/275102061
Change-Id: Ided52748f6e8925cdbbb996d70966de2d1fc2c9a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727743
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
c95ffadf
|
2023-07-24T13:00:32
|
|
Perform Display terminate(InternalCleanup) from makeCurrent()
Current state:
- Call to `eglTerminate()` is canceled if there are Contexts current.
- All not current Contexts are invalidated in `eglTerminate()` call.
- Full Display termination will happen only when last Context is
actually destroyed in `eglDestroyContext()` or last active thread
terminates (Android only).
Problem:
- Context is not marked invalid after it is unmade from current when
`eglTerminate()` was already called.
- If `eglDestroyContext()` was called while context was current, it
will be destroyed when unmade from current - in this case actual
Display termination will NOT happen.
After this change:
- Context immediately invalidated after it is unmade from current when
`eglTerminate()` was already called.
- Full Display termination will happen after the last Context is unmade
from current (all Contexts are invalid).
Bug: angleproject:6798
Test: angle_end2end_tests --gtest_filter=EGLDisplayTest.ContextLeakAfterTerminate*
Change-Id: Idcce94b041649db58d3d879858fba99109347baf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4708328
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
959ccb96
|
2023-08-02T13:40:16
|
|
Add EGL_BAD_ACCESS validation into ValidateMakeCurrent
Current code does not generate EGL_BAD_ACCESS in `eglMakeCurrent()`
according to the specification:
- If context is current to some other thread, or if either draw or read
are bound to contexts in another thread, an EGL_BAD_ACCESS error is
generated.
Additional changes:
- replace `Context::getRefCount()` with `isReferenced()` for
consistency with added `Surface::isReferenced()` method.
- remove duplicate `ValidateSurface` call for the
`drawSurface` in case if `readSurface` is the same.
- remove duplicate `ValidateCompatibleSurface()` call for the
`readSurface` in case if `drawSurface` is different.
- Fix EGLContextASANTest.DestroyContextInUse test.
- Fix EGLContextSharingTestNoSyncTextureUploads.NoSync test.
Bug: angleproject:8282
Change-Id: I2af0d7f50019c2445b42279bdd0e0197dd8ad20f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742382
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
6c1bab07
|
2023-08-02T12:25:51
|
|
Add surface to eglAcquireExternalContextANGLE
Bug: angleproject:5509
Change-Id: I51284ae4dc865dc31d1c5540c24e1e0abb95fe0f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4743719
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
335c6b86
|
2023-08-02T00:00:00
|
|
D3D11: Do not specialize HLSL for multisampled rendering
Pass the required state as a driver uniform instead of
triggering fragment shader recompilation at draw calls.
Bug: angleproject:8097
Bug: angleproject:8131
Fixed: chromium:1468993
Change-Id: I15825c0522b29d48eb2c3b341ba96f139ef26460
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742579
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
cb9dd1c9
|
2023-08-01T14:48:40
|
|
Tests: Add Tesla trace
Test: angle_trace_tests --gtest_filter=TraceTest.tesla
Bug: b/294106875
Change-Id: Ice844dd989a29cbef5190acf077f0484f17c7e3f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4739721
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
01ee134b
|
2023-08-02T13:43:36
|
|
Revert "GL: Remove EGL_EXTERNAL_CONTEXT_SAVE_STATE_ANGLE"
This reverts commit 4e0250f1926d25e39023c4ad7862ed358a0ec4b6.
Reason for revert: Chromium change was reverted. crbug.com/1468956
Original change's description:
> GL: Remove EGL_EXTERNAL_CONTEXT_SAVE_STATE_ANGLE
>
> Now that Chromium no longer uses it.
>
> Bug: angleproject:5509
> Change-Id: Ibb8d9cdc4d67dad77ca50437423b18d81e838203
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4724768
> Reviewed-by: Peng Huang <penghuang@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:5509
Change-Id: Id8143b1715ec8162be9351437fbd34a2aa4c2e00
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742521
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d29f946d
|
2023-07-26T19:55:56
|
|
Reland "Fix ExternalImageTarget EGLImage race"
This is a reland of commit 8aa3ca9d177c0ed54926b769de7d0bce0f8482d3
Previous submission was reverted because of a failure in
Android's "testDrawingHardwareBitmapNotLeaking" test.
Bug was not in the reverted CL itself and is fixed by CL:
https://chromium-review.googlesource.com/c/angle/angle/+/4733831
Original change's description:
> Fix ExternalImageTarget EGLImage race
>
> Race may happen when ExternalImageTarget EGLImage is destroyed while its
> GLES Texture/Renderbuffer target is modified/destroyed.
>
> Fixed by providing `egl::Image` with `egl::ContextMutex` even when
> `context` is `nullptr`.
>
> This CL also changes `SharedContextMutex` merging rules when `mRank` is
> equal - now priority goes to the `lockedMutex`. This is done to prevent
> unnecessary `mRoot` update of Context mutex when merging with
> `egl::Image` only mutex.
>
> Bug: angleproject:6957
> Change-Id: I823e53b98f70ed3eaca191e8be5b168dc07899f6
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4720835
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Bug: angleproject:6957
Change-Id: Ia698dbea64b8d51ea78f3af6558efc7266f8bdc8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4732892
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d61a50c1
|
2023-07-31T15:09:08
|
|
Add "angle_enable_context_mutex_recursion" build option
Option is for Android Vulkan.
Fixes the recursion problem:
#00 pc 000000000004d69c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) (BuildId: dda896312b8ac9c639f6aeb0175b8a0a)
#01 pc 0000000000051e84 /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex(void volatile*, bool, int, bool, timespec const*)+144) (BuildId: dda896312b8ac9c639f6aeb0175b8a0a)
#02 pc 00000000000b41b4 /apex/com.android.runtime/lib64/bionic/libc.so (NonPI::MutexLockWithTimeout(pthread_mutex_internal_t*, bool, timespec const*)+236) (BuildId: dda896312b8ac9c639f6aeb0175b8a0a)
#03 pc 00000000003d8274 /vendor/lib64/egl/libGLESv2_angle.so (std::__Cr::mutex::lock()+12) (BuildId: 203fee8f1cfe9c18)
#04 pc 0000000000336494 /vendor/lib64/egl/libGLESv2_angle.so (egl::SharedContextMutex<std::__Cr::mutex>::doLock()+132) (BuildId: 203fee8f1cfe9c18)
#05 pc 000000000033668c /vendor/lib64/egl/libGLESv2_angle.so (egl::SharedContextMutex<std::__Cr::mutex>::lock()+124) (BuildId: 203fee8f1cfe9c18)
#06 pc 00000000001d6e08 /vendor/lib64/egl/libGLESv2_angle.so (EGL_ClientWaitSyncKHR+100) (BuildId: 203fee8f1cfe9c18)
#07 pc 00000000000674f0 /system/lib64/libEGL.so (android::eglClientWaitSyncKHRImpl(void*, void*, int, unsigned long)+112) (BuildId: c4698b8b366f6519dbd7bd3a5f6239f2)
#08 pc 0000000000086648 /system/lib64/libgui.so (android::BufferQueueProducer::dequeueBuffer(int*, android::sp<android::Fence>*, unsigned int, unsigned int, int, unsigned long, unsigned long*, android::FrameEventHistoryDelta*)+3240) (BuildId: ff35b91736084ee7c49efe908fb9f8f3)
#09 pc 00000000000e24fc /system/lib64/libgui.so (android::Surface::dequeueBuffer(ANativeWindowBuffer**, int*)+392) (BuildId: ff35b91736084ee7c49efe908fb9f8f3)
#10 pc 0000000000755770 /system/lib64/libhwui.so (android::uirenderer::renderthread::ReliableSurface::hook_dequeueBuffer(ANativeWindow*, int (*)(ANativeWindow*, ANativeWindowBuffer**, int*), void*, ANativeWindowBuffer**, int*)+80) (BuildId: 0ab7d7584ac800860c4d180557441d1b)
#11 pc 00000000000e0b48 /system/lib64/libgui.so (android::Surface::hook_dequeueBuffer(ANativeWindow*, ANativeWindowBuffer**, int*)+92) (BuildId: ff35b91736084ee7c49efe908fb9f8f3)
#12 pc 000000000002cc8c /system/lib64/libvulkan.so (vulkan::driver::AcquireNextImageKHR(VkDevice_T*, VkSwapchainKHR_T*, unsigned long, VkSemaphore_T*, VkFence_T*, unsigned int*)+280) (BuildId: 0c72f8685858f73fbb13fd68d401bba5)
#13 pc 0000000000266f08 /vendor/lib64/egl/libGLESv2_angle.so (rx::(anonymous namespace)::TryAcquireNextImageUnlocked(VkDevice_T*, VkSwapchainKHR_T*, rx::impl::ImageAcquireOperation*)+128) (BuildId: 203fee8f1cfe9c18)
#14 pc 000000000026495c /vendor/lib64/egl/libGLESv2_angle.so (rx::WindowSurfaceVk::acquireNextSwapchainImage(rx::vk::Context*)+140) (BuildId: 203fee8f1cfe9c18)
#15 pc 0000000000265800 /vendor/lib64/egl/libGLESv2_angle.so (rx::WindowSurfaceVk::doDeferredAcquireNextImageWithUsableSwapchain(gl::Context const*)+148) (BuildId: 203fee8f1cfe9c18)
#16 pc 0000000000267bb4 /vendor/lib64/egl/libGLESv2_angle.so (rx::WindowSurfaceVk::getBufferAge(gl::Context const*, int*)+196) (BuildId: 203fee8f1cfe9c18)
#17 pc 000000000034143c /vendor/lib64/egl/libGLESv2_angle.so (egl::Surface::getBufferAge(gl::Context const*, int*)+36) (BuildId: 203fee8f1cfe9c18)
#18 pc 000000000036c354 /vendor/lib64/egl/libGLESv2_angle.so (egl::QuerySurfaceAttrib(egl::Display const*, gl::Context const*, egl::Surface*, int, int*)+812) (BuildId: 203fee8f1cfe9c18)
#19 pc 00000000001d1674 /vendor/lib64/egl/libGLESv2_angle.so (egl::QuerySurface(egl::Thread*, egl::Display*, egl::SurfaceID, int, int*)+176) (BuildId: 203fee8f1cfe9c18)
#20 pc 00000000001d3658 /vendor/lib64/egl/libGLESv2_angle.so (EGL_QuerySurface+200) (BuildId: 203fee8f1cfe9c18)
Happens only on platforms that use "EGL_KHR_fence_sync" instead of
"EGL_ANDROID_native_fence_sync" for synchronization. Happens only on
specific Surface types, that using `EGLConsumer`/`GLConsumer`, such as
`SurfaceTexture`.
The Android's "testDrawingHardwareBitmapNotLeaking" test may be used for
testing the issue. Note: in order to reproduce, `SingleContextMutex`
must not be used by context. The "Fix ExternalImageTarget EGLImage race"
CL will achieve that.
To check what extension is used, call:
adb shell "dumpsys SurfaceFlinger | grep 'Sync configuration'"
Possible results:
Sync configuration: [using: EGL_KHR_fence_sync EGL_KHR_wait_sync]
Sync configuration: [using: EGL_ANDROID_native_fence_sync EGL_KHR_wait_sync]
Bug: angleproject:4354
Change-Id: I915a2c026b59af0a2098ae6b3300f773b29cbfbb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4733831
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5d4b3645
|
2023-07-31T14:04:01
|
|
Fix a missing symbol with ANGLE e2e tests
angle_end2end_tests has the same issue as CaptureRelayTests which was
fixed in https://crrev.com/c/4728461 where a symbol was not found during
link-time on Windows due to __declspec(dllimport).
Bug: chromium:1468150
Change-Id: Id943967b0f32d30ff69dfc013aafa69bd812ccaf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4735273
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6dc0c9d6
|
2023-07-31T22:54:03
|
|
Revert "Use DisplayVkSimple on ChromeOS"
This reverts commit b8ddba2a674158ec6135eda18c3371be84ad6ff7.
Reason for revert: Breaks Chromium
Original change's description:
> Use DisplayVkSimple on ChromeOS
>
> Currently, we always use DisplayVkHeadless on ChromeOS which can fail
> if the drivers do not support VK_EXT_headless_surface (e.g. Intel).
> This CL changes the default to use DisplayVkSimple which requires
> VK_KHR_display which is better supported. At the end of the day, CrOS
> never really uses Vulkan WSI, so the actual WSI extension used
> doesn't matter.
>
> Bug: b/292249282
> Change-Id: I0f8cfafa635405850cda97c84ad45d3f6aec5103
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727450
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Brian Ho <hob@chromium.org>
Bug: b/292249282
Change-Id: If3ab1a39cb86dae1bf0652ca16bba323f497fcc4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4734578
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Brian Ho <hob@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
4e0250f1
|
2023-07-27T10:51:07
|
|
GL: Remove EGL_EXTERNAL_CONTEXT_SAVE_STATE_ANGLE
Now that Chromium no longer uses it.
Bug: angleproject:5509
Change-Id: Ibb8d9cdc4d67dad77ca50437423b18d81e838203
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4724768
Reviewed-by: Peng Huang <penghuang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cb4b1f36
|
2023-07-31T14:32:41
|
|
Manual Roll VK-GL-CTS from e7b180ad5366 to 00cccd7cf562 (37 revisions)
https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/e7b180ad5366..00cccd7cf562
2023-07-28 jbolz@nvidia.com Remove early-outs that break
objectreservation counts in VulkanSC
2023-07-28 syoussefi@google.com Fix fence status check in
VK_EXT_swapchain_maintenance1 test
2023-07-28 jbolz@nvidia.com Fix extended_dynamic_state tests to run in
VulkanSC
2023-07-28 jbolz@nvidia.com Fix shaderexecutor and subgroup supported
stage checks
2023-07-28 rgarcia@igalia.com Test PGQ with the availability bit
2023-07-28 rgarcia@igalia.com Check Vulkan version before getting device
function pointers
2023-07-28 rgarcia@igalia.com Test dynamic depth clamp and static depth
clip
2023-07-28 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9
into vk-gl-cts/main
2023-07-28 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6
into vk-gl-cts/main
2023-07-21 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.3
into vk-gl-cts/main
2023-07-21 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9
into vk-gl-cts/main
2023-07-21 ziga@lunarg.com Add dynamic state stencil op tests with
multiple pipelines
2023-07-21 rgarcia@igalia.com Check acceleration structure creation does
not touch buffers
2023-07-21 rgarcia@igalia.com Test
VkDescriptorSetVariableDescriptorCountLayoutSupport
2023-07-21 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6
into vk-gl-cts/main
2023-07-20 aitor@lunarg.com Advance glslang to fix link error for ndk26
2023-07-14 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6
into vk-gl-cts/main
2023-07-14 rgarcia@igalia.com Test strides smaller than vertex attribute
sizes
2023-07-14 rgarcia@igalia.com Test RGBA expansion in vertex inputs
2023-07-14 rgarcia@igalia.com Vertex input attribute offset tests
2023-07-14 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6
into vk-gl-cts/main
2023-07-14 javed@igalia.com Add tests for 128b multisample color
attachments
2023-07-14 rgarcia@igalia.com Test queries with multiview and
availability bit
2023-07-14 dneto@google.com Test round-to-zero behaviour of
OpConvertFToU
2023-07-14 dneto@google.com Test round-to-zero behaviour of
OpConvertFToS
2023-07-10 slawomir.cygan@intel.com Fix checking support in cooperative
matrix test
2023-07-07 rgarcia@igalia.com Test sample shading with dynamic sample
counts
2023-07-07 ziga@lunarg.com Add more primitives generated query tests
2023-07-07 ewerness@nvidia.com Add testing for
VK_KHR_ray_tracing_position_fetch
2023-07-07 aitor@lunarg.com Add required defines for Android builds with
SDK33+
2023-07-07 piotr.byszewski@mobica.com Test pipeline statistics when
blitting
2023-07-07 mohd.faisal@arm.com Fix validation errors in
ext_shader_tile_image CTS
2023-07-07 michal.jakubek@mobica.com Removal of copying protected image
to host visible buffer
2023-07-07 rgarcia@igalia.com More dynamic rasterization sample count
tests
2023-07-07 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6
into vk-gl-cts/main
2023-07-05 ziga@lunarg.com Update vulkan-docs to current version
2023-07-04 slawomir.cygan@intel.com Build fix for MSVC C++
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll
Please CC angle-team@google.com,yuxinhu@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
Tbr: yuxinhu@google.com
Change-Id: Ib62a4c52e37902c8f605068f6ca1a786ae58bc49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4732743
Reviewed-by: Solti Ho <solti@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
19671376
|
2023-07-28T13:37:38
|
|
Reland "Search for system libvulkan on CrOS"
Currently, ANGLE searches in the "module" directory for libvulkan
during init on CrOS. The library doesn't exist at this location
(/opt/google/chrome/libvulkan.so), and we should instead just call
dlopen(libvulkan.so) to search the system library paths.
The original CL was reverted because it broke MSAN builds of
ChromeOS-on-Linux (CrOS UI that runs on a generic Linux machine).
The original CL caused these builds to use the Linux system Vulkan
loader library which is most likely not built with MSAN. This caused
MSAN violations when combined with an ANGLE built with MSAN [1]. The
reland fixes this issue by only using the system libvulkan on real
ChromeOS devices.
[1] go/msan#false-positives
Bug: b/292249282, chromium:1467779
Change-Id: Iafcd8d315a0baddcfbb847c3ad198f267887c8f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727448
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Brian Ho <hob@chromium.org>
|
|
d2236b58
|
2023-07-29T23:50:05
|
|
Support substituting translated shaders.
Add dumpTranslatedShaders and enableTranslatedShaderSubstitution
frontend ANGLE features, which allow ANGLE developers to prototype
optimizations and other transforms without fully implementing them in
the shader translator.
Tested on macOS with ANGLE's Metal backend, but should work with the
other source-level translator backends.
Add documentation for pre-existing substitution of shader sources, and
of translated shaders added in this CL.
Fixed: angleproject:8280
Change-Id: I24d5ef88a479b23e81cc8169fe813c263acfc71f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4731553
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
704469ca
|
2023-07-31T10:24:59
|
|
Remove unused BrokenClampThatShouldNotBeUsed()
It has no references.
Bug: chromium:1231569,chromium:1373621
Change-Id: Id1477100ed9ec4df28f7d28b09c9e04c1a49125c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4734693
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Lei Zhang <thestig@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
0d886b62
|
2023-07-14T11:24:53
|
|
Check that MRTSS bit is supported by format
Bit was added without checking ImageFormatProperties causing
failures in some end2end tests.
Bug: angleproject:8262
Test: Texture2DTestES3.TexStorage2D*/ES3_Vulkan*
Change-Id: I7f9a4ee7c14610ee239ab1f86e4ba2c649ce76b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4684549
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b8ddba2a
|
2023-07-28T14:30:53
|
|
Use DisplayVkSimple on ChromeOS
Currently, we always use DisplayVkHeadless on ChromeOS which can fail
if the drivers do not support VK_EXT_headless_surface (e.g. Intel).
This CL changes the default to use DisplayVkSimple which requires
VK_KHR_display which is better supported. At the end of the day, CrOS
never really uses Vulkan WSI, so the actual WSI extension used
doesn't matter.
Bug: b/292249282
Change-Id: I0f8cfafa635405850cda97c84ad45d3f6aec5103
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727450
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Brian Ho <hob@chromium.org>
|
|
7f6e5354
|
2023-07-31T13:02:35
|
|
Vulkan: Skip vertex conversion if the draw has 0 vertices.
If the draw call start vertex is beyond the end of the buffer, vertex
conversion will no-op and no conversion buffer is created. Just skip
the entire conversion process in this case and bind the empty buffer.
Fix GetVertexCount not taking 0 stride into account.
Bug: chromium:1464690
Change-Id: Iaffcd329595c3319fe9cd5317aef2402f9db6b1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4734811
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
faca95f7
|
2023-07-27T21:28:08
|
|
Fix memory leak destroying never current Context
Regression from the very old CL:
Fix gl::Context::unMakeCurrent crashes
https://chromium-review.googlesource.com/c/angle/angle/+/3017210
Memory leak may happen when releasing invalid Contexts in
`destroyInvalidEglObjects()`.
Bug: chromium:1171371
Change-Id: I282baa92cf3ce7faf1b4239c7ed4b85bd52543a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4732893
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
143fa68f
|
2023-07-27T00:00:00
|
|
Disallow read type conversions for signed 16-bit color buffers
Signed 16-bit color buffers should not be converted
to unsigned or 8-bit pixel types during readPixels
operations.
Bug: angleproject:8048
Change-Id: I27eaeb3d543732b5079bd53ef4fad1711ce3c3ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727392
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0abd6f54
|
2023-07-27T10:48:38
|
|
Vulkan: Enable dynamic state on working Android drivers
Fixes are flowing out in different channels and versions, so add
a bit of Pixel specific logic.
Test: angle_trace_tests, deqp
Bug: b/287318431, b/285196249, b/286224923, b/285124778
Change-Id: Ifc73e2a42d1d060a83a2fb83bcf8bb999f0990b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4726502
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|