Commit Graph

21349 Commits

Author SHA1 Message Date
Geoff Lang
ecf245ff4c Metal: Don't force all incomplete textures to initialize
ensureIncompleteTexturesCreated is called in every syncState and
initializes all types of incomplete textures, even when they are not
used.

Skip it entirely. ContextMtl::getIncompleteTexture already lazily
creates the incomplete textures, per type.

This saves about 1mb (~5% of ANGLE's allocations for Chrome) of
malloc'd memory per context.

Bug: chromium:1329376
Change-Id: I14ab7098ce2e486383d1d0d41039f0e526755878
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615190
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
2023-06-22 15:29:55 +00:00
Roman Lavrov
e431b3e449 Add pixels checks to bandingTest on Android +toggle GL_DITHER
Bug: b/284462263
Change-Id: I69122d1d53d03a2e75d498e77a669099a568ab3c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628974
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-22 14:06:57 +00:00
Roman Lavrov
6e99d6bc07 Only build angle_capture_tests_trace when building traces
Some PGO build failed in Chromium. Standalone ANGLE testing is
currently sufficient.

Bug: chromium:1456291
Change-Id: I5a685020afdfe152348d282a28379c3b628d5964
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636681
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2023-06-22 13:42:52 +00:00
Shahbaz Youssefi
bbcf54bcb7 Vulkan: Refactor uniform/block binding duplication code
Previously, resource binding assignment was done as such:

```
for each shader stage
  assign bindings to textures
  assign bindings to blocks
  assign bindings to images
  etc
```

To deduplicate bindings when the same resource was used in multiple
stages, a map was used, keyed by the resource's name, to detect when an
already visited resource is encountered in a future stage.  This was
both inefficient and unnecessarily complicated.

With this change, resource binding assignment is done as such:

```
for each texture
  assign one binding to all shader stages
for each block
  assign one binding to all shader stages
for each image
  assign one binding to all shader stages
etc
```

The aforementioned map is removed.

Because the resource bindings are now changed, the rest of the code
(which sets up the pipeline layout, updates descriptor sets, sets
dynamic buffer offsets, etc) are all updated to follow the above
pattern.  As a result, nested loops are avoided and duplicate entries in
the variable map are never visited.

Bug: angleproject:7220
Change-Id: Iaff7b5f8b2bada8ac5078d21e5c790bf0d27aca7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4622011
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
2023-06-22 13:24:35 +00:00
angle-autoroll
7658525166 Roll vulkan-deps from bcc1118ec796 to 23a32754e715 (6 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/bcc1118ec796..23a32754e715

Changed dependencies:
* glslang: 6a7ec4be7b..9575e33186
* spirv-headers: 6e09e44cd8..10db9d4e19
* spirv-tools: a63ac9f73d..54691dcd73
* vulkan-loader: 27e1acf1e9..b02d69f3a1
* vulkan-validation-layers: 1642f520f4..cb9c77d609

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,ynovikov@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: ynovikov@google.com
Change-Id: I3221bd8d99ad62e711040d6a43ccb3e95971e91c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636170
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-22 10:58:05 +00:00
angle-autoroll
a2b3f9b646 Roll Chromium from 75b049842ff8 to 0b8bd02c6abc (547 revisions)
75b049842f..0b8bd02c6a

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 angle-team@google.com,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: 160bff3d7a..8c37146184
* buildtools: 0cf6a99585..18ae18e1fc
* buildtools/third_party/libc++/trunk: 055b2e17ae..38a8ad0f7e
* testing: 2d4146a8f0..8a35ff2cfd
* third_party/abseil-cpp: c6d7cf4e8c..3562169a5c
* third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/{catapult_..6c0cc79e43
* third_party/depot_tools: 4ec095fa85..a59c3eb470
* third_party/fuchsia-sdk/sdk: version:13.20230620.2.1..version:13.20230621.2.1
* third_party/r8: rByCj9NgDDYIIW97qHizKUoC4pyBnIbr-mHt_DcskjYC..vw5kLlW3-suSlCKSO9OQpFWpR8oDnvQ8k1RgKNUapQYC
* tools/android: 182d3b233e..12312e22b3
* tools/clang: 86501dda63..ff9b9e9ce2
* tools/mb: 87b12f417f..5593da17f4
No update to Clang.

Bug: None
Tbr: ynovikov@google.com
Change-Id: Ie26f2cb73dde85e31dbc919f6051b64bbdf70009
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4635326
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-22 09:08:41 +00:00
Steven Noonan
ac263582dd Vulkan: add workaround for VK_EXT_full_screen_exclusive on AMD
On outdated (but recent) AMD drivers, the Windows-only Vulkan extension
VK_EXT_full_screen_exclusive appeared to be implicitly enabled and set
to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT mode. Even though
ANGLE did not enable or interact with this extension at all, the driver
was incorrectly returning VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
error codes on various swapchain operations when the full screen window
focus was lost (i.e. alt-tab out and back in). Naturally, ANGLE was not
expecting these error codes and did not know how to handle them.
Depending on where the errors occurred, ANGLE might crash or retry
creating the swapchain repeatedly.

Treating the unexpected VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
error code as VK_ERROR_OUT_OF_DATE_KHR/VK_SUBOPTIMAL_KHR was not
sufficient, because the driver would repeat the error on every swapchain
operation, apparently expecting the error to be handled by
a vkAcquireFullScreenExclusiveModeEXT call (even though that would make
no sense, since the extension was not enabled).

The incorrect driver behavior was reported to AMD and was fixed in
recent driver releases. The earliest driver I've tested and know to be
working is AMD's Adrenaline driver version 23.5.2
(VkPhysicalDeviceProperties calls this driverVersion 2.0.262/0x800106).
The last known bad version was 0x8000e9.

The simplest workaround on these older AMD graphics drivers is to
explicitly enable the extension, but set it to
VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT mode. On newer drivers we do not
need to do anything with the extension and can ignore it.

Bug: angleproject:8215
Change-Id: I7c58d47a0350f4b0bc1a77f200c1e2f72fcde8d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627279
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
2023-06-21 20:37:29 +00:00
Nico Weber
c23029d2fe [apple] Fix build with newer libc++
Using `return mPtr` without a `*` works too, but it looks lie these
methods are unused, so just remove them.

Bug: chromium:1454568
Change-Id: Ie4441ac611787765e354480561e6a0e25aefa159
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4631841
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Nico Weber <thakis@chromium.org>
2023-06-21 18:55:41 +00:00
Yuly Novikov
74cf0be3fe Temporarily remove NVIDIA testing from mac-test
To facilitate removing macOS 10.14 support while MacBook Pro 2013
machines are being upgraded to a newer OS version.

Bug: chromium:1456549
Change-Id: Ibb3e597d82482c1c86010f94aa4c75cd9bf44995
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632818
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2023-06-21 17:00:06 +00:00
Geoff Lang
954b3339e8 Add internal format to TexStorage validation errors
Print the hex value of the internal format when generating error
messages about invalid internal formats in glTexStorage.

Bug: chromium:1455725
Change-Id: Ia99c8891c5510590a3fcaf3699476942bf80b57c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632579
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2023-06-21 16:14:26 +00:00
Shahbaz Youssefi
b28ba57e06 Update OWNERS
Bug: None
Change-Id: I20ed7c410967cb207c50e32af58abacc6ddb816c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628679
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-21 13:52:39 +00:00
angle-autoroll
789c444aaa Roll vulkan-deps from 90577eb35eea to bcc1118ec796 (12 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/90577eb35eea..bcc1118ec796

Changed dependencies:
* vulkan-loader: db51885950..27e1acf1e9
* vulkan-tools: ca8bb4ee3c..07924a8a49
* vulkan-validation-layers: e2be2287f4..1642f520f4

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,ynovikov@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: ynovikov@google.com
Change-Id: I8ed972fa617400e26a1753b0069d3036ea28d12e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4629513
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-21 11:59:00 +00:00
angle-autoroll
beff6830b9 Roll Chromium from 4c627b09fbd1 to 75b049842ff8 (625 revisions)
4c627b09fb..75b049842f

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 angle-team@google.com,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: e2f84698b4..160bff3d7a
* testing: ae3bc83ffb..2d4146a8f0
* third_party/android_build_tools/lint: nGuHS3ccbDvKba1WE0bWYRax-Ibs76dLKpdsPpXqCiMC..kqQgSDAgfuKTUIT8gpYlhM9gvajbtIDs_ApDbh3wdNIC
* third_party/android_build_tools/manifest_merger: UNXioFXYvz7k7UmE2WYAaXuYIK3Ky0aSQ0IuDEdS9soC..pRHDE8UAgipcDQINCUsRz94lgm5BHQjiL-BLF6d6xC4C
* third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/{catapult_..cef5cf05b2
* third_party/depot_tools: 4480f863c5..4ec095fa85
* third_party/fuchsia-sdk/sdk: version:13.20230619.3.1..version:13.20230620.2.1
* third_party/r8: ZX7cPoz9LnLgpZfPPVDoXWcwHqATDC43bmIOinCWAxwC..rByCj9NgDDYIIW97qHizKUoC4pyBnIbr-mHt_DcskjYC
No update to Clang.

Bug: None
Tbr: ynovikov@google.com
Change-Id: I13b68b410422990fe407d45d235f6527b7cb29ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4629512
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-21 08:23:52 +00:00
Steven Noonan
15156b1da4 Vulkan: disable graphics_pipeline_library on old NVIDIA drivers
On drivers before R530, there are some transient visual glitches in
rendering when using VK_EXT_graphics_pipeline_library. Basically you
might see correct renders for a few frames, very incorrect renders for
about 10-20 frames, and then it would render correctly from then on.

This problem went away either at R530 or slightly after. This change
sets the minimum version to R531, which is the first version I observed
behaving correctly.

Bug: angleproject:8218
Change-Id: I7af4f74c1469ecf2306dec0cab9062eff2ec5f2c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627277
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 22:57:52 +00:00
Shahbaz Youssefi
7adf6532cc Remove unused helper classes
Bug: angleproject:6954
Change-Id: I325f6a67b1f2f1dffdf051f83a8d4f29c4fe25dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628678
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 21:54:56 +00:00
Steven Noonan
2e0b369d60 Vulkan: copy drawIndirectFirstInstance from physical device features
Not doing so results in VVL errors (you need the GPU-assisted validation
preset enabled to see this error):

    [ VUID-VkDrawIndexedIndirectCommand-firstInstance-00554 ]
    The drawIndirectFirstInstance feature is not enabled, but the
    firstInstance member of the VkDrawIndexedIndirectCommand structure
    at index 1 is not zero The Vulkan spec states: If the
    drawIndirectFirstInstance feature is not enabled, firstInstance must
    be 0

Bug: angleproject:8220
Change-Id: Ia43036584b85e4a7d9c3fcaf793be94b965f708f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627278
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 21:06:06 +00:00
Steven Noonan
041e27311d optimize glShaderSource string concatenation
This optimizes for both memory usage and time. Before this change, we
had a redundant copy of the shader source fragments in memory:

    - The user application
    - The ostringstream buffer
    - The final concatenated string

The second one can be avoided by not using ostringstream.

The second issue is that ostringstream will reallocate as we fill it,
and depending on the number of input strings (and their size), it may
reallocate several times. Since we aren't doing anything particularly
fancy with the ostringstream, we can just preallocate the appropriately
sized string and fill it with the input strings all at once.

If we don't mind taking an additional dependency on abseil-cpp, this
could also be implemented with absl::StrJoin, but it seems like a heavy
dependency for something relatively simple.

Tests run: GLSLTest.*ShaderLength*

Bug: angleproject:8219
Change-Id: Idba277e7860116f858e7a86f4b03420dd383a52f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627282
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
2023-06-20 21:01:57 +00:00
Steven Noonan
152e0d1679 Vulkan: detect Apple GPU as being a tile-based renderer
This helps systems running MoltenVK on Apple Silicon.

Bug: angleproject:8221
Change-Id: I28ce9b3dc153fb420429641776767fb71734685a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627276
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2023-06-20 20:48:39 +00:00
Steven Noonan
508eb865f3 Vulkan: avoid crash on AMD drivers with MSRTT emulation
If you have a multisampled color+depth framebuffer and discard depth
before the end of the render pass, ANGLE skips assigning
pDepthStencilResolveAttachment. Doing so is fine on most vendors, but on
AMD drivers, the application will crash in the user mode driver when
calling vkCreateRenderPass2KHR.

Simply not adding the depth/stencil resolve structure to the PNext chain
avoids the crash and allows the application to function normally.

Bug: angleproject:8217
Change-Id: I0dc14c03d2b999e280a4d363e0296fd10812540c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627280
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 20:35:55 +00:00
Steven Noonan
262784f437 D3D11: unbreak instanced indirect multidraw with ushort indices
The baseInstance parameter was not being passed in the unsigned short
index case.

Bug: angleproject:8216
Change-Id: If660c6d4125bfd2aff8f4fd3a9171194635d21c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627281
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 20:26:25 +00:00
Roman Lavrov
5aa818fd49 Assert !is_official_build in Android builds.
Bug: angleproject:7381
Change-Id: I658cb0389fc5a12726ea873c3a2d5afb006b6953
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628674
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
2023-06-20 20:15:02 +00:00
Shahbaz Youssefi
681ca074e3 Vulkan: Deduplicate SpvAssignLocations call in program pipeline
Some logic already in SpvGetShaderSpirvCode was duplicated for program
pipelines.  In particular, this necessitated exposing UniformBindingInfo
which is an internal detail of SpvAssignLocations.

In a follow up, UniformBindingInfo will be removed altogether.

Bug: angleproject:7220
Change-Id: I9fa60c716de6dfb0d3a72c4f4dd3822043bab308
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4622010
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 18:45:04 +00:00
Geoff Lang
7ef6452d20 Metal: Refactor hasValidRenderTarget checks
Separate the computation of hasValidRenderTarget into a function and
only call it if the cheaper check to allowRenderpassWithoutAttachment
returns false.

Bug: chromium:1329376
Change-Id: Id20a33913b7133a5aea82f53abb0a86664b4f2c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615188
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2023-06-20 15:57:59 +00:00
L. E. Segovia
a62cc521f8 GL: fall back to WGL if EGL_ANGLE_surface_orientation unset
When an app attempts to use the GL backend on Windows, there is
currently an undocumented hard requirement for
EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE. This is caused by
EGL_ANGLE_surface_orientation not being fully implemented, so
instead let ANGLE fall back to the slow WGL pipeline.

See: I012168531d8c2e5b189671533cea9f57ec713538

BUG: angleproject:8201
Change-Id: I28c6a948a5fc0e3ebfff86c4cbf95c666f5c7cd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614646
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2023-06-20 15:32:32 +00:00
angle-autoroll
174742fd66 Roll VK-GL-CTS from 7fcb3c6e0082 to f29bd2feeaff (19 revisions)
Suppress dEQP-EGL failures.

7fcb3c6e00..f29bd2feea

2023-06-18 lorenzo@khronosgroup.org Merge vk-gl-cts/github-main into
vk-gl-cts/main
2023-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9
into vk-gl-cts/main
2023-06-16 piotr.byszewski@mobica.com Split pipeline.txt in vksc-default
2023-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6
into vk-gl-cts/main
2023-06-16 alexander.galazin@imgtec.com Fix check_build_sanity.py error
2023-06-16 lorenzo@khronosgroup.org Add missing line in AndroidGen.mk
for vktFragmentShadingRateMiscTests.cpp
2023-06-16 rgarcia@igalia.com Test FSR in a pipeline without fragment
shader
2023-06-16 ziga@lunarg.com Add xfb test drawing outside of xfb begin
2023-06-16 piotr.byszewski@mobica.com Test RT interaction with flags
added by GPL
2023-06-16 rgarcia@igalia.com Test gl_SampleMaskIn with sample shading
2023-06-16 rgarcia@igalia.com Test enabling and disabling VRS statically
2023-06-16 rgarcia@igalia.com Test allocation and binding offsets with
index buffers
2023-06-16 pdaniell@nvidia.com Remove the "Error:" prefix with
NotSupported results
2023-06-16 jenatali@microsoft.com Fix skipping when synchronization2 is
unsupported on Windows
2023-06-16 gleese@broadcom.com Remove 64-bit test code for builtins
which don't support it
2023-06-16 jenatali@microsoft.com Don't include windows.h in the vk
namespace
2023-06-16 rgarcia@igalia.com Disallow direct linking of GLES libraries
by default
2023-06-16 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.6
into vk-gl-cts/main
2023-06-15 younggwan.kim@arm.com Merge dev/EXT_shader_tile_image into
main

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,syoussefi@google.com on the revert to
ensure that a human
is aware of the problem.

To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: angleproject:8214
Change-Id: I84598fb784adf1e30abbeaac3c53dcd97108d58a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4624553
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 13:35:54 +00:00
angle-autoroll
1be015356e Roll vulkan-deps from c5656423525b to 90577eb35eea (5 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/c5656423525b..90577eb35eea

Changed dependencies:
* glslang: 5793fbd624..6a7ec4be7b
* spirv-tools: a720a6926e..a63ac9f73d
* vulkan-validation-layers: fff7423f1c..e2be2287f4

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,ynovikov@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: ynovikov@google.com
Change-Id: Ia4349c1e0f395a045f5e017726a8768429b9ce54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627425
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-20 10:55:51 +00:00
angle-autoroll
7fe13751df Roll Chromium from cc7a0bd198ec to 4c627b09fbd1 (415 revisions)
cc7a0bd198..4c627b09fb

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 angle-team@google.com,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: 53511f9ad0..e2f84698b4
* buildtools: 3739a36193..0cf6a99585
* testing: f05e6b1f74..ae3bc83ffb
* third_party/android_build_tools: fa16e60e96..3b0115d9f8
* third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/{catapult_..cef5cf05b2
* third_party/depot_tools: 3ffad8166e..4480f863c5
* third_party/fuchsia-sdk/sdk: version:13.20230618.3.1..version:13.20230619.3.1
* third_party/kotlin_stdlib: z4_AYYz2Tw5GKikuiDLTuxxf0NJVGLkC3CVcyiIpc-gC..bhkmCcKzQ5IXUsDnWkRfouPfdzzyrgw40PUzRvArrGEC
* third_party/r8: rByCj9NgDDYIIW97qHizKUoC4pyBnIbr-mHt_DcskjYC..ZX7cPoz9LnLgpZfPPVDoXWcwHqATDC43bmIOinCWAxwC
* tools/clang: 573d371dff..86501dda63
* tools/mb: 6b2aa66c8f..87b12f417f
* tools/perf: e9c1c5d8e1..31a576a999
No update to Clang.

Bug: angleproject:6430,angleproject:7079
Tbr: ynovikov@google.com
Change-Id: I324ab7144d2e5c5b995391aca1cbcade7f7cece1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4626249
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-20 09:36:04 +00:00
Shahbaz Youssefi
84379a5294 Vulkan: Mark the location of vertex output in the compiler
So the SPIR-V transformer doesn't have to discover it.

Bug: angleproject:7220
Change-Id: I13a4c7a205e664195a9631169a207c248497143a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621789
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-20 02:17:01 +00:00
Shahbaz Youssefi
803c3b1032 Vulkan: Mark the location of xfb emulation in the compiler
So the SPIR-V transformer doesn't have to discover it.

Bug: angleproject:7220
Change-Id: I5c74e5f3cbd8fe0c03ee2c445fddb7a0ef36fb91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621788
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
2023-06-20 01:35:37 +00:00
Shahbaz Youssefi
ad13d41f2b Vulkan: Mark the beginning of the shader in the compiler
So the SPIR-V transformer doesn't have to discover it.

Bug: angleproject:7220
Change-Id: I2a41656cc224d1fc02e656da15d9781705a6e785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621787
Reviewed-by: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
2023-06-19 22:53:21 +00:00
Geoff Lang
b46344bb2c Metal: Cache render pipelines at the context level
Cache Metal render pipelines in a new mtl::PipelineCache which lives
at the context level. This allows us to clean up unused pipelines from
programs that are not actively used.

The cache limits were chosen based on running Chromium. Without a
limit, the total number of pipelines peaks at ~200. With frequent GCs,
the active working set usually sits at ~60 pipelines.

Bug: chromium:1329376
Change-Id: Ifa83b797c893684294e16dd638f6b3a35e1d043f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608486
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
2023-06-19 20:27:01 +00:00
Shahbaz Youssefi
fb0174fa65 Fix clearing of extended dirty bits in draw calls
When syncing all dirty bits (i.e. in draw calls), the extended dirty
bits were not cleared.  This caused the extended dirty bits to be
resynced every time.

Credit Steven Noonan <steven@uplinklabs.net>

Bug: chromium:1410191
Change-Id: I7042462bbc4346880eb99128b3501cf130987505
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615239
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2023-06-19 17:36:29 +00:00
Shahbaz Youssefi
b37df0c729 Vulkan: Don't output SPIR-V debug info in release
Now that the SPIR-V transformer no longer relies on names, we can avoid
generating them in the compiler in the first place.

This both removes the need for stripping them out and makes the shaders
(which are cached) a bit smaller.

Bug: angleproject:7220
Change-Id: Ie636ac0ee62cf2730a409872041d22c066fc22ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615238
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
2023-06-19 15:59:26 +00:00
Shahbaz Youssefi
04f609d796 Vulkan: Use user names directly in SPIR-V
... instead of prefixing them with _u.  The transformer no longer relies
on debug info, which means SPIR-V names can be completely arbitrary.
There is no risk of collision with ANGLE internal names because it
doesn't matter for SPIR-V, and SPIR-V Cross is able to handle duplicate
names.

This change makes the output of SPIR-V Cross on generated shaders more
readable as it's not cluttered with _u before every name.

Bug: angleproject:7220
Change-Id: If46f7c82f908b0d65f8be49e297384ab659369e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615237
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-19 14:27:52 +00:00
angle-autoroll
949d9e344b Roll vulkan-deps from 58c6e1ea988a to c5656423525b (18 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/58c6e1ea988a..c5656423525b

Changed dependencies:
* glslang: 72713baf74..5793fbd624
* spirv-tools: d33bea5847..a720a6926e
* vulkan-headers: cb71b646f1..c1a8560c5c
* vulkan-loader: bcfb502054..db51885950
* vulkan-tools: 17edcc1455..ca8bb4ee3c
* vulkan-validation-layers: 4d4fc0e5a2..fff7423f1c

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,syoussefi@google.com on the revert to
ensure that a human
is aware of the problem.

To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: syoussefi@google.com
Change-Id: I1268ec340ea63b9cf151e77a7e69ae1d261ba77d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4626257
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-19 11:05:12 +00:00
angle-autoroll
46f444ddd0 Roll Chromium from 7df45c601f1c to cc7a0bd198ec (1481 revisions)
7df45c601f..cc7a0bd198

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 angle-team@google.com,syoussefi@google.com on the revert to
ensure that a human
is aware of the problem.

To file a bug in 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: 1889753ce5..53511f9ad0
* buildtools/third_party/libc++abi/trunk: 899caea381..8d21803b90
* testing: da030c5a1c..f05e6b1f74
* third_party/abseil-cpp: 834450f113..c6d7cf4e8c
* third_party/android_deps: ea118736f4..36fd99b5ae
* third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/{catapult_..cef5cf05b2
* third_party/depot_tools: dedeb88991..3ffad8166e
* third_party/fuchsia-sdk/sdk: version:13.20230614.3.1..version:13.20230618.3.1
* third_party/ijar: 17f06d102a..19617929c3
* third_party/protobuf: 553ce6033e..678d565421
* third_party/r8: vw5kLlW3-suSlCKSO9OQpFWpR8oDnvQ8k1RgKNUapQYC..rByCj9NgDDYIIW97qHizKUoC4pyBnIbr-mHt_DcskjYC
* third_party/r8/d8: PwglNZFRNPkBBXdnY9NfrZFk2ULWDTRxhV9rl2kvkpUC..vw5kLlW3-suSlCKSO9OQpFWpR8oDnvQ8k1RgKNUapQYC
* third_party/zlib: 3ca9f16f02..e6795474e4
* tools/android: b9d0126966..182d3b233e
* tools/mb: bf6c9c4977..6b2aa66c8f
* tools/perf: 3a42bc4aaa..e9c1c5d8e1
No update to Clang.

Bug: None
Tbr: syoussefi@google.com
Change-Id: I559f310aa7f1603e06aaf98f8438e422ccb004d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4626256
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-19 08:07:23 +00:00
Shahbaz Youssefi
24f4007b93 Vulkan: Use SPIR-V ids instead of names in the transformer
This change removes the SPIR-V transformer's reliance on type and
variable names.  As a result:

- String hashing is removed from the info map data structure and the
  SPIR-V transformer
- The ID discovery class is entirely removed
- Internal variable names have become a detail of the compiler alone
  (and are no longer exposed as part of the compiler interface)
- Some front-end name tracking is removed ("parentStructMappedName",
  etc)

This change also properly cleans up xfb emulation types that were
previously left over.

This change allows the SPIR-V compiler to emit user strings as-is
instead of prefixing them with `u_` leading to more readable debug
shaders.  Additionally, it will make it possible not to emit debug info
at all.  Both of these changes will be done in follow ups.

Bug: angleproject:7220
Change-Id: Iaa127496209a27aaae2e0d14c41b22fffb0b72a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4600610
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-17 02:00:24 +00:00
Shahbaz Youssefi
e394cb46c1 Vulkan: Refactor framebuffer fetch shader emulation
This change fixes simultaneous usage of EXT_shader_framebuffer_fetch and
ARM_shader_framebuffer_fetch, which previously declared two identical
input attachment variables.

The code is additionally greatly simplified.

Bug: angleproject:8196
Bug: angleproject:8197
Bug: angleproject:8198
Change-Id: Iaaa2a5539a95727e67001a4da1d45092c9db4f2c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615187
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-16 23:11:49 +00:00
Mark Lobodzinski
de28b89ab8 Android: Add Pixel 7 entries to End2End expectations
Bug: b/285628492
Bug: angleproject:8212
Change-Id: I205ff24f53c03c0a0634b35b6a7e76b79f21d622
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4617583
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
2023-06-16 18:22:54 +00:00
Roman Lavrov
58055032e1 Remove _shardN suffix from tests when it's not necessary.
My understanding is that we only need this for --split-shard-samples.
Otherwise we still get _shardN suffix from the shard but the test only
ran on a single shard so there is no point in that.

_shardN added in https://crrev.com/c/3937044

--split-shard-samples disabled in https://crrev.com/c/4605335

Example of _shardN:
https://ci.chromium.org/ui/p/angle/builders/ci/linux-nvidia-gtx1660-perf/1704/overview

Bug: angleproject:7671
Change-Id: Iaec4eb81e6ebad424cfc2ebfcbc7eda312cd1bba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615538
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Auto-Submit: Roman Lavrov <romanl@google.com>
2023-06-16 17:43:15 +00:00
Geoff Lang
0e31cb4042 Turn CreateMTLRenderPipelineDescriptor into a method
Refactor CreateMTLRenderPipelineDescriptor into a method on
RenderPipelineDesc so it's externally visible.

Bug: chromium:1329376
Change-Id: I22780b630ff9230ae2f3912c3bf4fd70a78d3ce5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608485
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
2023-06-16 16:04:39 +00:00
Geoff Lang
7f9e9fce2f Metal: Remove copy constructors in various util classes
By using a different array initializer in RenderUtils, the copies are
not neccessary.

Bug: chromium:1329376
Change-Id: Iec98a31741457f8d76a84f0340772167d7b9700a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4607151
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-16 15:55:26 +00:00
Colin Blundell
6e3808db30 Record duration of syncFromNativeContext()
Bug: chromium:1168587
Change-Id: I9e9770ab253df8ca4fd45979f2e5d67932c0a2ae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614517
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
2023-06-16 15:07:07 +00:00
angle-autoroll
78be95529f Roll VK-GL-CTS from f7646f53ba61 to 7fcb3c6e0082 (1 revision)
f7646f53ba..7fcb3c6e00

2023-06-16 lordalcol@users.noreply.github.com Merge pull request #397
from jenatali/patch-1

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,syoussefi@google.com on the revert to
ensure that a human
is aware of the problem.

To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: syoussefi@google.com
Change-Id: I316af1897e47324dfdd74fed5a6f208d39b3ceff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4620520
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-16 13:55:34 +00:00
angle-autoroll
498c744bc7 Roll vulkan-deps from cebf5626ca50 to 58c6e1ea988a (14 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/cebf5626ca50..58c6e1ea988a

Changed dependencies:
* spirv-headers: 8e2ad27488..6e09e44cd8
* spirv-tools: 40dde04ca2..d33bea5847
* vulkan-loader: 88d70047fb..bcfb502054
* vulkan-tools: 2c83dd6cb2..17edcc1455
* vulkan-validation-layers: 5cde5d21a3..4d4fc0e5a2

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,syoussefi@google.com on the revert to
ensure that a human
is aware of the problem.

To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: syoussefi@google.com
Change-Id: I1674b1342d0fb9e1924d8b921dc4fe2a69217a0a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4620294
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2023-06-16 13:06:26 +00:00
L. E. Segovia
edf58105d6 Validate GL backend after dispatch table initialization
This commit adds a check to ensure that the GL backend's functions
have been properly initialized. This may happen with third party
build toolchains, like vcpkg, which reimplement parts of the
existing build system.

Bug: angleproject:8195
Change-Id: Iaca2200a563c5049d90acad57785088c94b4e580
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614645
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-16 03:41:22 +00:00
Roman Lavrov
46ff02f8a2 Capture/Replay: Initial setup for angle_capture_tests
Implements the first part (FrameCapture) of the proposal
go/frame-capture-and-interpreter-testing

Adds a basic test (CapturedTest) with a few frames. This test gets
captured by capture_tests.py into a temporary directory and the
resulting files are diff'ed with the files under expected/

A diff fails the test. When capture changes, the workflow would be to
run the command indicated by the error message in the test which will
overwrite the files with new ones so that they can be added to the CL.

Example test failure on capture change:
https://chromium-swarm.appspot.com/task?id=62b5f4034527c610
when testing https://crrev.com/c/4598046/3

Tests in CI: https://screenshot.googleplex.com/77o8vZVuj8AbFRj

Also adds a "angle_capture_tests_trace" lib with the trace just to test
that this capture also builds, the lib is not currently loaded by
anything.

Bug: b/286067106
Change-Id: I7d5f6eed088d84f9e3eb8a72b24b1d92515fff38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545408
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2023-06-15 22:23:29 +00:00
Igor Nazarov
3545ae0ca0 Add isContextMutexStateConsistent() ASSERT
Added `gl::Context::isContextMutexStateConsistent()` method. This method
is primarily used to check if "SharedContextMutex" activation worked
successfully. It is automatically called in the updated
`ScopedContextMutexLock` before unlocking. This is to catch possible
errors using ASSERT during normal ANGLE operation in applications and
tests.

The `ScopedContextMutexLock` is now also used instead of the
`std::lock_guard<egl::ContextMutex>` in the `SCOPED_SHARE_CONTEXT_LOCK`.
No performance regression observed.

Important note: `lockAndActivateSharedContextMutex()` is NOT 100% safe
regardless of the `kActivationDelayMicro` value, so `ASSERT` may still
fail. However,  failure does not necessary mean that there will be an
undefined behavior, it means that UB might happen.

Bug: angleproject:6957
Bug: chromium:1336126
Change-Id: Iee7357fede0d37fa315fe2cc7d27a4e30a304194
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4610227
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
2023-06-15 16:23:17 +00:00
Roman Lavrov
f102184dd7 Make Test spec JSON generator hashless.
Removes scripts/code_generation_hashes/Test_spec_JSON.json

Instead, run codegen in --verify-only mode and compare content.
This run during presubmits and is fast (~0.2s in my tests)

Similar to https://crrev.com/c/4604579

With this, should be able to auto-resolve conflicts in
infra/specs/angle.json

Also testing/buildbot/mixins.pyl
seems to have had hashes routinely updated by autorolls.

Bug: angleproject:8193
Change-Id: Ic1a657dbf464e6f4a8066ea8c5e18297e27a3b4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4605467
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-15 15:31:38 +00:00
Geoff Lang
bd5a7f24a4 Metal: Set alphaToCoverageEnabled in checkIfPipelineChanged
alphaToCoverageEnabled was tweaked to false for non-multisampled
rendering cases in RenderPipelineCache::createRenderPipelineState
but this caused a copy and could be done much earlier during context
state syncing.

Bug: chromium:1329376
Change-Id: I37a461554e1e2b162313b4a952baa1526356db3d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608484
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2023-06-15 15:27:03 +00:00