|
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>
|
|
35605ca7
|
2023-07-28T14:01:32
|
|
VVL VUID-VkDescriptorImageInfo-imageView update
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+/b6c0e88b9fab7e9a93f8c5391ebb26de38d9b9bc
the case that we hit as
VUID-VkDescriptorImageInfo-imageView-06711
is now
VUID-VkDescriptorImageInfo-descriptorType-06713
Bug: angleproject:7865
Change-Id: Ib2981b49890491719df5b474aad2a7b4e597793a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727624
Commit-Queue: Solti Ho <solti@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Solti Ho <solti@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
|
|
c319f34c
|
2023-07-28T12:30:18
|
|
Add VUID-vkCmdDraw-None VUID-vkCmdDrawIndexed-None VUIDs
08753 is now renamed to 09003
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/6215
as it's being split into multiple cases
Bug: angleproject:8242
Change-Id: I64aa75736fdb6ca9664da39f642e64f9f674b696
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4727623
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
|
|
a0977311
|
2023-07-25T12:18:30
|
|
Disable the usage of VK_EXT_legacy_dithering
Disable the usage of extension VK_EXT_legacy_dithering
on ARM until the bugs in this extension is addressed.
Bug: b/293136916
Bug: b/292282210
Change-Id: I1a548a2f6c44a78f8c66f706588a9985326217cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4718306
Reviewed-by: Solti Ho <solti@google.com>
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Kaiyi Li <kaiyili@google.com>
|
|
4cae3b09
|
2023-06-02T23:52:15
|
|
Vulkan: disable pipline cache serialization
In old NV drivers, Vulkan pipeline cache will only
generate one single huge cache for one process
shared by all graphics piplines in the same process,
which can be huge.
This is temp solution for nvidia driver cache issue.
after driver version 520. nvidia fix the cache issue.
this might affect second running performance.
Bug: b/258207403
Change-Id: I3ea3e9196ad18fb1cec16c931eb744300d6cfdb9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4713207
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
5eb30562
|
2023-07-17T07:23:03
|
|
Reland "Vulkan: Remove platform restriction of EGL_ANDROID_native_fence_sync"
Instead of enabling it on all non-Mac platforms, this time enable it
only on Linux-kernel based platforms (Linux, ChromeOS, Android). This
should avoid interfering with Fuchsia.
Original change description:
> Remove platform restriction of EGL_ANDROID_native_fence_sync
> extension except for Mac OS.
>
> Bug: angleproject:7834
> Change-Id: I116f44d8baca9cdcdd90013ca173b04461d06ae1
> Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4027707
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: mohan maiya <m.maiya@samsung.com>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Bug: angleproject:7834
Change-Id: Ida89100e8c30c3a2df5a0a8d6d0c9b7e7ce3e412
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4687427
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c0f2f71e
|
2023-06-27T16:00:09
|
|
Use VK_EXT_legacy_dithering when available instead of emulation
Yields improvement in gpu power: http://b/284462263#comment45
Bug: b/284462263
Change-Id: I5bfd115557b6baac17c05639118feaebf19c5cd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4652590
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
35c077b1
|
2023-07-14T13:22:24
|
|
Remove obsolete VUID suppressions
02859 was renamed to 08608 and
06538 was renamed to 08753 in
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/6008/commits/0cc78b9c282aa3e97316e739b88641a5d45f9463
Bug: angleproject:8242, angleproject:8119, angleproject:7105
Change-Id: Icde11d7c5b598bfb617d899daa795d3e19c8a178
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4687419
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
79ebd10a
|
2023-07-13T23:23:27
|
|
Vulkan: disable explicitlyCastMediumpFloatTo16Bit for Venus
Workaround for platforms shipping Venus until vk-gl-cts issue 4554 gets
resolved.
Bug: b/290425152
Test: CtsSkQPTestCases org.skia.skqp.SkQPRunner#gles_gradient_many_stops
Change-Id: Ia05d905a9b56264164ed3325e4966dd2976b1fe9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4684548
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4cab5e94
|
2023-07-12T10:04:10
|
|
Vulkan: Enable timeline semaphores if supported by device
This is needed for a similar change in Chromium to function with
`--enable-features=VulkanFromANGLE`.
Bug: angleproject:8253
Change-Id: I422964ea010c650439dd4797ee8ba7b533f26a87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4675807
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3cc3327c
|
2023-07-07T10:29:45
|
|
Vulkan: limit preferCPUForBufferSubData flag to mali job manager
This feature flag was introduced with testing on pixel 6 pro with
aliexpress trace. The GPU has a job manager does the scheduling and
transfer workload was put in the same job queue as geometry work which
causing unnecessary bubble in the pipeline. This problem does not exist
on newer GPU architecture where it has a command stream front end that
transfer has its own dedicated queue. As test result on pixel 7 devices
indicates, this feature flag shows no difference on pixel 7with
aliexpress trace, and has negative perf impact with gangstar_vegas
trace. This CL limits the feature flag to ARM's job manager based GPU.
This improves gangstar_vegas frame time from 8.4576ms to 4.6370ms on
pixel 7 pro.
Bug: b/289436017
Change-Id: I604fb1e26d0a99bcf8f4c2574ced360c31ac712d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4671326
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cb5cd76d
|
2023-07-03T15:54:58
|
|
Manual roll vulkan-deps from 2b2cba62bfea to e21365bc9170 (38 revisions)
Manual roll requested by ynovikov@google.com
Suppress new VUIDs:
"VUID-vkCmdDrawIndexed-None-08608",
"VUID-vkCmdDraw-None-08753",
"VUID-vkCmdDrawIndexed-None-08753",
https://chromium.googlesource.com/vulkan-deps.git/+log/2b2cba62bfea..e21365bc9170
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/9575e33186..3ebb72cc74
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/2d3a152081..b8e742c91b
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/310a67020a..58459c2b1a
* vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/b6a29e5ca8..ad5f8ee975
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/a1d9d485ce..dce85674e2
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/247c806c93..2e5260d44c
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/926ffb1f41..4400858043
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,ianelliott@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: angleproject:8242
Change-Id: I475146b418565e633043f6b57cb07baedcff02ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4662877
Commit-Queue: Ian Elliott <ianelliott@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
db3537aa
|
2023-07-03T15:56:42
|
|
Vulkan: Suppress VVL "VUID-vkCmdDraw-None-08608"
Bug: angleproject:8242
Change-Id: Ia446cfc370ad6ade4967644416dee9e18aaaa0d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4664612
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
77c4b677
|
2023-06-28T08:23:23
|
|
Vulkan: Suppress PointSize VVL error
Bug: angleproject:8237
Bug: angleproject:2796
Bug: b/288961771
Change-Id: I7e4b364225c61fd72091e9d84d45eb71a02a5597
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4653398
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
|
|
f150cf10
|
2023-06-23T02:56:09
|
|
Vulkan: minor pipeline cache chunk key hash bugfix
The hash key was not correctly streaming the chunk index into the key
string -- "chunkIndex" here is a uint8_t, which the ostream incorrectly
identified as a character rather than byte. So the "std::hex" modifier
didn't have any effect and chunkIndex 0 had a truncated key.
Bug: angleproject:8231
Change-Id: Icb4977b658214979e08f66fcb98217259d4799ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639493
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
113f847b
|
2023-06-26T12:07:52
|
|
centralize basic OS/platform detection functions
We had multiple different places that defined these, and with varying
naming schemes. Centralize them to be defined in platform_helpers.h.
Also renaming the IsApple(uint32_t) functions to IsAppleGPU(uint32_t) to
avoid ambiguous meaning: "IsApple" should mean "is Apple-vended OS"
while "IsAppleGPU" should mean "is Apple GPU vendor ID".
Bug: angleproject:8229
Change-Id: If4e3fc5ac1b5b8ad416663950a1b2ee912ccad99
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4647291
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Steven Noonan <steven@uplinklabs.net>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
42c3a9fe
|
2023-06-23T03:53:09
|
|
Vulkan: support creating context with MoltenVK on macOS
The Vulkan loader somewhat recently introduced a requirement that
clients must opt-in to using portability implementations of Vulkan (such
as MoltenVK). Since there is no native Vulkan driver for macOS (and
therefore no alternative), unconditionally enable the portability
enumeration extension there.
Bug: angleproject:8229
Change-Id: I24f0f24e25abd277855ed9ac4de370cfb47d3266
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639495
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
|
|
5f9548c3
|
2023-05-19T11:51:04
|
|
Vulkan: Free the garbage memory before realloc
Currently image allocations fall back to system memory in case of
a device OOM. However, in some cases, it is also possible to gain
some memory by freeing garbage memory from the device. This allows
us to keep the allocation on the device memory.
* Updated the image allocation fallback, so we will try cleaning the
garbage memory through the renderer before retrying the allocation.
* finishOneCommandBatchAndCleanup() in RendererVk, which will call a
similar function in its CommandQueue. It will be called until there
are no more in-flight submissions.
* The existing finishOneCommandBatchAndCleanup() in CommandQueue has
been renamed to finishOneCommandBatchAndCleanupImpl().
* Updated the flags used for VMA image allocations. If any device memory
is freed after garbage cleanup to make enough space for the new
allocation, it will take precedence over the system memory.
* Added unit tests in which a new image allocation could happen on the
device after freeing the garbage memory.
* They use a 2D texture and a 2D texture array for garbage.
Bug: b/280304441
Change-Id: Ia5e605e180833b44af8c77550ab1b0b8ba21724e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4547941
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
131acc31
|
2023-06-23T04:12:09
|
|
Vulkan: fix blob caching of initial pipeline cache
When creating a new pipeline cache and the blob cache doesn't have
a matching one we can load, we unintentionally skipped serializing it to
the blob cache until the pipeline cache state changed later on.
Bug: angleproject:8230
Change-Id: If86d1bd169a63da9f9a394284a754bccb7d52e20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639496
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ac4f52c4
|
2023-06-22T01:47:33
|
|
Vulkan: release all resources on RendererVk destroy
The most important part of this is unloading the libvulkan handle. We
open the handle in ::initialize but we were previously only unloading it
in ::~RendererVk[1]. Since a DisplayVk (and RendererVk) are not
destructed in between context creations, this meant that the libvulkan
library handle reference count only increased, never decreased.
[1] Which, incidentally, never gets invoked, ever. We create Display
instances and they live forever in a static structure and we only
::initialize/::terminate them.
Bug: angleproject:8225
Change-Id: I03da9b19f0c4ae3b5efacd07880aadb7ee77ebf5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636882
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ac263582
|
2023-06-19T12:26:44
|
|
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>
|
|
15156b1d
|
2023-06-19T11:58:20
|
|
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>
|
|
2e0b369d
|
2023-06-19T12:05:24
|
|
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>
|
|
152e0d16
|
2023-06-19T14:44:09
|
|
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>
|
|
5a5f21f4
|
2023-06-14T14:05:41
|
|
Disable supportsExtendedDynamicState on ARM
There are multiple issues with dynamic states on
ARM. Previously we have disabled individual dynamic
state that had issues, but it turns out some dynamic
states need to be enabled/disabled together for tests
traces to work correctly.
Disabling the supportsExtendedDynamicState until
all the issues are addressed.
Bug: b/287318431
Bug: b/285196249
Bug: b/286224923
Change-Id: If2f039b8392898e1e42b5da6b1277e82818a1b1a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615995
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
ef582ba3
|
2023-06-13T00:22:34
|
|
Vulkan: Suppress vertex attribute divisor VUID
... to unblock the roller. Need to investigate if the failure is real.
Bug: angleproject:8203
Change-Id: I958de60188a67e519d7d3b27c52b9ea260d36d80
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4610083
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
4384e49c
|
2023-06-12T08:20:03
|
|
Vulkan: Disable some dynamic states on ARM
Bug: b/286224923
Bug: b/285196249
Bug: b/285124778
Change-Id: Ia19a278581d6586a2e1efcc46987925dcc9ccd3e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608501
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
6433724c
|
2023-06-02T23:51:30
|
|
Revert "Enable usePrimitiveRestartEnableDynamicState on ARM driver 43"
This reverts commit 0ea8e55a6f0667c2bb189d95987833231cdb22b2.
Reason for revert: http://b/285543622
Original change's description:
> Enable usePrimitiveRestartEnableDynamicState on ARM driver 43
>
> The dynamic state bug is fixed in ARM 43.
> Venus has backported the driver fix, therefore we
> also enable primitiveRestartEnable dynamic state
> on venus.
>
> Bug: b/275210062
> Bug: b/282621541
> Change-Id: I5debd5146386f7e245610fb71c84e4a48b04e85b
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4581051
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Bug: b/275210062
Bug: b/282621541
Change-Id: I529669f82fdb6ceb53e6740c9737cd061cbaf450
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4585317
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
0ea8e55a
|
2023-06-01T10:25:44
|
|
Enable usePrimitiveRestartEnableDynamicState on ARM driver 43
The dynamic state bug is fixed in ARM 43.
Venus has backported the driver fix, therefore we
also enable primitiveRestartEnable dynamic state
on venus.
Bug: b/275210062
Bug: b/282621541
Change-Id: I5debd5146386f7e245610fb71c84e4a48b04e85b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4581051
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
c80fc88a
|
2023-05-18T17:38:25
|
|
Vulkan: Add version to pipeline cache header
* Added version as a field in the pipeline cache header. It is set by
the value of kPipelineCacheVersion.
* kPipelineCacheVersion must be incremented in case of any changes
to the cache header or data structure.
* This makes it easier to detect whether a change in the data is
coming from the header/data change or from data corruption. If
the version in the cache line matches kPipelineCacheVersion, some
values in the header must meet certain conditions. Otherwise, it
will result in a crash due to data corruption.
Bug: b/246683126
Change-Id: Iaf1a2e1111cf47602dba947516ad8998d96dc943
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4546263
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b0e9bbd7
|
2023-05-31T14:23:40
|
|
Vulkan: Split features for dynamic state
When a driver bug with dynamic state is encountered, it is hard to debug
which dynamic state exactly is causing an issue, due to the current
granularity of disabling all entire state from an extension. With this
change, every dynamic state gets its own ANGLE feature, and can be
toggled as necessary.
Disabling the supportsExtendedDynamicState* features implicitly
disables all dependent features.
Bug: b/285124778
Bug: b/275210062
Bug: fuchsia:107106
Bug: angleproject:5906
Change-Id: Ic291279872df2d0eb58618ff364ab118bdcc4a9f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4577553
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
dfb2bab0
|
2023-05-25T15:08:19
|
|
Apply Aliased Decorators To Image DataTypes
Bug: b/274478912
Bug: b/266235549
Change-Id: I2cd272a1e7481a8803be63efe0be11c61560b23e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4568287
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eaa53279
|
2023-05-30T14:37:03
|
|
Add mDitheringFeatures to mEnabledFeatures
Missed in https://crrev.com/c/4567572
Also adds mSwapchainMaintenance1Features, which was missing in the same
place, and I was using that as a reference in the CL above.
Bug: b/284462263
Change-Id: I225cbd40d35eb09ea6220a6669574e19ce6cce83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4574570
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ff110417
|
2023-04-21T15:16:03
|
|
Vulkan: Emulate RGB32 uniform texel buffers when unsupported
Applies to: GL_RGB32F, GL_RGB32I, GL_RGB32UI
When VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT is specified for these
formats by the Vulkan driver, behavior is the same as before.
When it is not speficied: previously ANGLE wouldn't enable
GL_EXT_texture_buffer unless exposeNonConformantExtensionsAndVersions
was enabled; now ANGLE always enables it and does the RGB->RGBA
conversion (GPU) under the hood and tracks buffer content updates using
the paths added for tracking this for Vertex Arrays.
Bug: b/278585075
Bug: angleproject:8128
Change-Id: I4605719bf3f51c5a10c1a35ecae767833dcd45d7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4456498
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
16b9a16a
|
2023-05-26T14:45:15
|
|
Add supports_legacy_dithering feature
VK_EXT_legacy_dithering =>
VkPhysicalDeviceLegacyDitheringFeaturesEXT.legacyDithering =>
supportsLegacyDithering
Now getting enabled=true on Android master.
Bug: b/284462263
Change-Id: Ibf43184c78d9847044b10413d2050b653e452c9b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567572
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6f2128a5
|
2023-05-25T10:45:08
|
|
Disable stencil write mask workaround on latest ARM
The bug has been fixed in ARM r43.
Bug: b/279715714
Bug: angleproject:7556
Change-Id: I01f08459ab90fed4eb1d57194cea3805d7868c18
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4566953
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
33e38862
|
2023-05-24T00:00:00
|
|
Vulkan: Limit clampFragDepth workaround to affected drivers
Bug: angleproject:3970
Change-Id: I708591d86b8f2cb10d0cbdc7c14518fda45ac626
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4562134
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
934a25bc
|
2023-05-22T00:00:00
|
|
Vulkan: Implement EXT_depth_clamp
Bug: angleproject:8047
Change-Id: I73244f5dcd6eeeb1889214ee3a611e4ecabbfe7e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4558744
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
ac4649ef
|
2023-05-17T12:50:59
|
|
Vulkan: Update last CRC check for pipeline cache
* In GetAndDecompressPipelineCacheVk(), a mismatch in the final CRC
check before decompression is now fatal. If the expected CRC is
non-zero, the cache header data will be logged before crashing.
The only exception is when the expected CRC is 0, in which case
there will only be a warning about the CRC mismatch.
Bug: b/246683126
Change-Id: Ic2eb882bcc692b2a8f026cc90a0185a29d48f382
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545957
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7abc5248
|
2023-05-19T00:00:00
|
|
Vulkan: Enable VK_EXT_depth_clamp_zero_one
Replaced the 'depth_clamping' workaround
with the dedicated extension or explicit
fragment depth clamping.
Fixed: angleproject:3970
Bug: angleproject:8077
Change-Id: Ia7666fcb3e0e949922c13a3fd11b818cbc5a8e26
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545084
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b76166d0
|
2023-05-18T09:57:25
|
|
Vulkan: Separate image and sampler 2D view of 3D features
The sampler feature is used to determine if EGL_KHR_gl_texture_3D_image
can be exposed. The image feature is used to support base GLES 3.1
storage images.
Bug: b/274478146
Change-Id: Ifb283633078ace7ee65f8aafe756d0a02b727bd7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4545005
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
80dd54f9
|
2023-05-17T22:16:59
|
|
Vulkan: Enable VK_EXT_image_2d_view_of_3d and set flag
Based on a change by Yiwei Zhang <zzyiwei@chromium.org>
Enabling the extension was missed from
https://chromium-review.googlesource.com/c/angle/angle/+/3648586, and
some implementations do rely on the feature enablement (e.g. RADV). This
also fixes the VVL violations on satisfied implementations.
Additionally, the VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT flag is
always set on 3D images when this extension is supported; it is
needed for both sampled and storage images, not just storage images.
Bug: b/274478146
Change-Id: Ibc210275e2d39ac0c54d1ae4c2451a5402360972
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4544762
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
cda716b3
|
2023-05-12T15:43:35
|
|
Expand numChunks to 16 bits in cache header
On some devices, the number of chunks for the pipeline cache header
might exceed the 8-bit limit.
* numChunks and chunkIndex are expanded to 16 bits.
* Padding added for the alignment of CacheDataHeader.
* Updated the assert checks for numChunks and chunkIndex.
Bug: b/246683126
Change-Id: I40a4224e845dc5bc6e415ec5f15b16f60f7923af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528541
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8539177c
|
2023-05-12T15:27:03
|
|
Vulkan: Change pipeline cache header into class
Currently the pipeline cache header is represented by a single value
of type uint64_t. This prevents us from expanding the header if needed,
for example if there is a need to increase the size of any of the data
already included, such as numChunks, or add new data to the header.
* Added the class CacheDataHeader to RendererVk.cpp, which is comprised
of various elements of fixed size.
* Replaced the uint64_t with CacheDataHeader. memcpy() is used for data
transfer.
* The order of the values is based on LSB, similar to the order in
the original uint64_t.
* Removed kBlobHeaderSize, replaced with sizeof(CacheDataHeader).
* In GetAndDecompressPipelineCacheVk(), replaced the assert for chunk
index 0 with a warning regarding unexpected values and the function
returning without success. The assert was removed since in the case
of expanding the chunk index beyond 8 bits, a non-zero value could
be decoded.
* numChunks and uncompressed data size are also checked to make sure
they are non-zero before continuing the decompression. Otherwise,
the function would return with no success.
Bug: b/246683126
Change-Id: I4caaaef28c3e9ab2a7ca22f89962c11705577be5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528540
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
6f959e07
|
2023-04-28T16:00:11
|
|
Vulkan: Add non-device memory option for VMA image
* Updated the required flags for allocateAndBindMemory() to no longer
include VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, though still preferred.
This allows VMA to allocate from another memory type if the device
is out of memory.
* Added a debug message to indicate when allocated memory for VMA image
does not have all the preferred property flags.
* Also added a warning in the case of memory allocation fallback.
* Added a perf counter to keep track of image allocation fallbacks from
the device memory.
* deviceMemoryImageAllocationFallbacks
* Added a test to make sure that VMA images can still be allocated from
other memory types even if device memory is unavailable.
* VulkanImageTest.AllocateVMAImageWhenDeviceOOM
Bug: b/280304441
Change-Id: Ic452c18ded25345cdb7e271442372b99aede045e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4493483
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
560ba1c6
|
2023-05-13T01:42:21
|
|
Revert "Suppress VUID-vkCmdDrawIndexed-None-0784x"
This reverts commit aa6291aa43aa34ed5eb68c6b7faaba94ce08ef74.
Reason for revert: The roller was successful. The issue seems to have been fixed.
Original change's description:
> Suppress VUID-vkCmdDrawIndexed-None-0784x
>
> * Suppressed the following VVLs
> * VUID-vkCmdDrawIndexed-None-07840
> * VUID-vkCmdDrawIndexed-None-07841
> * VUID-vkCmdDrawIndexed-None-07843
> * VUID-vkCmdDrawIndexed-None-07844
> * VUID-vkCmdDrawIndexed-None-07845
> * VUID-vkCmdDrawIndexed-None-07847
> * VUID-vkCmdDrawIndexed-None-07848
>
> Bug: angleproject:8159
> Change-Id: Id516d0a8e677b00b3f46a456d07386c5fd91d6dc
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514440
> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8159
Change-Id: I00d45397cf72facfc60674563f95e81df80cc7c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4529339
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
17dbf435
|
2023-05-13T01:11:19
|
|
Revert "Suppress more of VUID-vkCmdDraw-None-0784x"
This reverts commit c441206103b14f68fc5cfa9434f4058429a714dd.
Reason for revert: The roller was successful. The issue seems to have been fixed.
Original change's description:
> Suppress more of VUID-vkCmdDraw-None-0784x
>
> * Suppressed the following VVLs
> * VUID-vkCmdDrawIndexed-None-07840
> * VUID-vkCmdDrawIndexed-None-07841
> * VUID-vkCmdDrawIndexed-None-07843
> * VUID-vkCmdDrawIndexed-None-07847
>
> Bug: angleproject:8151
> Bug: angleproject:8159
> Change-Id: I7fe36cfa34b8157af0be7f0c35779185a6b341aa
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514442
> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
> Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8151
Bug: angleproject:8159
Change-Id: I41082df93a55c4eec46ad7d0d048a8159472a7d2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4528542
Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
ad01f53c
|
2023-05-11T09:44:13
|
|
Vulkan: Add additional nullptr check in ShouldReportDebugMessage
Some platforms are using the callback for non-VVL messages, and we
just need an additional nullptr check for pMessageIdName when
deciding whether to print it.
Test: Trace tests on S23 with VVL enabled
Bug: angleproject:8163
Change-Id: Id76903e01be859f6ae7a6d253ed32ae54cd682ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4522466
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8b9440b6
|
2023-05-01T15:31:01
|
|
Vulkan: add option to control pipeline cache data compression.
Bug: b/258207403
Change-Id: I487b1cadbacfa2f7ee889a8f58278307a126a391
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4497248
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Hailin Zhang <hailinzhang@google.com>
|
|
3d455fe4
|
2023-05-03T15:35:47
|
|
Android: Galaxy S23 support
This CL:
* Adds detection of the device
* Adds end2end test support
* end2end test expectations for Vulkan backend
* Works around driver issue with vkCmdSetLogicOpEXT
Test: angle_end2end_tests, angle_trace_tests
Bug: b/277717225, b/281128706
Bug: angleproject:8157
Change-Id: If6caa5b2ba0b9d7f94e1be0841bcff2ea1c34d89
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4509693
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
c4412061
|
2023-05-08T18:46:10
|
|
Suppress more of VUID-vkCmdDraw-None-0784x
* Suppressed the following VVLs
* VUID-vkCmdDrawIndexed-None-07840
* VUID-vkCmdDrawIndexed-None-07841
* VUID-vkCmdDrawIndexed-None-07843
* VUID-vkCmdDrawIndexed-None-07847
Bug: angleproject:8151
Bug: angleproject:8159
Change-Id: I7fe36cfa34b8157af0be7f0c35779185a6b341aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514442
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
aa6291aa
|
2023-05-08T15:49:15
|
|
Suppress VUID-vkCmdDrawIndexed-None-0784x
* Suppressed the following VVLs
* VUID-vkCmdDrawIndexed-None-07840
* VUID-vkCmdDrawIndexed-None-07841
* VUID-vkCmdDrawIndexed-None-07843
* VUID-vkCmdDrawIndexed-None-07844
* VUID-vkCmdDrawIndexed-None-07845
* VUID-vkCmdDrawIndexed-None-07847
* VUID-vkCmdDrawIndexed-None-07848
Bug: angleproject:8159
Change-Id: Id516d0a8e677b00b3f46a456d07386c5fd91d6dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514440
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
903d9fdf
|
2023-01-19T15:37:45
|
|
Vulkan: Implement ExternalFence for use in SyncHelperNativeFence
`ExternalFence` allows concurrent usage in `CommandQueue` and
`SyncHelperNativeFence` classes eliminating need of additional
`vkQueueSubmit()` call.
Waiting in `CommandQueue` on `QueueSerial` or `ResourceUse` will ensure
corresponding state of the native FD (because `CommandQueue` will wait
on the same FD instead of some other fence).
After this change there will be only single `vkQueueSubmit()` call
from the `SyncHelperNativeFence::initializeWithFd()` method.
This CL and the follow-up is sufficient to fix the bugs below.
Bug: angleproject:8115
Bug: angleproject:8117
Test: angle_end2end_tests --gtest_filter=EGLSyncTest.AndroidNativeFence_ExternalFenceWaitVVLBug*
Change-Id: Ic562ecc71a95203454a1dc438589a13bcf3bff7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392879
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e24f4519
|
2023-01-19T02:30:39
|
|
Vulkan: Add externalFence into submitCommands()
Currently one-off fence in the `queueSubmitOneOff()` is used only in
`SyncHelperNativeFence::initializeWithFd()` to submit external fence.
Other `queueSubmitOneOff()` calls may use `QueueSerial` instead of a
fence.
Providing `fence` into `queueSubmitOneOff()` prevents tracking that
submission with `QueueSerial`. Therefore using `mUse` to collecting
`mFenceWithFd` as garbage will not work as intended.
This CL removes `fence` from `queueSubmitOneOff()` and adds
optional `externalFence` into `submitCommands()` instead.
Providing `externalFence` will cause additional `vkQueueSubmit()` call:
- first submission will submit everything as usual except using
the `externalFence`.
- second, will only submit internal `CommandQueue` fence for
`QueueSerial` tracking.
As the result of this CL, call to `initializeWithFd()` will always
produce two (2) `vkQueueSubmit()` calls. Previously it may be one (1) or
two (2) submissions. Future CL will reduce submission count to one (1).
If add additional submission into `queueSubmitOneOff()` instead of
`submitCommands()`, then maximum number of submissions will be
three (3).
Bug: angleproject:8117
Change-Id: I6f1ec12682aaab71bfc871e665fec2659df96b26
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392877
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
cd171d2e
|
2023-03-28T14:58:57
|
|
Vulkan: Enable async pipeline cache compression
* Enabled the feature after adding more header data, including original
cache size, chunk index, and CRC.
Bug: b/246683126
Change-Id: Idef85f0a6f9e0072fcb800aedb6b720cc88c46b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4378720
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
2fec8ae8
|
2023-05-02T15:53:29
|
|
Vulkan: Handle inactive render pass in draw-based clear
For simplicity, if a render pass is open for the current framebuffer but
is not active, a new one is started in UtilsVk::clearFramebuffer. A
future optimization could decide to reactive the render pass instead,
but needs to check for whether that's possible (with a condition similar
to what's found in ContextVk::handleDirtyGraphicsRenderPass)
Bug: chromium:1440764
Change-Id: I727d4ecefc2bc0a1a9e399b8851c4cc830d20879
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4499765
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
533cf9a4
|
2023-05-02T22:39:09
|
|
Vulkan: Suppress new VUID-vkCmdDraw-None VVL errors
Test: angle_trace_tests --gtest_filter="*slingshot_test2*"
Bug: angleproject:8151
Change-Id: Ifc26a57fe92b57c30f253f5bb491a1ac3932f2f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4500928
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a73e546c
|
2023-04-14T13:40:19
|
|
Vulkan: Add pending memory size for VMA images
* Added implementation for vma::FindMemoryTypeIndexForImageInfo().
* Add pending memory allocation tracking for VMA images using
the memory requirement from getMemoryRequirements() and the
memory type index from the function above.
Bug: b/218891184
Change-Id: I1c3d3a8f5f36eb57bd7a5a059aa3bf713b819831
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428535
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
dcc37e31
|
2023-05-02T13:22:18
|
|
Vulkan: Restore stencil write mask workaround for ARM
Still has issues on latest drivers.
Test: angle_trace_tests --gtest_filter="*pokemon_go*"
Bug: b/279715714
Bug: angleproject:7556
Change-Id: I4d46cdc2b86da374413f97e45858e18022e0cc7b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4499032
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b052a5bf
|
2023-03-31T00:00:00
|
|
Vulkan: Implement polygon mode extensions
* NV_polygon_mode
* ANGLE_polygon_mode
Bug: angleproject:1791
Bug: angleproject:8132
Change-Id: I2beffdad0c1569546020b78a9c6d9b8ea87c2100
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4498687
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
1fc399c6
|
2023-05-01T22:29:35
|
|
Vulkan: Adjust VVL suppression after VU consolidation
Bug: angleproject:8119
Change-Id: I42746d399841591e78114cb26c2e377e255e791e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4492542
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
2ee97f91
|
2023-04-27T15:43:03
|
|
Unconditionally enable append_aliased_memory_decorations_to_ssbo
After the discussion with Khronos group on how to
handle aliased ssbo in GL driver:
https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4321
https://gitlab.khronos.org/opengl/API/-/issues/183
it is the correct behavior to append aliased memory
qualifier to SSBOs, if restrict memory qualifier is
not specified. Unconditonally enable this feature
for all hardware.
Bug: b/266235549
Change-Id: I20c811710bb10f0de39de5707adab0262a46d296
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4485008
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
f9a700ee
|
2023-04-27T14:15:56
|
|
Disable mutable texture upload for discrete GPUs
A local case was observed for the trace "vainglory" on Linux, where
it fails due to OOM on one of the memory heaps.
* mutableMipmapTextureUpload is now disabled when discrete GPUs are
used in order to migitate OOM for VRAM.
* After this change, the heap usage for "vainglory" drops from
~3,794,862,080 to ~1,126,891,520.
Bug: b/278600575
Change-Id: Ie09d0037ffaf28640c4e36c5fff5d329c3a3f9cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4458269
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b875f47b
|
2023-04-24T11:11:03
|
|
Vulkan: Make mLastSubmittedQueueSerial reflect what it means
Right now we always update ContextVk::mLastSubmittedQueueSerial and
ContextVk::mLastFlushedQueueSerial when context becomes current, even
though it does not make any submission. It was done it this way mainly
for simplification (i.e, you will always see both queueSerial's index
the same). But this also causes a performance cost when a
mLastSubmittedQueueSerial is used to tag a resource. For example, if you
insert a EGLSync right after makeCurrent, that EGLSync may get a queue
serial number bigger than it should be, which will translate to longer
sync wait time. This CL changes these two queue serial to exact what the
name suggests, that it will only update if we made a "flush" or "submit"
call.
Bug: b/277644512
Change-Id: Ibe4c78985a3fe0726836d620202e5276894a8e7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4458532
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
f4febc9c
|
2023-04-25T10:16:47
|
|
Vulkan: Remove generic syncval suppression about storage buffers
Bug: angleproject:7125
Change-Id: I3778e82c90f9d546f4e3948894060af0173b7b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4471628
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
13935469
|
2023-04-25T09:58:42
|
|
Vulkan: Fix access mask of generateMipmap's blit
Bug: angleproject:8143
Bug: angleproject:7125
Change-Id: I6e5b6cd1f445c2c41d4b78aeb368e30cc4c5354b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4475444
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
b58ef53a
|
2023-04-14T14:27:12
|
|
Vulkan: Add size limit for VMA image suballocation
* Added kImageSizeThresholdForDedicatedMemoryAllocation, currently set
to 4MB. Any image larger than this will have its own dedicated device
memory handle via the following flag:
* VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
Bug: b/218891184
Change-Id: I00318188bf929cf6949d441e5048e9e9640fe5ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428536
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
db33a246
|
2023-04-21T13:17:07
|
|
Remove obsolete VUID suppression
Renamed in
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/5645
Bug: angleproject:8119
Change-Id: I578ee8cf538112f974ac0a3a7b80d37947993f5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4459181
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
285baade
|
2023-04-20T14:47:30
|
|
Move CRC check to before cache decompression
* Moved the CRC check to before the decompression is performed.
* Removed the asserts related to CRC, since if it is enabled,
an app is run, and then it is disabled, running the same app can
trigger the assert.
* Changed the FATAL() CRC logs to WARN() for now.
Bug: b/246683126
Change-Id: Ie4c33079b06766904649346d498234c6fc1a3415
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455550
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
60dd588e
|
2023-04-21T12:05:42
|
|
Revert "Temporarily restore obsolete VUID suppressions"
This reverts commit d0148f12bc1226a045b1b28e1a4be89e5012ef12.
Reason for revert: VVL rolled into Chromium crrev.com/c/4454789
Original change's description:
> Temporarily restore obsolete VUID suppressions
>
> To roll ANGLE into Chromium, which still has old VVL.
>
> Bug: angleproject:8119
> Change-Id: Ic0b53f8a965de5f11b5a143be2a9a05f57304547
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428872
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Bug: angleproject:8119
Change-Id: If0befdae7b69b8a4dba998f06cd022ee69d8734b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4454401
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
7d813e4e
|
2023-04-19T12:34:56
|
|
Roll vulkan-deps from c8e5e8c4c60b to 9403c35f9956 (31 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/c8e5e8c4c60b..9403c35f9956
Suppress new VUIDs:
"VUID-vkCmdDraw-None-02859",
"VUID-vkCmdDrawIndexed-None-02859",
"VUID-vkCmdDrawIndexed-None-07835",
"VUID-vkCmdDrawIndexedIndirect-None-02859",
"VUID-vkCmdDrawIndirect-None-02859",
"VUID-VkGraphicsPipelineCreateInfo-Input-08733",
Changed dependencies:
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/f449fb4ad9..25ad5e19f1
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/8c8619df2d..f035e57c17
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/4e17c284d6..db7475424c
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/7b50c36e7a..50c2f9e71a
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,jonahr@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:8119
Change-Id: I8cb9bd3b593f24af130d9239c35fb119ed6bb41b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4446977
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
6deca89e
|
2023-03-22T22:33:40
|
|
Add Spirv Instruction to explicitly cast mediump float to 16 bit
If the GLSL shader code expects the comparison between
two mediump float values returning true, but the SpirV
compiler treats one of them as 32-bit, and treats the
other one as 16-bit, the comparison would return false
instead. The SpirV compiler may not automatically cast
the mediump float values to 16 bits, because it may
utilize the RelaxedPrecision decoration to keep a mediump
float as 32-bit, so that the compiler can avoid the
type cast from 32-bit highp to 16-bit mediump.
This change adds an additional OpQuantizeToF16 SpirV
instruction to explicitly cast mediump float scalar
or mediump float vector to 16 bit, if they are assigned
with a highp float value. This ensures that if the
GLSL shader code ever compares two meiump float values,
the SpirV shader compiler is not accidentally comparing
a 16 bit with a 32 bit float value.
This fixe the deqp test failure on Pixel 6 and Pixel 7:
dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_vertex.
Bug: b/274859104
Bug: b/274408172
Change-Id: Ifd996cea14c0f77f45ae90f38c8e53cf5035139f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400404
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
a7bd3f53
|
2023-03-31T16:57:35
|
|
Fix the retrace issue for VMA image suballocation
After adding the VMA image suballocation feature, VVL errors were seen
when using the retracing script for some traces, causing failure. After
analysis, it was seen that the functionality of the allocation differs
from the original method when it comes to non-zero memory allocation.
* In allocateAndBindMemory(), the memory property flags from the
allocated memory are returned to be used for non-zero memory feature
usage.
* Added mapMemoryAndInitWithNonZeroValue() to ImageMemorySuballocator,
which is used when allocateNonZeroMemory is enabled and the allocated
memory is host-visible.
* Merged the following into ImageHelper::initializeNonZeroMemory():
* mapMemoryAndInitWithNonZeroValue()
* InitMappableDeviceMemory(); used when VMA image suballocation is
disabled.
* Moved onMemoryAlloc() inside allocateAndBindMemory().
Test: retrace_restricted_traces.py
Bug: b/277618656
Bug: angleproject:8058
Change-Id: If411a073e900c1c034d40a99e3fffefe30c82548
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4391403
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
d0148f12
|
2023-04-15T11:44:06
|
|
Temporarily restore obsolete VUID suppressions
To roll ANGLE into Chromium, which still has old VVL.
Bug: angleproject:8119
Change-Id: Ic0b53f8a965de5f11b5a143be2a9a05f57304547
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428872
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
82f1cee0
|
2023-04-13T15:28:17
|
|
Manual roll vulkan-deps from ec231c69caa6 to c8e5e8c4c60b (60 revisions)
Suppress new VUIDs:
VUID-VkGraphicsPipelineCreateInfo-Input-07905
UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch
Unsuppress obsolete VUIDs:
UNASSIGNED-CoreValidation-Shader-InputNotProduced
UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch
https://chromium.googlesource.com/vulkan-deps.git/+log/ec231c69caa6..c8e5e8c4c60b
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/77f7cdfb1e..68f073b195
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/3327924add..fc9bee27f4
* spirv-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+log/29ba249312..cfbe4feef2
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/ac335c7634..f449fb4ad9
* vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/63af1cf1ee..95a13d7b71
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/c3eb97de22..8c8619df2d
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/4ad4313da0..4e17c284d6
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/21078b582d..7b50c36e7a
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: angleproject:8119, angleproject:4883, angleproject:6442
Change-Id: I8d4d0c16ccde26e3455580349bc18fe6a76c2874
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4423456
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
28edde6f
|
2023-04-13T20:20:33
|
|
Vulkan: enable enableCompressingPipelineCacheInThreadPool for venus
Try again with aosp/2451163.
Bug: b/246683126
Change-Id: Idb66cfbace29349ddf5ed6a96146433098384689
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4426749
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c26011b8
|
2023-04-11T15:16:29
|
|
Vulkan: Make advanced blend alpha div workaround permanent
This workaround turned out to affect pretty much every driver, and
numerous GL implementations were found to work around it similarly to
ANGLE. It seems like this workaround may only be necessary for
colorburn and colordodge, but for now ANGLE applies it to all modes.
Bug: b/274528004
Bug: b/277777623
Change-Id: Id555c981a9775f949a3022b7e92c755accea7cea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4416158
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9ae918cb
|
2023-02-03T15:14:00
|
|
Reland "Vulkan: SurfaceVk should only wait for GPU work that uses it"
This is a reland of commit 5b63e1dc1d5e96018d0ad30582265a612d309f3b
The added fix is add contextVk::mLastSubmitQueueSerial into
Surface::mUse before calling finish.
Original change's description:
> Vulkan: SurfaceVk should only wait for GPU work that uses it
>
> Right now when we destroy swapchain, we call mRenderer->finish() to
> finish everything, even though the work is unrelated to this surface.
> This CL changes it to only wait for ResourceUse of all images in the
> swapChain.
>
> Bug: b/267806287
> Change-Id: I33d136ad50961fbf5fbb200ff0f89f1dbf23585d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4220723
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/267806287
Change-Id: I160fd22595fcf292cc53c055e0678befa3b8501b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4406891
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fd0ced8b
|
2023-03-31T15:07:00
|
|
Vulkan: remove isVenus from ARM driver version check
There're other ARM workarounds no longer needed by Venus atop ARM mali
ddk r40p0 and above, so we choose to forward host ARM driver version in
Venus: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22242
Bug: b/277833839
Test: workaround enabled with latest venus
Change-Id: Ic52d4fe9f3f7e8a6f87aa275e702c99668f5824f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4391232
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d58fbf04
|
2023-04-05T12:32:09
|
|
Vulkan: Wait for surface ANI semaphore only if image is used
Right now there is a bug that surface's ANI semaphore is added to
context when WindowSurfaceVk::getAttachmentRenderTarget get called,
which gets called from FramebufferVk::syncState, which is before we end
the previous render pass, due to the endRenderpass usually is deferred
until next renderPass starts. This caused ANI semaphore gets added to
the previous render pass's submission, which does not use surface, and
thus a bubble in GPU execution pipeline where the user FBO rendering
gets unnecessarily blocked until ANI semaphore is signaled. This lowers
GPU utilization and thus GPU frequency gets dropped and frame time
increased. This CL stores ANI semaphore to ImageHelper object and when
barrier is generated, the ANI semaphore is moved to CommandBuffer. When
CommandBuffer gets flushed and submitted, it gets added to the
waitSemaphores vector and submitted to vulkan. Since all use of swap
chain image must go through barrier code first (you need at least change
layout), this ensures ANI semaphore gets waited in exact and robust way.
Only the submission that references the swap chain image will be waited.
With this CL, professional_baseball_spirits reduces frame time from 3.8
ms to 2.7 ms, achieving parity with native GLES on pixel 7 pro.
Bug: b/275624771
Change-Id: Ifa6cacf9e3bc147bfde54eb7def2fca48c50aca0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400011
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
854264e3
|
2023-04-11T06:18:44
|
|
Vulkan: enable precisionSafeDivision for venus
..otherwise the legacy org.skia.skqp.SkQPRunner#gles_xfermodes2 SkQP cts
will fail across our host Vulkan implementations: mali, anv, radv, tu.
Btw, radv has been lucky due to the existing isAMD condition satisfied.
Bug: b/274528004
Change-Id: I39debe4e58d8afff0671809ac19cf9be8637f73e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4413212
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
23ec0620
|
2023-03-23T09:51:53
|
|
Vulkan: Add more data to blob cache header
This is to potentially increase blob cache robustness against
collisions and partially modified data. This CL adds 7 bytes
per chunk (8 bytes in total). During decompression, the data
will be checked in order to determine if the cache data can
be used.
* Added chunk index to the header. (1 byte)
* Added CRC16 of the compressed data to the header. (2 bytes)
* Added the original (uncompressed) data size to the header. (4 bytes)
* Moved kBlobHeaderSize to the anonymous namespace.
* Added the following GN flag to enable CRC calculation for the cache.
* angle_enable_crc_for_pipeline_cache (only available in debug mode)
* Corresponds to kEnableCRCForPipelineCache.
* When it is false, the CRC is set to 0.
Bug: b/246683126
Change-Id: I9aaf9cda52e0af07a2e1c2d0c39aca407e515701
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4378717
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3aea3cfd
|
2023-04-03T16:38:29
|
|
Vulkan: Workaround depth bias constant factor on ANV
Bug: b/249380591
Change-Id: Iaeda7faf5eb40e0e2086674d3e63bf5bc9911ab4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392893
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
29abd5a2
|
2023-03-06T11:35:45
|
|
Explicitly Add Aliased Memory Decoration in SpirV
In GLSL, aliased memory qualifier is implicitly available,
unless we explicitly specify the memory is restrict:
https://www.khronos.org/opengl/wiki/Type_Qualifier_(GLSL)#Memory_qualifiers.
However, in SpirV, aliased memory qualifier has to be
explicitly specified:
https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#AliasingSection
This change adds the aliased memory decorations to SSBO
if the GLSL does not specify the restrict memory qualifier.
This is a temporary workaround to fix the deqp test failures
on some android devices. Eventually we would like to waive this
test for ANGLE due to alised memory in Vulkan does not suppose
to affect SSBOs that have different set/binding, please refer
to this Khronos ticket for more details:
https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4321
Bug: b/266235549
Change-Id: Ic7afc417a5d421664b60e0413a011314787e14e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4312130
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
97897d92
|
2023-03-27T16:02:57
|
|
Vulkan: Work around driver bug with dynamic primitive restart
This CL forces the state to be static on buggy drivers.
Bug: b/275210062
Change-Id: Ia3391ecb19c3c9d19c05a83e11da8c718513a4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374104
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
|
|
85735eb4
|
2023-03-17T19:56:23
|
|
Vulkan: Enable async features for Secondary Command Buffers.
Since, all known problems with Secondary Command Buffers and async
features are fixed, it should be safe to allow enabling these features
for testing.
Locally, this CL passes custom build dEQP tests (EGL/GLES2/3/3.1) with
asyncCommandQueue and Vulkan Secondary Command buffers enabled.
Tests were executed on S906B that uses ANGLE as the system GLES driver.
Bug: angleproject:6811
Bug: angleproject:6100
Change-Id: Id3ef6df56f0a3bd1986f2e6047f01e6eac165fc6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350270
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
f2c5ce4e
|
2023-03-16T17:44:56
|
|
Re-enable mutable texture upload for one context
It was observed that in some apps, mutable textures are uploaded in a
context, but that context's outside RP command buffer is not flushed
at all, resulting in invalid (noise) or incorrect textures.
* Added isEligibleForMutableTextureFlush() to be used to determine
whether onMutableTextureUpload() should be called.
* Restricted the use of mutable texture upload to single-context
share groups.
* When the number of contexts becomes greater than one, the original
context's outside render pass command buffer is flushed.
* Added related tests.
* Added a test to make sure that textures can be uploaded in one
thread, and used for draw calls in another, with the help of a
sync object.
* Added a test to make sure that textures can be uploaded in the
main thread, and used in a new thread.
* Added a test in which a new context is created after mutable
mipmap textures are defined.
Bug: b/264143971
Change-Id: I66c0d8b04d39bb7244e5752aac0e46a0192f012e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4349156
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7d1a401b
|
2023-01-17T18:45:55
|
|
Vulkan: Fix freeing not completed Secondary Command Buffers.
Problem:
- Protected Context flushes its commands to the Protected
Primary Command Buffer;
- Unprotected Context flushes its commands to the Unprotected
Primary Command Buffer;
- Context with different "egl::ContextPriority" may flush commands
into different Primary Command Buffers.
- Secondary Command Buffers from all Contexts end-up in the single
"CommandBufferRecycler::mSecondaryCommandBuffersToReset" list;
- One of the Contexts submits its Primary Command Buffer, and attaches
current "mSecondaryCommandBuffersToReset" list to the "CommandBatch";
- Secondary Command Buffers of other Contexts may be collected and
later freed by "SecondaryCommandPool" without submitting/completion
corresponding Primary Command Buffers.
Fix:
- Moving "mSecondaryCommandBuffersToReset" to the new
"SecondaryCommandBufferCollector" class.
- Separate "SecondaryCommandBufferCollector" instance is stored
in the "CommandQueue" for each current Primary Command Buffer.
Additionally fixes "asyncCommandQueue" related problem:
"releaseCommandBuffersToReset()" may get outdated results if flush is
not yet executed in the "asyncCommandQueue" thread.
Bug: angleproject:6100
Change-Id: I7df161ac1f999fb34d4eccaebb603c58ecb1ac11
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4334579
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
9b6368cc
|
2023-03-14T14:48:30
|
|
Vulkan: Fix freeing Secondary Command Buffers from wrong thread.
Problem:
- Secondary Command Buffers are freed in the "CommandQueue" class.
- This may happen from any Context thread that calls
"checkCompletedCommands()" or "finish<*>()" methods.
- As the result, one Command Buffer may be freed from one thread, while
other Command Buffer from the same "VkCommandPool" is
allocated/reset/recorded in the other thread.
Vulkan spec demands external "VkCommandPool" synchronization for any
modifications (begin/end/reset/free/cmd) on its "VkCommandBuffer"s.
Fix:
- Added new "rx::vk::SecondaryCommandPool" class that replaces the
"rx::vk::CommandPool" wrapper.
- This class has "collect()" method for storing "VkCommandBuffer"s.
Collected buffers are freed from the correct thread on the next
"allocate()" call.
This CL only fixes the problem, keeping Secondary Command Buffer memory
management as is (allocate/free single buffer without reuse).
In the future CLs this behavior may be changed (reuse buffers,
reset/free entire pools).
Bug: angleproject:6100
Change-Id: If938416c4df4fe55f0cfb418b6759721ac53098b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4334577
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
29f80eda
|
2023-03-15T14:59:26
|
|
Vulkan: Hot fix crash when using Invalid VkSemaphore Object.
Problem started after the commit:
b194c21ad30145ca15153a93425a37a8211df373
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
Happens only with enabled "asyncCommandQueue" feature:
- "RendererVk::submitPriorityDependency()" creates "Vk::Semaphore"
object on the stack.
- Then submits this Semaphore with "queueSubmitWaitSemaphore()" method.
- "vk::Semaphore" passed to the "CommandProcessor"s
"enqueueSubmitOneOffCommands()" method where stored in the
"CommandProcessorTask".
- Stack "vk::Semaphore" object garbage collected by the "RendererVk"
and then destroyed.
- "CommandProcessorTask" now points to the invalid memory.
This CL changes usage of "vk::Semaphore" and "vk::Fence" pointers in
the "CommandProcessor.h" classes to Vulkan Handles. This will make API
consistent, fix this problem, and avoid similar problems in the future.
Issue discovered while testing ANGLE as a system driver on S906B with
"asyncCommandQueue" enabled. Several system processes crashed with VVL:
VUID-VkSubmitInfo-pWaitSemaphores-parameter(ERROR / SPEC):msgNum: -1328048864 -
Validation Error: [ VUID-VkSubmitInfo-pWaitSemaphores-parameter ]
Object 0: handle = 0xb4000078c1aab430, type = VK_OBJECT_TYPE_INSTANCE;
| MessageID = 0xb0d79520 | Invalid VkSemaphore Object 0xb400007831740b98.
The Vulkan spec states: If waitSemaphoreCount is not 0, pWaitSemaphores
must be a valid pointer to an array of waitSemaphoreCount valid VkSemaphore handles
(https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkSubmitInfo-pWaitSemaphores-parameter)
Bug: angleproject:8039
Change-Id: I8818288b9783b5c5a7970bf82ec721452ae57471
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4339758
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
12aefbc0
|
2023-03-16T04:43:38
|
|
Vulkan: add MESA Virtio-GPU Venus driver feature conditions
Bug: b/267576238
Change-Id: I5f0c479b23cd3465ca7560966bb4d98edf4c40df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4342819
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4edccb15
|
2023-01-17T16:17:35
|
|
Vulkan: Fixed Context Priority mixing problems.
Problem details:
- Each "egl::ContextPriority" may have separate "VkQueue".
- "CommandQueue" only has two "PrimaryCommandBuffer"s for normal
and protected content.
- Commands from multiple "ContextVk" may be written
to a single "PrimaryCommandBuffer".
- That "PrimaryCommandBuffer" may be randomly submitted
to different "VkQueue"s.
- As the result - Commands from a single "ContextVk" may be submitted
to multiple "VkQueue"s.
Fix details:
- Created separate "PrimaryCommandBuffer" (lazily allocated)
for each "egl::ContextPriority".
- Commands with different priorities can't be mixed
in a single "PrimaryCommandBuffer".
- Therefore - Commands from a single "ContextVk" will be submitted
to a single "VkQueue".
- No difference for applications that use single "egl::ContextPriority"
for all Contexts.
Notes:
Another problem when resource is used in multiple Contexts with
different "VkQueue" (Priority).
One solution is to use Semaphores.
Another is to enfore same Priority for all Contexts in a Share Group
and Default Priority when using EGLImage.
This solution was submitted in the previous CL:
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
Below test fails on G996B without this CL.
Bug: angleproject:8039
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.ContextPriorityMixing*
Change-Id: Iaa57826ca55956944f922813fcfac42f1a764dbb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194183
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cd901cdd
|
2023-03-03T17:04:27
|
|
Vulkan: Add and use rx::vk::ReleasableResource class.
This is a follow up for CL:
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
Bug: angleproject:8039
Change-Id: I9e654557d4a1ce9aee4b04f1211eeb6ae3f0e482
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306721
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
b194c21a
|
2023-02-24T15:41:00
|
|
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
This CL enforces single Context Priority for all Contexts in a Share
Group. This is necessary until Vulkan Semaphores will be used to
automatically synchronize Resource access between Contexts.
Contexts Priority updated when new Contexts is added to the Share Group.
New Priority will be the highest among all ever existed Contexts
(except if Priority is locked).
When Contexts Priority changes, all flushed commands are submitted to
the old VkQueue and semaphore is inserted into the new VkQueue.
Currently opened RenderPasses and commands will not be flushed.
When EGLImage is used in a Context, all Contexts in that Share Group
locked (forever) to the Default Priority (Medium). This is done to
simplify the implementation and because of the current limitations
(lack of mutex protection across Context Share Groups).
Notes:
- the EGL_CONTEXT_PRIORITY_LEVEL_IMG will report initial priority.
- below tests fail on G996B without this CL.
Bug: angleproject:8039
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleDifferentContextPriority*
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleInNewContextWithDifferentPriority*
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleDifferentContextPriorityUsingEGLImage*
Change-Id: Ia6a2f0084d39168a58fd7ec33edc90ece9cead05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289750
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
63a60225
|
2023-03-09T12:36:57
|
|
Ignore VUID-VkGraphicsPipelineCreateInfo-None-06573.
Occurring in certain trace tests after vulkan-deps update.
Bug: angleproject:8076
Change-Id: I267ff7ff5a41cdcfec44b11893877120d02a89ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4324721
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7ee61366
|
2023-03-09T16:18:56
|
|
Revert "Vulkan: SurfaceVk should only wait for GPU work that uses it"
This reverts commit 5b63e1dc1d5e96018d0ad30582265a612d309f3b.
Reason for revert: angle_deqp_internal_main_presubmit device lost in android rolls https://anglebug.com/8073
Original change's description:
> Vulkan: SurfaceVk should only wait for GPU work that uses it
>
> Right now when we destroy swapchain, we call mRenderer->finish() to
> finish everything, even though the work is unrelated to this surface.
> This CL changes it to only wait for ResourceUse of all images in the
> swapChain.
>
> Bug: b/267806287
> Change-Id: I33d136ad50961fbf5fbb200ff0f89f1dbf23585d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4220723
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/267806287
Bug: angleproject:8073
Change-Id: Id0bfe7be670b7d44ed91e61f2c98a189bd1f214c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4324718
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
b0d99f72
|
2023-02-22T13:48:16
|
|
Move the memory tracking classes to new files
* Moved the classes, functions, and constants related to memory
tracking to MemoryTracking.h and MemoryTracking.cpp. Main classes
include the following:
* MemoryAllocationTracker
* MemoryReport
* MemoryAllocationType
* MemoryAllocationInfo
* MemoryLogSeverity
* New static function added in RendererVk to get the Vulkan object
type name (GetVulkanObjectTypeName()).
Bug: b/262029018
Change-Id: I619001e3c24114c4fe7bf024498338bce146fced
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4284639
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ac8513fa
|
2023-03-03T16:10:32
|
|
Vulkan: Add and use ScopedQueueSerialIndex helper class.
This is a follow up for CL:
eb0475c05425d94a4516b708c1c9075e3bc423a7
Vulkan: Cleanup RendererVk::allocateQueueSerialIndex method.
Made private "allocateQueueSerialIndex(SerialIndex *)" method and
renamed to "allocateQueueSerialIndexImpl" to limit incorrect API usage.
Bug: b/267806287
Change-Id: I4d1a9875d454c29f930a5e844161d2a10dc2675b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306720
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5331491b
|
2023-03-06T17:26:30
|
|
SYNC-HAZARD-READ-AFTER-WRITE: VkNonDispatchableHandle on x86
Also link to the new bug.
Bug: angleproject:8054
Change-Id: I2421d625f64a2530768ea35497a45091a0317025
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4312523
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
5b63e1dc
|
2023-02-03T15:14:00
|
|
Vulkan: SurfaceVk should only wait for GPU work that uses it
Right now when we destroy swapchain, we call mRenderer->finish() to
finish everything, even though the work is unrelated to this surface.
This CL changes it to only wait for ResourceUse of all images in the
swapChain.
Bug: b/267806287
Change-Id: I33d136ad50961fbf5fbb200ff0f89f1dbf23585d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4220723
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|