The SPIR-V gen path is now made default. Compilation through glslang is
still supported for debugging, and is enabled on the GLSL* end2end tests
for smoke testing. On release builds, glslang is not supported.
To test with glslang, add the following gn arg (only necessary if dcheck
is disabled):
angle_enable_spirv_gen_through_glslang = true
Then enable the generateSPIRVThroughGlslang feature. This can be done
by setting an environment variable:
ANGLE_FEATURE_OVERRIDES_ENABLED=generateSPIRVThroughGlslang ./angle_deqp_gles2_tests
Binary size saving:
- 1.3MB on Linux (SPIR-V gen itself: 240KB)
- 730KB on Android (SPIR-V gen itself: 140KB)
Perf tests:
- LinkProgramBenchmark.Run/vulkan_compile_single_thread
* Through glslang:
truncated mean: 1287033.36
* Direct SPIR-V Gen:
truncated mean: 244495.91 (~80% reduction)
- LinkProgramBenchmark.Run/vulkan_compile_multi_thread
* Through glslang:
truncated mean: 4565894.83
* Direct SPIR-V Gen:
truncated mean: 1158164.10 (~75% reduction)
Bug: angleproject:4889
Bug: angleproject:6210
Change-Id: I486342702977c8114e90073b97183aba115a8b2d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3115140
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
This CL will fix the ASAN bug that was caused by passing empty label
string to getMultisampledRenderTarget, function of TextureStorage11.
Instead, pass mTextureLabel so we can get WebGL labels now. Also to
avoid this in future, convert ref mTextureLabel to now store copy.
The change in the test reflects the steps to first set the label
string and later the label being used to initialize mTextureLabel via
texture storage creation.
Bug: chromium:1254746
Change-Id: I007bdf1c7a421a2b4b9288aa71fa4368c14cf333
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3201030
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
-Mark the document OpenGL Insights chapter on ANGLE as historical
reference.
-Modify the visual studio build instruction in ANGLE'S orientation link.
-Point the Start Projects link to the angle starter bug lists.
-Remove doc/Starter-Projects.md.
(most bugs listed in Starter-Projects.md are closed.
mark bugs 2734, 2556, 2506 as starter bugs.
remove link to WebGL conformance on Windows as they are outdated)
-Remove IRC channel join info.
-Add more instructions on how to join Angle Slack channel.
-Add warning indicating the iframe tags are not displayed properly in
doc/dEQP-Charts.md.
Bug: angleproject:6509
Change-Id: Idd4364fe48b506b44d3a2b40fa0e6ebd9e810a1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204132
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
This is a follow up change based on comments Jamie
provided in a previous change list:
https://chromium-review.googlesource.com/c/angle/angle/+/3204430.
Fixes include:
1. Wrap each line into 80 characters.
2. Add links to project files.
3. Add one more future work.
4. Modify the two simple wordings.
Bug: angleproject:6508
Change-Id: I84a5694682d8871ebb46c4dfe245399021e0cff7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3219715
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
For ARM GPU, use GPU to do buffer to buffer copy has performance penalty
due to potential bubble in the vertex pipeline. This CL adds a feature
flag preferCPUForBufferDataSubData so that we can enable this behavior
for ARM GPUs.
This CL also tracks if GPU has referenced this BufferVk's storage since
it got new storage. Due to sub-allocation, we may get a new sub-range of
the same BufferHelper object when allocating new storage. But we
currently do not have a way to track GPU progress of the sub-range of a
buffer. So we will end up using BufferHelper's queueSerial to decide if
it is still GPU busy or not. This CL adds mHasBeenReferencedByGPU
boolean variable that will set to false when we got a new allocation and
set to true as soon as buffer is been referenced by any GPU command. We
use this to avoid checking queueSerial if it never been referenced by
GPU. This is a temporary workaround for the bug, the full fix is tracked
by https://issuetracker.google.com/201826021
Bug: b/200067929
Change-Id: I231fb0a678b0165a2ce1775d0aa4dbe7512fb4a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3183398
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Add two new tests to IndexBufferOffsetTestES3 tests that will call
bufferSubData with more than 1/2 buffer size, which will force vulkan
backend go into a different code path.
Bug: b/200067929
Change-Id: Id831982bbb044a529e9711be62d82f3e8c05e1a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3213415
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
EGL_PLATFORM_ANGLE_PLATFORM_METHODS_ANGLEX was allocated to 0x3482
without reserving an enum in the ANGLE drive. This value was later
used for EGL_POWER_PREFERENCE_ANGLE, causing a collision. This CL
re-allocates the enum.
Bug: angleproject:6105
Change-Id: I0da95dbd307954e2f7f5107d0179d580ec536f2b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3219591
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Fix two existing tests so that it wont generate performance
warnings that is not related to the test and not intended anyway.
Bug: b/200067929
Change-Id: I64a9272be077c536627644ae44104d98cecee7cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3218270
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
The PoolAllocatorAlignmentTest.Alignment/64 variant of the test fails on
windows/debug, so this change re-enables this test everywhere except for
that variant (and speculatively /128) on windows.
Bug: angleproject:6536
Change-Id: Ibc4fcbe04e7579f3ad7eb68f4f460078ee27ac88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212329
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
ImageHelper::mFirstAllocatedLevel is set via ImageHelper::initExternal.
There isn't a good use to set the mFirstAllocatedLevel when mImage is
invalid, and semantically it is wrong to try to get mFirstAllocatedLevel
or format while its storage is invalid (i.e., not allocated). This CL
removes ImageHelper::setFirstAllocatedLevel() API all together and added
assertion that image is valid when ImageHelper::getFirstAllocatedLevel
and getActualFormat and various other get APIs whose value are set
during initExternal call.
Bug: angleproject:6532
Change-Id: I9c97f488b3e959443fec632540e7f0906a49dc13
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3209838
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
We have gl::LevelIndex and vk::LevelIndex. gl::LevelIndex means level
index at OpenGL concept and is used in TextureVk code. vk::LevelIndex
means already adjusted with baseLevel and is used by ImageHelper object.
This mRedefinedLevel is gl::TexLevelMask type, but it actually is a bit
mask of vk::LevelIndex right now. This is inconsistent and confusing.
This CL changes it to bit mask of gl::LevelIndex to be consistent with
the namespace of "gl".
Bug: angleproject:6532
Change-Id: Ic88e373f70d3bd3e3fea676765c82fd0941e245c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3210726
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
This implements EXT_clip_control for the D3D11 renderer, so that I can
use a reversed-Z depth buffer with ANGLE.
Tested with
angle_deqp_gles2_tests.exe --deqp-egl-display-type=angle-d3d11 --deqp-case=dEQP-GLES2.functional.clip_control.*
and
angle_end2end_tests.exe --gtest_filter=*D3D11*
Bug: angleproject:6554
Change-Id: I1d11cd04a6654c28530b11104470f0cad0009abe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3218659
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
The dEQP GLES / EGL tests on the Nexus 5x are not a configuration we
intend to ship. The 5x is over 5 years old and has been discontinued
without updates. Because it costs us resources and developer time to
maintain these configs, and we still have WebGL testing of this
device, remove the native dEQP tests from this config.
Also includes a fix to the lucicfg presubmit on Windows.
Bug: angleproject:6527
Change-Id: I70bbd3ebdafc63bfd7572b79abcedb711acb4441
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212892
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
The fixed-to-float conversion routine in mathutils only operated
correctly on positive numbers. This caused failures in some GLES1
apps when negative fixed-point values were converted, as for
glTranslatex().
Bug: b/199919700
Test: Manual -- Zillow app should show data on map
Change-Id: I2ac4794478d3ad4c50057527134c9c17c8680338
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3209826
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mark Lobodzinski <mark@lunarg.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
This validation is disabled in three transformations and re-enabled
afterwards. Two of these benefit from the simplicity it brings, and
this change removes it from the other transformation.
Bug: angleproject:6506
Change-Id: I946b547ed0e2ed39062914a7771e9635ff5e406d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212289
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
TL;DR: glReadPixels needs a non-const pointer if a pack buffer
is bound, so change the code generation to keep TvoidPointer
non-const and regenerate the entry points.
Long version:
When no pack buffer is bound, then in WriteCppReplayForCall
param.readBufferSizeBytes is non-zero and the cast of the read
buffer pointer is using the type passed by the parameter
(TvoidPionter) to write the typecast by calling ParamTypeToString
directly, which returns "void *".
If. OTOH, a pack buffer is bound, then param.readBufferSizeBytes
is zero, and the default WriteParamCaptureReplay is called. This
autogenerated function forwards the call to WriteParamValueReplay
by using an explicit type specification, and the autogeneration
code was translating TvoidPointer to call
WriteParamValueReplay<ParamType::TvoidConstPointer>
which would then translate to "const void *" in the parameter type
cast, and this would lead to a compilation failure, because the
parameter must be a non-const pointer.
Change the autogeneration code so that TvoidPointer is not forced
to be a const pointer and regenerate the entry points.
Bug: angleproject:6521
Change-Id: I673c77f803a284fb7dfc08a2e0918aebdf698194
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204959
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
This is in preparation for removing these tests from the N5X.
Bug: angleproject:6527
Change-Id: Ib44f876db47845935efd68a1727964834a675cbb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3208746
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Windows.h is expensive and causes lots of namespace pollution with the
macros that it defines. This change removes windows.h from platform.h
and debug.h and adds the necessary typedes and new include of windows.h
to let Chromium build.
This reduces the number of Angle translation units that include
windows.h by about a third, from 624 to 440. Significant further
reductions will be difficult because of translation units that genuinely
need windows.h.
Earlier versions of this change made it clear that the DeleteFile and
GetCurrentTime macros were renaming Angle functions. These angle
functions were renamed which makes this change much simpler.
Bug: angleproject:6283
Change-Id: Icddc8f98b19485e563b2cf616bba2ad4ea49228e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212639
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Remove the TODO related to removing the global pool allocator, since
that work won't be chased any further.
For more details in this area, see:
http://anglebug.com/1286
Bug: angleproject:6497
Change-Id: Ie9952e1c0e481c8d553cfdcf4a1d8ded8b64a95b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3208510
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
The half render area rotation matrix should be removed.
DrawableArea is constant over rotations.
The frag coord rotation matrix is still needed because
the frag coord generated by GPU is still rotated.
Test:
DISPLAY=:0 out/Debug/angle_deqp_gles3_rotate90_tests
Using test config with:
linux
nvidia
debug
vulkan
prerotation
prerotation270
Test: Cuttlefish SwANGLE
./cts-tradefed run cts -m CtsDeqpTestCases -t
dEQP-GLES3.functional.shaders.builtin_variable.fragcoord_xyz
Bug: angleproject:6504
Change-Id: I37a6308fdb7586200b19a6138affc78c2c329a96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212427
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
5a257b4ccb..27780e7705
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/chromium-angle-autoroll
Please CC ynovikov@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in Chromium: https://bugs.chromium.org/p/chromium/issues/entry
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
Changed dependencies
* build: 64ad2a11a0..500434accf
* buildtools/linux64: git_revision:0153d369bbccc908f4da4993b1ba82728055926a..git_revision:693f9fb87e4febdd4299db9f73d8d2c958e63148
* buildtools/mac: git_revision:0153d369bbccc908f4da4993b1ba82728055926a..git_revision:693f9fb87e4febdd4299db9f73d8d2c958e63148
* buildtools/win: git_revision:0153d369bbccc908f4da4993b1ba82728055926a..git_revision:693f9fb87e4febdd4299db9f73d8d2c958e63148
* testing: 61b2ffca5e..e0214688a4
* third_party/abseil-cpp: b00d460653..099aba70f7
* third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/{catapult_..89d8a1b2c5
* third_party/depot_tools: 7cdf1424b9..97b5b5f83d
* third_party/zlib: bffc82b236..edc0e0684f
* tools/luci-go: git_revision:413d434bd4eee1130614494dfb19f1eba03d71af..git_revision:d1c03082ecda0148d8096f1fd8bf5491eafc7323
* tools/luci-go: git_revision:413d434bd4eee1130614494dfb19f1eba03d71af..git_revision:d1c03082ecda0148d8096f1fd8bf5491eafc7323
* tools/luci-go: git_revision:413d434bd4eee1130614494dfb19f1eba03d71af..git_revision:d1c03082ecda0148d8096f1fd8bf5491eafc7323
* tools/mb: 36fcc39dd5..f0d113a0da
* tools/perf: 08f5dc22c1..ca89069ed0
* tools/skia_goldctl/linux: 8BEdZmdEb_Trpttj9e1dPv8UkzzT2TcgaA7HDWbfw_oC..gBAjq66wEoX-xg7SYwdl9IwTb41P6_uogFXZWqmg42cC
* tools/skia_goldctl/mac: rUm7H5eJ9geBU3-v0VR5qj_uAZoU9K1pEIiSVnxbDmIC..s5FQ4at83HB6cms6U4yFCQ-DS8LAIk6BsYD0SYwtiyMC
* tools/skia_goldctl/win: 6xtIsouHQ17XqTFF6ZHf3XyJvVUPt1OTvgPG2Opk56AC..waM0kUtv5T9ysntYENPWn_NyN14lIcqEDgfIaITeL0gC
No update to Clang.
Bug: None
Tbr: ynovikov@google.com
Change-Id: I788cddb5e95e206f42ac470136ef2b59642a946d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3216171
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Suppressions were added as ANGLE was using an unreleased extension.
This extension is released and supported by VVL now.
Bug: angleproject:4063
Change-Id: Ief23ac1ac3a3e6ecbd7b04a6b583302bbdf48398
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3213298
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
When only 1 view is enabled, ANGLE continued to append a
VkRenderPassMultiviewCreateInfo struct to the render pass. VVL produced
an error when transform feedback was used in this case, quoting that
multiview and transform feedback cannot mix.
This change makes sure that 1-view framebuffers are threated as if they
were not multiview.
Bug: angleproject:6478
Change-Id: If079c9a052f822342a49a9cc880be2577a356b64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3206269
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Import the documentation go/vangle-debug-overlay as markdown
Bug: angleproject:6508
Change-Id: I1ecf9e6d4fd2c1b47c6e8f367390fcb72d7ecfe7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204430
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Now that inserting a sync object incurs a flush, we can use the serial
to perform synchronization.
Bug: angleproject:6464
Bug: angleproject:6481
Change-Id: I8c82a12855b6497861ce34854d165af82956b384
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212573
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
When glBufferSubData is called, we may acquire a new buffer if buffer is
still GPU busy. When this happened, we have to preserve buffer content
if old buffer has valid data in it. Instead of always use GPU to do
copy, this CL will check if GPU is not writing to the buffer, we will
just use CPU to do the copy form old buffer to new buffer from the
ranges outside subData, controlled by the feature flag
preferCPUWhenPreservingBufferData.
Bug: b/200067929
Change-Id: I42053104b2be8da5f399cca92e934254988f2fd8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3177322
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>