Improvements:
- Report the numeric value of a bad attribute
- Show the requested/desired/unsupported version and the max version
- Correct printf attribute set and previous errors fixed
Bug: b/186543601
Change-Id: I889f2384afbe134496cad9e349766b7ff756dcee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3224566
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Crashes have been seen inside the Cocoa-internal
NS_setFlushesWithDisplayLink function. Web searches indicate this is a
regression in macOS 11. See whether catching and ignoring these
exceptions improves stability.
Bug: angleproject:6570
Change-Id: Id0be68077163bf4e9f98189461eea016a35edd73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3227697
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
In preparation for the StagingBuffer may also use BufferMemory, this CL
moves the class to vk_utils.h so that it can be used by any class
without create kinks on header file inclusion.
Bug: b/195588159
Change-Id: I97ab136be691322fe6284fd1b4b7336fdf1f904f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3040106
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
This workaround's scope was widened due to issues detecting intel
GPUs in systems with multiple GPUs. That was fixed, so we can
re-scope the workaround.
Bug: chromium:1187475
Change-Id: Iaf946369273dc5c1e2f8f91a14758b6751615c7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226721
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
This function always incurred a check for completed commands to ensure
forward progress for applications (or rather, tests) that busy-wait
until the query results become available.
This change instead does an initial isCurrentlyInUse() check and only if
that's true will it check to see if there are any finished commands.
This should reduce one checkCompletedCommands() call when the
application queries the status of the Query well after it's issued.
Based on patch authored by Igor Nazarov <i.nazarov@samsung.com>
Bug: angleproject:6573
Change-Id: Iad4ed6b7eb6ae5316707e6d916e5ca3054d6c5aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3225083
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
BufferMemoryAllocator class will be responsible for memory allocation
for vkBuffers. The original Allocator class remains the wrapper for
vmaAllocator.
Bug: b/195588159
Change-Id: I26d016e2f8d13ba459d0aa0bd4e1ebf4d0d48251
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3036256
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>
Old names: use config pairs when they can vary, e.g.
android-arm-dbg
android-arm64-rel
linux-clang-dbg
win-clang-x64-rel
win-msvc-x86-dbg
win-trace-rel
New names: use config names when they differ from the the
default test config for a system, and suffix with -compile
and -test for compile-only and compile-and-test bots. For
Android configs, we keep the full target arch. e.g.
android-arm-dbg-compile
android-arm64-test
linux-dbg-compile
win-test
win-msvc-x86-dbg-compile
win-trace
The new naming scheme prioritizes having short names to
avoid redundant or implicitly understood information. This
should reduce the mental load when looking at a set of test
results.
This also adds SwiftShader win10-x64 configs so we can add
these to the CI easily. Also the plan is to turn off the GCC
configs for now. If we ever support GCC properly we can re-
enable them.
This CL adds the new configs to CI, then a following CL will
add them to CQ and remove the old configs at the same time.
Bug: angleproject:6496
Change-Id: I0ecdcd392c4d7067d6b180664f160ba7c048d16d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3219590
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
There are two instances of circular buffer in SurfaceVk. A common
helper class is introduced by this change to consolidate the
implementation.
This is in preparation for a follow up change that introduces yet
another circular buffer in this class.
Bug: angleproject:6401
Change-Id: Id01b585567310a2528888114239a5c80ff93f1ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3225084
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This was broken as fallout from http://crrev.com/c/3189512 and is
currently breaking the Chromium -> ANGLE roll. Instead of trying
to fix the warnings, disable compiling SwiftShader with MSVC.
Bug: angleproject:6572
Change-Id: I041a4366b348b77f8213802495dd88c4050a714c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226720
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
This change removes a number of stale TODOs.
Bug: angleproject:4889
Change-Id: If21d55717e61383ffdd58a7f88da5961988e035f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3223643
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Due to a feature renaming, the async queue tests where actually ran
without the required feature that makes them async. This change fixes
the feature name so async queue testing will be resumed.
Bug: angleproject:6437
Change-Id: I73c9c8cd196576455265f72144399a93edc82bdf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193420
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
This fixes race conditions with the async command processor. Instead
of querying specific serial numbers, we ask the command queue to
either wait for idle, or return the answer to "are you busy" directly.
Bug: b/172704839
Change-Id: I06a8268d9b58d8c33b783af00ca74979ee158316
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3223641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
If a constant is not folded by the translator, for example because it's
an array, this change makes sure that it becomes a constant in SPIR-V
anyway. This is particularly important to support cases where a
constant is required, for example as argument to textureGatherOffsets().
Bug: angleproject:4889
Bug: angleproject:5362
Change-Id: Ic43e4be13a8917bb100ea64902ba90048cfbb9ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3223642
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Add gl/gles entry point names to validation error messages
some special cases:
1. Debug::insertPerfWarning() is invoked from multiple places,
such as TextureVK, ContextVK,
adding an extra entryPoint function parameter
in these files will need
extra investigations.
I am passing the entryPoint name GLInvalid as a
temp workaround.
2.ErrorSet::hangleError() is invoked from multiple
Context*.cpp files,
adding an extra entryPoint function parameter
in these files will need
extra investigations.
I am passing the entryPoint name GLInvalid as a
temp workaround.
3. Debug::insertMessage(), Debug::popGroup(), Debug::pushGroup()
can be invoked from more than one GL entry points,
e.g. Debug::pushGroup() can be invoked from
either GL_APIENTRY GL_PushDebugGroup() or
GL_APIENTRY GL_PushDebugGroupKHR()
through context->pushDebugGroup() call.
Right now the same entry point name glPushDebugGroup will
be printed out in the error message for both cases.
However, we should be able to tell the actual entry point
by checking which version: KHR version or core version the
application uses, and this helps avoid the confusion.
For now we will let the same entry point name
getting printed for both cases.
Bug: angleproject:6523
Change-Id: I64a5463d9168d8444d376d1f428c3b3d894f2ea9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3215063
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Mac/NVIDIA:
ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGB
This test is crashing very frequently for an as-yet-unknown reason.
The NVIDIA MacBook Pros are not a critical testing configuration, so
skip this test for the time being to stabilize the CQ.
Mac/Intel:
WebGLCompatibilityTest.L32FTextures
WebGLCompatibilityTest.R32FTextures
WebGLCompatibilityTest.RGB32FTextures
These tests are occasionally failing with incorrect rendered pixel
values again for unknown reasons. Mark these as failing on this
configuration for the moment.
Bug: angleproject:6570
Change-Id: Ic9e3c5f8d06a1555a4b1dfed2d9495e98c32abf1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3224361
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Instead of pulling out the shader modules from the shader map when
we start the call chain, pull them out right in the init call. This
saves a bunch of boilerplate code.
Refactoring change only.
Bug: angleproject:6566
Change-Id: Ib8d79bd7284d7ddb83522270f3d4df9086ab7300
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3221134
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
ANGLE use `flat_hash_map` by default,while it will not retain pointer
stability which causes random null pointer issue when running MH31 with
asynccommandqueue.This change switch to using `std::unordered_map` to
cache renderpass.
Bug: angleproject:6436
Bug: angleproject:6569
Change-Id: Ia2829a41251eea39ce2a79a9a42b6fe9dff6b120
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3219010
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
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>