|
cdd97fb8
|
2022-03-24T17:41:30
|
|
Reland "Vulkan: Fix invalid access with display texture share group."
This is a reland of 1099b5ef2279cfe1988a39c8e011aada59c650f1.
Original change's description:
> Vulkan: Fix invalid access with display texture share group.
> Create bufferpool that owns by RendererVk.
> If we are using EGL_ANGLE_display_texture_share_group
> extension, use the bufferpool owned RendererVk,
> otherwise, use the bufferpool owned by EGL::ShareGroup.
> The bufferpool lifetime will remain consistent with
> texture lifetime.
> Bug: chromium:1299211
> Change-Id: Ie4e87cea1dfd20dabab24e2afed6ddd92e469888
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3531155
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1299211
Change-Id: I4b8f5bcb30297f2c5f24e02404fd96011f9d843b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3550038
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
73ec28af
|
2022-03-23T21:13:45
|
|
Revert "Vulkan: Fix invalid access with display texture share group."
This reverts commit 1099b5ef2279cfe1988a39c8e011aada59c650f1.
Reason for revert: suspect culprit of 1309304
Original change's description:
> Vulkan: Fix invalid access with display texture share group.
>
> Create bufferpool that owns by RendererVk.
> If we are using EGL_ANGLE_display_texture_share_group
> extension, use the bufferpool owned RendererVk,
> otherwise, use the bufferpool owned by EGL::ShareGroup.
> The bufferpool lifetime will remain consistent with
> texture lifetime.
>
> Bug: chromium:1299211
> Change-Id: Ie4e87cea1dfd20dabab24e2afed6ddd92e469888
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3531155
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1299211, 1309304
Change-Id: Ibdc119ef6bb52352858114d72a0f1c0edcd4da5e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3546288
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Shrek Shao <shrekshao@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
1099b5ef
|
2022-03-17T17:20:44
|
|
Vulkan: Fix invalid access with display texture share group.
Create bufferpool that owns by RendererVk.
If we are using EGL_ANGLE_display_texture_share_group
extension, use the bufferpool owned RendererVk,
otherwise, use the bufferpool owned by EGL::ShareGroup.
The bufferpool lifetime will remain consistent with
texture lifetime.
Bug: chromium:1299211
Change-Id: Ie4e87cea1dfd20dabab24e2afed6ddd92e469888
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3531155
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
20e7bbb7
|
2022-03-18T17:03:18
|
|
Vulkan: Fix invalidate of attachments with emulated format
Some image formats may be emulated such that the emulated format has
more channels than the original. ANGLE clears the image once so that
these extra channels contain valid values, and carefully ensures they
are never modified.
For swapchain images with such formats, as they are automatically
invalidated at the end of the frame, a workaroud was added to make sure
they are re-cleared in the beginning of the next frame. This however
doesn't fix the issue of glInvalidateFramebuffer resulting in the
contents of attachments with such formats to be discarded (even if the
following render pass clears it, the contents are invalid in between).
This change instead makes sure invalidate of images with emulated
formats that have extra channels are handled appropriately:
- On IMR hardware, the invalidate is dropped altogether as it provides
little to no benefit.
- On TBR hardware, a clear is automatically staged on the invalidated
image.
The latter replaces the workaround that was added to make the following
render pass use loadOp=CLEAR, by adding a clear that's respected
regardless of what the future usage is.
This change also paves the way for a future change where the invalidate
of color attachments is tracked in render passes similarly to how
depth/stencil currently is. With this change, the image is no longer in
an inconsistent state where its contents are considered invalid, even
though some channels are meant to remain valid.
Bug: angleproject:6860
Change-Id: Iec5b4854dfbe3a0bf93cd5aa82c19fe116065744
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3536389
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
093d4287
|
2022-03-21T12:57:10
|
|
Roll vulkan-deps from 51988dcdccbf to 61b4f5b95321 (21 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/51988dcdccbf..61b4f5b95321
Changed dependencies:
* vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/384881cc90..32c07c0c53
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/6c8f1627a3..af4bf61013
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 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:7105
Change-Id: Id26d7dfdd9745f549ea08f584e4dd9dc88b7bc90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3539789
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a55526a5
|
2022-03-17T11:11:37
|
|
Vulkan: Ignore VUID-vkCmdDraw-None-06538.
Suspected as being incompatible API usage in ANGLE.
Bug: angleproject:7105
Change-Id: I8c806b1ae090c5bedd762c1539a228c31a553858
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3533140
Auto-Submit: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
22f177eb
|
2022-03-17T16:58:37
|
|
Vulkan: Expose advanced blend for non-coherent devices as well
Reliance on coherent behavior was accidental.
Bug: angleproject:3586
Change-Id: I86d055cf640368b57256910764c44596b23ccdd8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3535299
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
98bb4f32
|
2022-02-23T16:51:32
|
|
Vulkan: Implement advanced blend through extension
This change exposes GL_KHR_blend_equation_advanced if
VK_EXT_blend_operation_advanced is supported. No emulation is yet
implemented.
Bug: angleproject:3586
Change-Id: Ie7a442c22e028e3aa45ccef52db320e205664d49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3487951
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1760ce37
|
2022-03-03T17:29:12
|
|
Add usage of Spirv through glslang build flag
Add new build flag angle_use_spirv_gen_through_glslang.
If set, angle_enable_spirv_gen_through_glslang is enabled
and the generateSPIRVThroughGlslang feature is also enabled.
Bug: angleproject:6210
Change-Id: I8f4f71c2d01314a36b15fae795caa01a1ffa7fbc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3502529
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Brandon Schade <b.schade@samsung.com>
|
|
2d12b321
|
2022-03-03T10:42:03
|
|
Remove limit on exposeNonConformantExtensionsAndVersions to expose 3.2
Fix an issue where using the feature
exposeNonConformantExtensionsAndVersions would still be
limited to version 3.1. Remove this restraint when the feature
is enabled. Continue to limit version to 3.1 if either it is a
WebGL context or Geometry and Tessellation shader support is
not present.
Bug: angleproject:3647
Change-Id: I17f46756c22d95b39f2fd9ecb2db7ce4de903a2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3502173
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Brandon Schade <b.schade@samsung.com>
|
|
ea70300b
|
2022-03-01T14:55:00
|
|
Fix base level changes not updating FBO completeness check.
Bug: chromium:1299264
Change-Id: I0881a4916c3eeb9ee023d28d207795899417d530
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3498282
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Auto-Submit: Jamie Madill <jmadill@chromium.org>
|
|
36132a26
|
2022-02-24T10:52:31
|
|
Reland "add host cached bit for staging buffer"
This is a reland of commit e1af34a6f4fbcdc9bf1da5498f87b6d2aa8b526b
Original change's description:
> add host cached bit for staging buffer
>
> bug: b/219974369
> Change-Id: Ia31109839af9cfa5b862b72152f7189c42e48e53
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488773
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
bug: b/219974369
Change-Id: If1b69490a9cbe0784972d85d1ceac8d598c68def
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3503997
Reviewed-by: Hailin Zhang <hailinzhang@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
36ce2646
|
2022-03-04T11:37:08
|
|
Vulkan: Align the size before calling into VMA's allocator
The size we saved in BufferSuballocation object may used for
vkFlushMappedMemory() call. This will ensure that we save the aligned
size to avoid VVL error for unaligned size in that flush call.
bug: b/219974369
Change-Id: Iccf3199f43cd346dab80083d5494fbaeee39948f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3504000
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
e14a20e3
|
2022-03-04T15:05:07
|
|
Revert "add host cached bit for staging buffer"
This reverts commit e1af34a6f4fbcdc9bf1da5498f87b6d2aa8b526b.
Reason for revert: Causes VVL error on Pixel 6:
https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/237/overview
Original change's description:
> add host cached bit for staging buffer
>
> bug: b/219974369
> Change-Id: Ia31109839af9cfa5b862b72152f7189c42e48e53
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488773
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Change-Id: Ie91fe94471f48ac880c6470c69ac5e7746c603c9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3503690
Auto-Submit: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b72718d2
|
2022-02-22T16:18:45
|
|
Vulkan: Fix the data race for mUse from two threads
A data race of mUse object between two threads can occur with the
following sequences:
1) You use the buffer in the context, it adds into mResourceUseList
2) You release the buffer. Now it goes into mGarbageList, even though it
is still in the mResourceUseList.
Now this mUse object has references from two lists, the mGarbageList and
mResourceUseList, and they do not use the same mutex lock. This means
the race could happen and corrupt the mUse data. The same thing could
happen with ImageHelper object as well. This quick fix also grabs
mGrabageMutex while processing mResourceUseList. This CL creates a new
garbage list to hold garbage that has not been submitted to vulkan. And
this list will only accessed from submission thread and with
mGarbageMutex lock held. The advantage of this is that mSharedGarbage
will only have objects that already submitted, which means it is in FIFO
order so that we can break out the loop as soon as we see an uncompleted
garbage.
This bug was exposed by
MultithreadingTest.MultiContextClear/ES3_Vulkan_SwiftShader on
linux-tsan-test
Bug: angleproject:7045
Change-Id: I264c970579aaa53373a61ff067fa0e21eb410ae6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3482158
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
e1af34a6
|
2022-02-24T10:52:31
|
|
add host cached bit for staging buffer
bug: b/219974369
Change-Id: Ia31109839af9cfa5b862b72152f7189c42e48e53
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3488773
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1fd544a4
|
2022-02-25T12:22:01
|
|
Vulkan: Disable shader validation cache on Android
With local testing and code analysis, we can see that shader
validation caching doesn't work on Android. Turning it off
entirely results in a decent speedup:
Pixel 6 Pro Before: ~10000 ms
Pixel 6 Pro After: ~7000 ms
Test: angle_end2end_tests --gtest_filter="*GLSLTest*Fragment*ES3_Vulkan"
Bug: angleproject:7050
Change-Id: I8107c366b5e2dca7131626d29262d64ad9666e0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3491461
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
51967b4f
|
2022-02-11T13:01:54
|
|
Vulkan: Fix enabling external fences and semaphores
These capabilities are Instance extensions
need fixed to enable Native fences for Android
Bug: angleproject:7009
Change-Id: I9f07dc88cabd52712ebde28ba938662d7773c8b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3457743
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
5e87ae0a
|
2022-03-01T12:41:00
|
|
Use VK_ANDROID_surfaceless_query for EGLConfig formats
That extension allows DisplayVkAndroid::generateConfigs() to query the
swapchain formats (but not yet colorspaces) before ANGLE is given any
VkSurfaceKHR. This is used for creating EGLConfig's with GL_RGB10_A2
and GL_RGBA16F.
Bug: b/203826952
Change-Id: I55302c98641fbce93f7af428087430763676bdb4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3492482
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Trevor David Black <vantablack@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
b80635ca
|
2022-02-22T15:50:58
|
|
Revert "Vulkan: Suppress VVL message about allocation exceeding heap size"
This reverts commit 158d47831e77edf16721f631c1c4b45149182f4d.
Reason for revert: No longer necessary anglebug.com/6444#c20
Original change's description:
> Vulkan: Suppress VVL message about allocation exceeding heap size
>
> VMA does not check the result of vkGetBufferMemoryRequirements against
> the heap size before attempting to make an allocation, which leads to a
> validation error.
>
> The error is benign for ANGLE as the subsequent Vulkan allocation will
> fail, leading to an OOM generated by Vulkan isntead of ANGLE to the same
> effect as far as the application is concerned.
>
> Bug: angleproject:6444
> Change-Id: Ia474629971d6835f727b3fb43313a6003e3c939a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3387088
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:6444
Change-Id: I6b153f6002b35c057fed11d287e0c8211f4ada66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3480738
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Commit-Queue: Nicolas Capens <nicolascapens@google.com>
|
|
671fcf73
|
2022-02-16T14:22:38
|
|
Vulkan: Add a feature to retain SPIR-V debug info
Add a feature to retain debug info in SPIR-V blob. It is enabled
when validation layers are enabled.
Bug: angleproject:5901
Change-Id: Iccdff31ae0f12fc95d59d20e43e94b6f3d1ae00e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2850388
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
3adace15
|
2022-01-10T22:53:19
|
|
Don't expose detailed driver version info to webGL
WebGL's GL_RENDERER string now only includes basic version information
on all backends. This is controlled through a bool passed through
getBackendVersionString.
Bug: angleproject:6777
Change-Id: Ie4e3d91d22c96f175a8139fac1c66e985ed9e1b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3380263
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Sean Risser <srisser@google.com>
|
|
19f40531
|
2022-02-11T11:17:22
|
|
Vulkan: Enable subgroup feature in GenerateMipmap.comp
Enable subgroup feature to optimize shaders used for generating
mipmaps. Remove definition of SPD_NO_WAVE_OPERATIONS to enable
subgroups. Regenerate all internal shaders with target as
vulkan 1.1 to enable subgroup feature.
Bug: angleproject:7006
Change-Id: I36f50f3d27517fedb52e3028a8f6288347b1bfa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3453288
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
d285d6a7
|
2021-11-23T23:12:00
|
|
Vulkan: Use VK_EXT_depth_clip_control
Bug: angleproject:6679
Change-Id: Iea3b7a2d8db630dcea19836732de8f9e0a7a568f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3298356
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
419bca3f
|
2022-01-19T18:22:56
|
|
Vulkan: Use Vulkan API directly for BufferPool's buffer allocation
There are two motivations in this CL. 1) There are two layers of
suballocator right now. BufferPool provides first suballocation. It
tries to allocate from one of the buffers in the pool. If that failed,
it try to create a new BufferBlock (i.e, a VkBuffer). Right now that
calls into VMA which creates another pool to allocate a buffer. We
really only need one layer of suballocation. And 2) Because we uses VMA
to do actual VkBuffer allocation, we have to use Allocator object. But
VMA can not handle external buffers, so we end up having a BufferMemory
class just to handle two different cases. This CL attempts to clean up
this by let ANGLE calling into vulkan driver directly for the actual
buffer allocation, just like we did for VkImages. By doing so, we able
to remove BufferHelper::mMemory data member as well as BufferMemory
class all together. External memory is now treated exactly the same at
BufferHelper.
Bug: b/205337962
Change-Id: I7c183ab0fd7d9aceb6cf416b0214c300798bc010
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3402740
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
71d06198
|
2022-02-07T11:16:41
|
|
Vulkan: Fix vkCmdClearAttachments vs multiview
Bug: angleproject:6262
Change-Id: I5a24693bb1b35201213c2e3fa25f7864609357b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3442255
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1b9774f5
|
2022-01-26T13:37:03
|
|
Vulkan: Force submit updates to immutable textures
Submit immutable texture updates recorded in outside renderpass
commands when the following conditions are met -
1. "forceSubmitImmutableTextureUpdates" feature is enabled
2. The texture is immutable
This works around a problem that manifests in some applications
that do not perform appropriate synchronization of shared contexts.
Bug: angleproject:6929
Test: EGLContextSharingTestNoSyncTextureUploads.*
Change-Id: I2a237046e2cc53650eb8dc07e3697f7481df9b02
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3418138
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
d9fcebb8
|
2022-02-07T14:11:58
|
|
Vulkan: Make framebuffer fetch syncval errors more specific
The errors are very generic, so now they are only suppressed if
framebuffer fetch is used by the application.
This change partially relands 2eeb87488.
Bug: angleproject:6951
Change-Id: I55f444d19360d3066f1d4b0959d25e676dbb1a38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3444341
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9208dcc6
|
2022-02-07T18:23:12
|
|
Revert "Vulkan: Enable framebuffer fetch on SwiftShader"
This reverts commit 2eeb8748867c529474200d302f21f20ab461b9b4.
Reason for revert: Breaks tests for ANGLE-to-Chromium autoroller
Original change's description:
> Vulkan: Enable framebuffer fetch on SwiftShader
>
> Bug: angleproject:6951
> Change-Id: I10eeb58be9e8639c0519fc47f327a0894155b755
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3437409
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:6951
Change-Id: I35eaf2b7411d1bf055484bbb32f7e681286edd42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3442370
Reviewed-by: Ian Elliott <ianelliott@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
ac20272f
|
2022-01-19T17:13:50
|
|
Vulkan: Fix present region rectangles
EGL rectangles are specified relative to the bottom-left of the surface,
while Vulkan framebuffer space puts the origin on the top-left corner.
Bug: angleproject:6933
Change-Id: Ia57eea8601ee724c0a82eb718d831de6b7566472
Reviewed-by: Constantine Shablya <constantine.shablya@collabora.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3423770
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2eeb8748
|
2022-02-03T13:10:54
|
|
Vulkan: Enable framebuffer fetch on SwiftShader
Bug: angleproject:6951
Change-Id: I10eeb58be9e8639c0519fc47f327a0894155b755
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3437409
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bc3be5a8
|
2022-01-27T12:12:58
|
|
Vulkan: Add a dedicated suballocation garbage list
Suballocations are the most common garbage objects in most usage cases.
The current garbage collection code will construct a garbage object from
suballocation and then construct a SharedGarbage object with a
std::vector that holds only one element. And then it adds this
SharedGarbage to the garbage list. This CL tries to avoid create
std::vector with just one element and avoid the cost of switch statement
for each garbage object by adding a new dedicated garbage list that only
holds the suballocation garbages, which is the most common garbages in
the system. With gardenscapes running offscreen with --minimum-gpu-work,
it reduces CPU overhead from 2.55ms to 2.20ms on Pixel6.
Bug: b/215768827
Change-Id: Ia2872442462917c0caadb263769a1cbf3dd7366f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3414356
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
508a8a02
|
2022-01-31T15:12:55
|
|
Remove old spellings for SYNC-HAZARD-WRITE_AFTER_READ skips
Obsoleted by VVL roll crrev.com/c/3426000
Bug: chromium:1292106
Change-Id: I360dea6f97e75a25245597e96553aa86d655c340
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3428099
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
2d3ce72d
|
2022-01-20T10:13:06
|
|
Refactor shared library load to avoid allocations.
Fixes a leak of an angle::Library detected in the EGL loader.
Bug: angleproject:6937
Change-Id: I623aa6172b98a35465e1d2641b92f67bdc5d24e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3403060
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
665ddccd
|
2021-12-09T23:06:39
|
|
Vulkan: Emulate dithering
Dithering in OpenGL is vaguely defined, to the extent that no dithering
is also a valid dithering algorithm. Dithering is enabled by default,
but emulating it has a non-negligible cost. Similarly to some other
GLES drivers, ANGLE enables dithering only on low-bit formats where
visual banding is particularly common; namely RGBA4444, RGBA5551 and
RGB565.
Dithering is emulated in the fragment shader and is controlled by a spec
constant. Every 2 bits of the spec constant correspond to one
attachment, with the value indicating:
- 00: No dithering
- 01: Dither for RGBA4444
- 10: Dither for RGBA5551
- 11: Dither for RGB565
The translator appends code to the shader that, based on the format
specified by the specialization constant, adds dithering to each color
attachment output. A 2x2 Bayer matrix is used for dithering, indexed by
gl_FragCoord.xy % 2.
Bug: angleproject:6755
Change-Id: Ib45da5938e299b6626bff921119d63e7357dd353
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3374261
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
55ef2b4f
|
2022-01-28T23:24:49
|
|
Update one more SYNC-HAZARD-WRITE_AFTER_READ skip
vkCmdCopyImageToBuffer()
was changed to
vkCmdCopyImageToBuffer
in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3705
Skip both variants for now, the old one to be removed after a VVL roll.
Bug: chromium:1292106
Change-Id: I8c1a6be7bcf829c9a8b848c5ef2362462a965a11
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424667
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
168e0ae5
|
2022-01-27T16:50:00
|
|
Vulkan: Refactor descriptor pool code.
This uses vk::Context to init DynamicDescriptorPool, and removes
some accesses to ProgramExecutableVk member variables so the methods
can more easily be moved into another class.
The changes should have no effective behaviour difference.
Note that the immutable sampler descriptor count is entirely set by
the format of the immutable samplers. However we can't determine this
count by looking at the descriptor set layout desc with the current
implementation.
Bug: angleproject:6776
Change-Id: I0a323d19fa3720b5afd8300401ed9c30b105c0ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424657
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a994ea99
|
2022-01-28T17:52:16
|
|
Update SYNC-HAZARD-WRITE_AFTER_READ skip
VK_PIPELINE_STAGE_2_NONE_KHR
was renamed to
VK_PIPELINE_STAGE_2_NONE
in https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3705
Skip both variants for now, KHR to be removed after a VVL roll.
Bug: chromium:1292106
Change-Id: Ie8d095eccedc526880edf7d3601fa0aca23c1498
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3424665
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
e03f1753
|
2022-01-06T09:48:12
|
|
EGL: mutable_render_buffer deferredFlush fix
When in SINGLE_BUFFER mode, need to get around
deferredFlush and call Swapbuffers to force update
This must do status check for OUT_OF_DATE.
Bug: angleproject:6878
Change-Id: I34b7381f6799879bf6f6d490aba02feffc5c3748
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373739
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
42c8b29d
|
2022-01-05T13:35:23
|
|
Tests: Add Dead By Daylight trace.
Add GL_EXT_shader_framebuffer_fetch prerequisite.
Ignore SYNC-HAZARD-READ_AFTER_WRITE validation error in RendererVk.
Test: angle_perftests --gtest_filter="*dead_by_daylight*"
Bug: angleproject:6870
Change-Id: I01f53ff8d26b704b75afe8c02ac12777b51fd5de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3372793
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
|
|
a7970889
|
2022-01-24T11:50:27
|
|
Vulkan: Use queue instead of vector for mSharedGarbageList
The garbage collector code is iterating the mSharedGarbageList from
begin to end and if the garbage object is completed, we destroy it and
erase it from the vector. This is done one by one. The problem with that
is each erase call end up moving the remaining vector to ahead by one,
and this process is repeated for each completed element. This is O(N^2)
problem and really magnifies when you have many garbage objects. Since
we only add garbage when it is GPU pending, so most of these garbages
are in sort of fifo order anyway. This CL changes the garbage list from
vector to queue so that erase becomes pop and this becomes a O(N)
problem. This reduces CPU overhead as measured with minimize-gpu-work
for gardenscapes from 10ms to 2ms due to suballocation generates lots of
garbages. But this CL is a general improvement for the garbage
collection performance.
Bug: b/215768827
Change-Id: I002aadf75f958d8b79eb6281a2608597776e908d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3414354
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
cb96c236
|
2022-01-26T18:53:55
|
|
Revert "Vulkan: Enable framebuffer fetch on SwiftShader."
This reverts commit 5107231939b5e04d3d5e4376176db42c3ae60193.
Reason for revert: Fails new code paths in Chrome+Skia.
Bug: angleproject:6947
Original change's description:
> Vulkan: Enable framebuffer fetch on SwiftShader.
>
> This also fixes a bug with non-coherent fetch in the symbol table.
>
> Bug: angleproject:6947
> Bug: angleproject:6948
> Change-Id: I190b2e0cddf1bc1b53a79079d3e2f79ccbb40d15
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3412998
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Cody Northrop <cnorthrop@google.com>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:6947
Bug: angleproject:6948
Change-Id: I8bd6c55598552b733547e45c854f6d55768d2b65
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3417503
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
51072319
|
2022-01-25T10:41:25
|
|
Vulkan: Enable framebuffer fetch on SwiftShader.
This also fixes a bug with non-coherent fetch in the symbol table.
Bug: angleproject:6947
Bug: angleproject:6948
Change-Id: I190b2e0cddf1bc1b53a79079d3e2f79ccbb40d15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3412998
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d6dd0cb5
|
2021-09-21T15:26:13
|
|
EGL: EGL_KHR_lock_surface3 backend
Add vulkan implementation
Add test: EGLLockSurface3Test
Test: angle_end2end_test --gtest_filter=EGLLockSurface3Test
Bug: angleproject:6062
Change-Id: Id5bfe37895b550392d11e9e9cc1262c1f0288c42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3174323
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
096c268b
|
2022-01-12T15:21:02
|
|
Add a few overrides for Samsung
1. Enable perFrameWindowSizeQuery feature
2. Return correct vendor string
Bug: angleproject:5111
Change-Id: I9efb0d2168994c6f209d8730c658f2568f3d3afa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3387848
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
15439f8e
|
2022-01-13T14:58:41
|
|
Vulkan: Remove BufferMemoryAllocator
This class was added in crrev.com/c/3036256. The original intention was
to use VMA to implement buffer suballocation. Because VMA itself does
not support buffer suballocation, I was thinking to use VMA custom pool
to implement it and this class was intended to wrap all these
functionality into one class. But now thanks to Jamie's effort, VMA
exported generic suballocation algorithm via API and we have implemented
buffer suballocation using that virtual allocation API. So this
BufferMemoryAllocator class is really no longer useful. This CL mostly
reverted that CL and flatten out the buffer allocation call to directly
use VMA's Allocator object.
Bug: b/205337962
Change-Id: I0336056e440f39e2ff49fee8e0ff4b1f355cefe4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3244022
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
b5360798
|
2022-01-14T12:45:14
|
|
Vulkan: Support fetching from default FBO
If GL_EXT_shader_framebuffer_fetch is enabled, specify framebuffer
attachments as having VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT.
Add new test FramebufferFetchES31.DefaultFramebufferTest which
exercises the behavior.
Also limit exposure of either framebuffer fetch extension to be
Android only due to swapchain images requiring INPUT_ATTACHMENT.
Test: FramebufferFetchES31.DefaultFramebufferTest
Bug: angleproject:6893
Change-Id: I227e36a9844e2301f0fe0602f4e4d905874b32e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3389791
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
fa3241b7
|
2022-01-13T17:56:52
|
|
Vulkan: Move shader_framebuffer_fetch to FeaturesVk
Per feedback in http://crrev/c/3371244, move the new and existing
checks for whether the extension should be enabled. Controlling them
based on hardware vendor should be done with FeaturesVK so we can
centralize our workarounds.
Also remove the envvar-based override for non-coherent extension.
It can now be forced using ANGLE's feature system. The new way to
force the override is:
ANGLE_FEATURE_OVERRIDES_ENABLED=supportsShaderFramebufferFetchNonCoherent
or on Android:
debug.angle.feature_overrides_enabled=supportsShaderFramebufferFetchNonCoherent
Bug: b/201764768
Bug: angleproject:6519
Bug: angleproject:6870
Bug: angleproject:6872
Change-Id: Ie78ebfa94807a156b9e7f704e8a36cd38b85f878
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3389707
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
6601b8d2
|
2022-01-14T14:15:24
|
|
Vulkan: Fix storage buffer limits on geom/tess without Vulkan support
Bug: angleproject:6896
Change-Id: I7172b65b460122fcb2485921fadb360dba199283
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388117
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
30254d34
|
2022-01-14T12:54:40
|
|
Ignore VUID-RuntimeSpirv-NonWritable-06341 warning
To facilitate setting up Pixel 6 bot, where it triggers
Bug: angleproject:6896
Change-Id: I69241f56a3b26ed932f06563aca700ff77fdb2dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388195
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
158d4783
|
2022-01-13T13:30:34
|
|
Vulkan: Suppress VVL message about allocation exceeding heap size
VMA does not check the result of vkGetBufferMemoryRequirements against
the heap size before attempting to make an allocation, which leads to a
validation error.
The error is benign for ANGLE as the subsequent Vulkan allocation will
fail, leading to an OOM generated by Vulkan isntead of ANGLE to the same
effect as far as the application is concerned.
Bug: angleproject:6444
Change-Id: Ia474629971d6835f727b3fb43313a6003e3c939a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3387088
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2d105177
|
2022-01-10T11:44:37
|
|
Enable a few features for Samsung
Check for Samsung vendorID and enable a few features.
Bug: angleproject:5111
Change-Id: I17a93bfb9a094b80d185eb3d2a08ed00f528a30b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3379223
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
345cdcb0
|
2022-01-10T22:41:46
|
|
Rename features for consistency.
supports_custom_border_color -> supportsCustomBorderColor
supports_protected_memory -> supportsProtectedMemory
Also drop EXT from the end of the variable name as other variables don't
have that.
Bug: angleproject:6731
Change-Id: I60b20d84387bccbca0c4c1cbc7e341c1f5e8f0ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3378827
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
9d11a341
|
2021-12-16T13:47:04
|
|
Vulkan: Fix Vulkan SCB vs multiple subpasses
vkCmdNextSubpass must be called on the primary command buffer, so the
render pass command buffers need to be split on subpass boundaries.
This is only done when using Vulkan secondary command buffers.
Bug: angleproject:6811
Change-Id: I087fff305c757c78e87bfde4410e7de6bd1a6ba6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3344774
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
acd8fc76
|
2021-12-16T01:05:02
|
|
Vulkan: Distinguish RP and outside-RP command buffer types
What goes inside and outside a render pass command buffer is largely
mutually exclusive. Moreover, the size and frequency of allocations is
different between the two.
This change distinguishes the C++ types used for inside and outside
render pass command buffers:
- The type now documents which command buffer a function is able to
receive.
- `isRenderPass` flag passing, checking and asserting is largely
removed.
- A follow up change experiments with using different (Vulkan vs ANGLE)
secondary command buffers for inside and outside RP command buffers.
- A future change could specialize the pool behaviors per command buffer
type.
Bug: angleproject:6811
Change-Id: Ia4bc669d26ac7e94e8a0dfb9b361666c82f42cc3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3344373
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6da1ac81
|
2021-12-22T10:13:43
|
|
Vulkan: Switch ReadPixels from DynamicBuffer to shared pool
FramebufferVk::readPixelsImpl() and ImageHelper::copyImageDataToBuffer()
use per FramebufferVk DynamicBuffer. This CL removes this and uses
shared buffer pool to allocate a temporary staging buffer for readPixels
as needed and frees it immediately afterwards.
Bug: b/208323792
Change-Id: I65ddf9bf9f1f14578d9def63f5287cb1a4121dff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3354038
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
ad27d5d6
|
2021-12-21T11:22:30
|
|
Reland "Vulkan: Consolidate all vertex conversion buffers to shared pool"
This is a reland of cca412cd8b349b7281727c50f2a59d115fd90a05
Further inspection shows it was red-herring. The original CL does not
have the un-intended diff that I saw in the commit email. This is
try to reland the original CL without any modification.
Original change's description:
> Vulkan: Consolidate all vertex conversion buffers to shared pool
>
> There are various conversion buffers that holds converted vertex or
> element or index data. They are DynamicBuffer for now. This CL switches
> them to use the shared group buffer pool. With this change, all
> allocation is represented by a BufferHelper object instead of an offset.
> I am able to remove the offset arguments from a lot of APIs.
>
> Bug: b/208323792
> Change-Id: Ib611beb0c16cddbdd9ddf7b8961c439da9fa5180
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352489
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/208323792
Change-Id: I90852ad38c2b9ac423800bb6854757bcc17cd166
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3370602
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
4e85bdd9
|
2022-01-06T17:06:25
|
|
Revert "Vulkan: Consolidate all vertex conversion buffers to shared pool"
This reverts commit cca412cd8b349b7281727c50f2a59d115fd90a05.
Reason for revert: There is accidental code merge bug left in.
Original change's description:
> Vulkan: Consolidate all vertex conversion buffers to shared pool
>
> There are various conversion buffers that holds converted vertex or
> element or index data. They are DynamicBuffer for now. This CL switches
> them to use the shared group buffer pool. With this change, all
> allocation is represented by a BufferHelper object instead of an offset.
> I am able to remove the offset arguments from a lot of APIs.
>
> Bug: b/208323792
> Change-Id: Ib611beb0c16cddbdd9ddf7b8961c439da9fa5180
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352489
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/208323792
Change-Id: I18bba207d1d8bb76dff32d9855a744dba93bc6d6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3370601
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
cca412cd
|
2021-12-21T11:22:30
|
|
Vulkan: Consolidate all vertex conversion buffers to shared pool
There are various conversion buffers that holds converted vertex or
element or index data. They are DynamicBuffer for now. This CL switches
them to use the shared group buffer pool. With this change, all
allocation is represented by a BufferHelper object instead of an offset.
I am able to remove the offset arguments from a lot of APIs.
Bug: b/208323792
Change-Id: Ib611beb0c16cddbdd9ddf7b8961c439da9fa5180
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352489
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
43b0e92b
|
2021-12-13T15:38:32
|
|
Vulkan: Consolidate mHostVisibleBufferPool and mMapInvalidate
BufferVk::mHostVisibleBufferPool is allocated when BufferVk::mBuffer is
not hostvisible and we need to map it. In that case
mHostVisibleBufferPool is allocated and data copied from mBuffer to it
and the pointer to mHostVisibleBufferPool is returned to user.
BufferVk::mMapInvalidateRangeStagingBuffer is used when map is called on
a small range. In this case we allocate memory for the small range of
buffer and return that intead of waiting for entire buffer for GPU to
finish. Also when BufferSubData is called, we also needs to allocate a
staging buffer and issue a copyBuffer from staging buffer to main
buffer. This CL consolidate all these three usage cases into one
mStagingBuffer. It removes mHostVisibleBufferPool and
mMapInvalidateRangeStagingBuffer from BufferVk class. This makes overall
logic of managing data consistency much simpler as well since we only
have two buffers: The main buffer storage mBuffer or mStagingBuffer. And
mIsStagingBufferMapped tracks if mStagingBuffer is the one actually
mapped to user or not so that at unmap time we know if we should flush
the data to mBuffer or not.
Bug: b/208323792
Change-Id: I4f0c79a2d86da1a43844ed2ba83ddeb7dd4a5c0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3335216
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
e9e9a2c6
|
2022-01-04T20:14:48
|
|
Do not pass mInstance to vkGetInstanceProcAddr
for vkEnumerateInstanceVersion
Bug: angleproject:6869
Change-Id: Ifc93a067824c3467003a47bad240b3be10874ab0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3366038
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
|
|
a400e76d
|
2021-12-22T12:24:13
|
|
Vulkan: Don't expose MSRTT without VK_KHR_depth_stencil_resolve
Previously, ANGLE exposed the EXT_multisampled_render_to_texture
extension even if VK_KHR_depth_stencil_resolve was not available. This
was due to scarcity of drivers on the bots with support for this
extension and allowed partial testing.
This is no longer true. Additionally, this cleans up the expectations
because old and buggy drivers are now simultaneously filtered out.
Bug: angleproject:6845
Change-Id: I8c285a5fa5d9beeb98b48d8b056cdc8779cce6fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3353895
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2ebd583e
|
2021-12-22T11:24:43
|
|
Android: Remove setenv from common path
In Android production stress testing, the setenv call was causing a
race condition. To fix, only use setenv in the paths that need it
as a performance optimization. Specifically, FrameCapture makes
use of it every frame.
Bug: angleproject:6822
Change-Id: I452f1ef8607ca9baf15d69246932c47454a3ce46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3353893
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
34ea8111
|
2021-10-28T11:07:53
|
|
Reland "Vulkan: Don't expose MSRTT on SwiftShader"
This is a reland of fb77afd3c76301e11f5c7397d9a63d283f86036c
Original change's description:
> Vulkan: Don't expose MSRTT on SwiftShader
>
> Emulating this extension on SwiftShader is neither useful nor efficient
> (on the contrary, it hurts performance (which is true for all non-tiling
> architectures)). This extension was exposed purely to increase testing
> coverage, but is being disabled now as OOMs resulting from allocating
> the implict multisampled image is confusing Chrome. Note that
> SwiftShader exposes only a limited amount of memory.
>
> Bug: chromium:1263046
> Change-Id: Ia69b7fc63804169431885352a8f637a95ab08bd0
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3251581
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: chromium:1263046
Change-Id: I88415f3c1a7532eda5473da6acbd22acf14ae11c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3260330
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4a148e9d
|
2021-12-20T13:39:48
|
|
Revert "Vulkan: Suppress VUID-vkCmdDraw-blendEnable"
This reverts commit 797ebdde9894b4411ed304a83fdaeb8d8a91fe56.
Reason for revert: The VVL bug has been fixed.
Original change's description:
> Vulkan: Suppress VUID-vkCmdDraw-blendEnable
>
> A new VVL causes failures in BlendIntegerTest.MRT*
>
> Bug: angleproject:6355
> Change-Id: If62b1a7934574acaeb95601d7fb0a61dc5d9c99a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140159
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:6355
Change-Id: I769d34fada1c2db00513f9912ef178dcd1eb4ee9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3347648
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
83a670ab
|
2021-10-29T09:12:26
|
|
Vulkan: Implement BufferPool using VMA's virtual allocator
VMA's allocation calls used to be sub-allocating a pool of memory. What
we really want is sub-allocate a VkBuffer object. VMA recently added
support to expose the underlying range allocation algorithm via APIs,
which user can use it to sub-allocate any object. This CL uses that new
virtual allocation API to sub-allocate from a pool of VkBuffers.
In this CL we only switched BufferVk::mBuffer to sub-allocate from the
BufferPool object.
Bug: b/205337962
Change-Id: Ia6ef00c22e58687e375b31bc12ac515fd89f3488
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3266146
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
543f5750
|
2021-12-15T16:58:46
|
|
Vulkan: Disable protected memory for ARM
ARM driver reports protected memory feature support. But when we enable
the feature, even if the feature is not been used (i.e., no memory or
queue is created with protected bit), we still see quite large
performance drop, mainly due to excessive load/store unit activity. This
CL disables this feature on ARM platform until we can find a good
solution for it.
Bug: angleproject:6817
Change-Id: I57e8b3f568f3818080e56b5d6ae9d1623732d236
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343671
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
5275f487
|
2021-12-14T21:03:54
|
|
Vulkan: Disable async command queue with Vulkan SCBs
There is currently a threading hazard with ContextVk::mCommandPool,
where ContextVk records to command buffers allocated from the pool while
the async command queue thread is using other command buffers allocated
from the same pool.
While experimenting with Vulkan SCBs, disable the async command queue
feature when using Vulkan SCBs. It is unknown whether async command
queue with Vulkan SCBs is even worthwhile; if it proves to be, we could
make ContextVk maintain multiple pools and rotate between them.
Bug: angleproject:6811
Change-Id: Iac2e9337b5b109b2c7cb359109afe6ee386e4c34
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3340018
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
90c3038e
|
2021-12-14T16:46:13
|
|
Vulkan: Fix desc set updates with Vulkan SCBs
Since Vulkan SCBs are a command buffer in their own, we cannot aggregate
desc set updates to be done once after all the binds have been recorded.
This change makes sure that desc set updates are issued before bind, but
this problem could potentially also be solved with
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, by actually issuing the
writes at the end of the secondary CB, just before closing it.
Bug: angleproject:6811
Change-Id: I18e150b73a5881258679ba53a2d84acd2fc44edd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3338390
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b7a42c88
|
2021-12-13T15:53:07
|
|
Vulkan: Remove VK_EXT_swapchain_colorspace check
We don't make use of this extension since
https://chromium-review.googlesource.com/c/angle/angle/+/3208689.
Bug: angleproject:2514
Change-Id: I8b8edf5006ac1c3eeeefcadbe77249a5a6a5dda7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3335070
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d0287552
|
2021-11-15T08:51:41
|
|
Reland "Vulkan: Implement GL_EXT_multi_draw_indirect"
This is a reland of 79f9d163b4227115a3e60e027ec4d7dbe0495f64
* Added drawcount > 1 as a condition to fall back to
MultiDraw*IndirectGeneral().
* Expanded the tests to include cases with disabled support
for multiDrawIndirect.
Original change's description:
> Vulkan: Implement GL_EXT_multi_draw_indirect
>
> * Optimized the implementations of multiDrawArraysIndirect()
> and multiDrawElementsIndirect() for Vulkan
> * Added helper functions to support drawArraysIndirect() and
> drawElementsIndirect() as special cases of multiDraw*Indirect
> functions.
> * Added the flag to enable the multiDrawIndirect feature
> (drawCount > 1). The generic implementation is used if the
> flag is disabled.
>
> Bug: angleproject:6439
> Change-Id: Ibc653d93d355657f828de9c33da22428629e450f
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276044
> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:6439
Change-Id: I96c015855fabc8abbb87320a5ca71a8d92d61954
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3313412
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
5f1a0f32
|
2021-12-03T15:36:42
|
|
Vulkan: Resize deviceExtensionProps to deviceExtensionCount
This is a follow-on to a previous commit that worked around an Android
platform bug (see angleproject:6715 and b/206733351). In the second
call of vkEnumerateDeviceExtensionProperties, ANGLE asks for one more
extension than was returned by the first call (because sometimes one
more is suddenly available). After the second call, ANGLE will now
resize deviceExtensionProps to deviceExtensionCount elements to avoid
any possible use of a potentially-empty element.
Bug: b/208937840
Bug: angleproject:6715
Bug: b/206733351
Change-Id: I2195ddda4619dd1a72b2cf5bff2395d061d7780d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3315599
Reviewed-by: Jason Macnak <natsu@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
24241724
|
2021-11-22T13:26:53
|
|
Reland: Vulkan: Use vkResetQueryPoolEXT when available
This is a reland of 97aa5187ed164f1e9a22b64c966f2a747f651bfb
Original change's description:
> ANGLE currently uses vkCmdResetQueryPool to reset a query pool. As
> reported by Arm, this can cause GPU bubbles. It is better to use
> vkResetQueryPoolEXT() when available (either by Vulkan 1.2 or by the
> VK_EXT_host_query_reset extension).
>
> Bug: angleproject:6692
> Change-Id: I650d7d0f55bdf6587b75be43cc7bed2dc3eb935a
> Reviewed-on:
> https://chromium-review.googlesource.com/c/angle/angle/+/3294061
> Commit-Queue: Ian Elliott <ianelliott@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
Bug: angleproject:6692
Change-Id: Idff87977bd39ccd1d05684e48929f4cd3fa733c7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3313382
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
6a699d5d
|
2021-12-03T08:38:25
|
|
Vulkan: Allow nonconformant EXT_gpu_shader5
ANGLE can't create an ES 3.2 context on SwiftShader due to lack of
shaderImageGatherExtended, which is required for EXT_gpu_shader5.
This CL extends the exposeNonConformantExtensionsAndVersions check to
enable EXT_gpu_shader5 in the Vulkan backend.
Test: ES 3.2 traces on SwiftShader (Asphalt 9, Fortnite, etc)
Bug: angleproject:5652
Bug: angleproject:5658
Bug: angleproject:5883
Bug: angleproject:6613
Bug: angleproject:6749
Bug: b/197731391
Change-Id: I1a1ef0dd1983de39996179d27ae0399f1ef43de9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3314512
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
8e6f38e5
|
2021-12-02T17:24:32
|
|
Revert "Vulkan: Implement GL_EXT_multi_draw_indirect"
This reverts commit 79f9d163b4227115a3e60e027ec4d7dbe0495f64.
Reason for revert:
Breaks dEQP-GLES31.functional.draw_indirect* on Pixel devices:
https://blackbox.googleplex.com/dashboard/cts-graphics/target/git_master/oriole-userdebug/3/cts-angle-host-test-arm64-v8a/4
Original change's description:
> Vulkan: Implement GL_EXT_multi_draw_indirect
>
> * Optimized the implementations of multiDrawArraysIndirect()
> and multiDrawElementsIndirect() for Vulkan
> * Added helper functions to support drawArraysIndirect() and
> drawElementsIndirect() as special cases of multiDraw*Indirect
> functions.
> * Added the flag to enable the multiDrawIndirect feature
> (drawCount > 1). The generic implementation is used if the
> flag is disabled.
>
> Bug: angleproject:6439
> Change-Id: Ibc653d93d355657f828de9c33da22428629e450f
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276044
> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:6439
Change-Id: Ia4d54ef3e7652febf4d77fdaf6809f57e8e29127
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3312829
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
2fa1adf0
|
2021-11-24T18:29:13
|
|
Revert "Vulkan: Use vkResetQueryPoolEXT when available"
This reverts commit 97aa5187ed164f1e9a22b64c966f2a747f651bfb.
Reason for revert: This apparently caused crbug.com/1273344
Original change's description:
> Vulkan: Use vkResetQueryPoolEXT when available
>
> ANGLE currently uses vkCmdResetQueryPool to reset a query pool. As
> reported by Arm, this can cause GPU bubbles. It is better to use
> vkResetQueryPoolEXT() when available (either by Vulkan 1.2 or by the
> VK_EXT_host_query_reset extension).
>
> Bug: angleproject:6692
> Change-Id: I650d7d0f55bdf6587b75be43cc7bed2dc3eb935a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3294061
> Commit-Queue: Ian Elliott <ianelliott@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
Bug: angleproject:6692
Change-Id: I70d5eeb0b98f016fd262935194f8f4abee2a72b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3300309
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
79f9d163
|
2021-11-15T08:51:41
|
|
Vulkan: Implement GL_EXT_multi_draw_indirect
* Optimized the implementations of multiDrawArraysIndirect()
and multiDrawElementsIndirect() for Vulkan
* Added helper functions to support drawArraysIndirect() and
drawElementsIndirect() as special cases of multiDraw*Indirect
functions.
* Added the flag to enable the multiDrawIndirect feature
(drawCount > 1). The generic implementation is used if the
flag is disabled.
Bug: angleproject:6439
Change-Id: Ibc653d93d355657f828de9c33da22428629e450f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276044
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8b60855b
|
2021-09-15T15:16:10
|
|
EGL: implement EGL_KHR_mutable_render_buffer
Pass render buffer mode change to WindowSurfaceVk.
On mode change trigger OUT_OF_DATE. Then in CreateSwapchain,
if new mode, set the Presentation mode and the Image count.
OffscreenSurfaceVk ignores mode change.
Add MUTABLE_RENDER_BUFFER_BIT to GenerateDefaultConfig.
Test: dEQP-EGL.functional.mutable_render_buffer.*
Bug: angleproject:3966
Change-Id: I7b59708514bcda10f8d45ce5f9528aa840fcccfa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3171822
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
97aa5187
|
2021-11-22T13:26:53
|
|
Vulkan: Use vkResetQueryPoolEXT when available
ANGLE currently uses vkCmdResetQueryPool to reset a query pool. As
reported by Arm, this can cause GPU bubbles. It is better to use
vkResetQueryPoolEXT() when available (either by Vulkan 1.2 or by the
VK_EXT_host_query_reset extension).
Bug: angleproject:6692
Change-Id: I650d7d0f55bdf6587b75be43cc7bed2dc3eb935a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3294061
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ef637366
|
2021-11-19T22:38:56
|
|
Revert the order of texture sync and frame buffer object sync
This change reverts the sync order swap done in
CL a280c671f178daf73da447d1030773b58b534998,
to address a performance issue in TRex.
The crash that sync order swap was
trying to resolve was addressed by
another CL 0fcad6260a3e3943fb84657a3a7f488d1e155fb7.
Bug: angleproject:6014
Change-Id: Ie49628295b6dcd5d012dc795bf123865b1a7f893
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3292636
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1f5eb6b8
|
2021-11-17T16:42:20
|
|
Avoid Android vkEnumerateDeviceExtensionProperties() bug
This works around a race-condition during Android start-up, when ANGLE
is used as the default GLES driver and when render engine (RE) is
using SkiaGL (which uses ANGLE, which uses Vulkan). The race
condition occassionally results in different numbers of extensions
between ANGLE's first and second calls to
vkEnumerateDeviceExtensionProperties(). In that case, the second call
would return VK_INCOMPLETE instead of VK_SUCCESS. That caused ANGLE
to fail to initialize, causing RE to fail to initialize.
This change works around this problem by increasing the number of
extensions asked for in the second call to
vkEnumerateDeviceExtensionProperties().
Background: Surface Flinger uses Hardware Composer (HWC) for
hardware-based composition (e.g. using overlays), and RE for GPU
composition (e.g. rendering to combine multiple app and system windows
together). SF, RE, and HWC all start about the same time. HWC sets a
property if it can support display timing. This gets passed through
SF to RE's Vulkan loader. The Vulkan loader uses that property to
determine whether to enable the VK_GOOGLE_display_timing extension.
The Vulkan loader used to make a synchronous call to SF in
vkEnumerateDeviceExtensionProperties() in order to get this property.
That took some number of milliseconds to complete and affected the
start-up time of every Vulkan/ANGLE app. To eliminate that
performance problem, the property now propogates in an asynchronous
manner. At that time, it was thought that RE would always get the
property in time. However, a partner's experience is that
VK_INCOMPLETE is happening 0.5% of the time.
ANGLE doesn't need to use the VK_GOOGLE_display_timing extension.
This is because the Android EGL loader provides the related
EGL_ANDROID_get_frame_timestamps extension. The issue that ANGLE is
working around is that it shouldn't fail to initialize in this
situation.
Bug: angleproject:6715
Bug: b/206733351
Change-Id: I4eb2197cdcc9692518b1bf5984d06fc8a1a7d145
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3290506
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
5f755c29
|
2021-11-17T16:29:37
|
|
Vulkan: Lock around handle counter.
TSAN showed we could have a data race when multiple threads
were releasing objects because of the singleton handle
counter.
Bug: angleproject:6714
Change-Id: I23b5d343bec421a663198e7efc30c78dab2bde8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3288328
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8700d9cc
|
2021-11-17T16:17:59
|
|
Vulkan: Lock around debug annotator.
TSAN showed thread contention could happen during make current
calls and when inserting debug markers.
Bug: angleproject:6714
Change-Id: I343b0bd6efbd46621f9e69bd8a329c135aed0d90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3288327
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
06d34598
|
2021-11-17T16:16:27
|
|
Vulkan: Add mutex around cache stats.
TSAN showed thread contention could happen in multithreading
tests because of the singleton cache stats object.
Bug: angleproject:6714
Change-Id: I701aa0079b5eb9d60ef557b13ce57efba17df2fa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3288326
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c664c9fc
|
2021-11-16T12:22:47
|
|
Vulkan: Generalize barrier VVL suppression.
Seems to pop up in other tests as well. Seems to only affect
SwiftShader configs.
Run capture_replay_tests.py with the below test.
Test: BuiltinVariableVertexIdTest.LineLoop/ES3_Vulkan_SwiftShader
Bug: angleproject:6701
Change-Id: I857d4785d6e04edf96fb137a492548ed4d9fbcc4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3285445
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
316dcb56
|
2021-10-06T09:31:49
|
|
Add SwANGLE Skia Gold testing.
Required updating our system info helper to be able to retrieve
SwiftShader device information.
Bug: angleproject:6496
Change-Id: Ib38ea4da65d199433e17b87df2630c3fd77cb619
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3208646
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d27552f2
|
2021-11-11T11:43:30
|
|
Re-land: "Vulkan: Allow SystemInfo to pick ICD."
Re-land fixes build on iOS and Android with ANGLE/Vulkan.
This will be used in conjunction with SwiftShader.
Bug: angleproject:6496
Change-Id: Id38403da1e377bba293dc8368d1c1aac29bf56a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3282426
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3128c055
|
2021-11-12T14:59:46
|
|
Vulkan: Add wait semaphores to queueSubmitOneOff
For use in follow up change.
Bug: angleproject:3966
Change-Id: I5bfac51ef9d47a6df5d52268d3ce4863b848b1d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3279226
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
573f9415
|
2021-11-12T12:22:39
|
|
Vulkan: Prefer aggregate barriers on SwiftShader
SwiftShader is not currently sensitivel to stage masks, so aggregating
barriers leads to more efficient rendering.
Bug: angleproject:4633
Change-Id: I262d1e98d4b08a1ca134a1c5c64ae964ceb6cd16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3279020
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dbc0c646
|
2021-11-06T01:09:26
|
|
Vulkan: Output the reason for RP closure in command buffer
To make it easier when viewing the command buffer in a graphics
debugger, this change inserts a marker just before closing the render
pass that specifies why the render pass was closed.
Bug: angleproject:2472
Change-Id: I862e500cd58332d6e199c853315c560fe6a73dc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3265609
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a9f2e87e
|
2021-11-12T15:02:50
|
|
Revert "Vulkan: Allow SystemInfo to pick ICD."
This reverts commit b5adbe272e4829d77105e49607bf8ddafd385f17.
Reason for revert: Fails GN check on Android/iOS in Chrome:
https://chromium-review.googlesource.com/c/chromium/src/+/3276779/
Original change's description:
> Vulkan: Allow SystemInfo to pick ICD.
>
> This will be used in conjunction with SwiftShader.
>
> Bug: angleproject:6496
> Change-Id: I894aa4cf3b9473738b549de9941eb82e09234121
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276515
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=syoussefi@chromium.org,jmadill@chromium.org,angle-scoped@luci-project-accounts.iam.gserviceaccount.com
Change-Id: I198802d6bc93993d3544ed4627e131cb7b93f381
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:6496
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276045
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b5adbe27
|
2021-11-11T11:43:30
|
|
Vulkan: Allow SystemInfo to pick ICD.
This will be used in conjunction with SwiftShader.
Bug: angleproject:6496
Change-Id: I894aa4cf3b9473738b549de9941eb82e09234121
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276515
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4e26eac5
|
2021-11-10T21:19:35
|
|
Vulkan: Fix VVL warnings on extensions that are not enabled
Bug: chromium:1266094
Change-Id: Idbae6cbe2c5593665438d118f17d184f8a81f0d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3274932
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5d8a89e4
|
2021-11-02T19:57:04
|
|
Vulkan: Always override surface format GL_RGB8 to GL_RGBA8
If an app requests to create a surface with GL_RGB8, override it to be
GL_RGBA8 for Android.
This is to workaround an issue with the Android Vulkan loader which
limits which formats can be used with swapchains.
This CL also adds GL_RGB8 back to DisplayVkAndroid::generateConfigs(),
effectively reverting the following CL:
https://chromium-review.googlesource.com/c/angle/angle/+/3235466
This is being done with this CL (rather than reverting) since these
changes are required to handle surfaces created with GL_RGB8.
Bug: angleproject:6277
Bug: angleproject:6651
Change-Id: Iad78ea0d7bdf12e1e309ed6a7181f08fac38b9de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3258143
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
d7090f5d
|
2021-10-29T10:45:19
|
|
Add more attributes for EGL_ANGLE_device_vulkan
Bug: chromium:1264439
Change-Id: Ibc9676cef16411b17c833abe9559721811016eef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3264164
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
|
|
f7bcd910
|
2021-11-05T11:24:34
|
|
Vulkan: Skip VVL barrier warning on SwiftShader.
This gets tripped up from our barrier handling code.
Bug: angleproject:6656
Change-Id: Iefb1c898ca6506e81a19a0928beaf221dcdf8f4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3264225
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d2b4d9ae
|
2021-10-30T00:27:56
|
|
Revert "Vulkan: Don't expose MSRTT on SwiftShader"
This reverts commit fb77afd3c76301e11f5c7397d9a63d283f86036c.
Reason for revert: Breaks ANGLE roll into Chromium:
https://chromium-review.googlesource.com/c/chromium/src/+/3253966/
Please follow the directions here to update the reference images:
https://chromium.googlesource.com/chromium/src/+/HEAD/docs/testing/web_test_expectations.md
Original change's description:
> Vulkan: Don't expose MSRTT on SwiftShader
>
> Emulating this extension on SwiftShader is neither useful nor efficient
> (on the contrary, it hurts performance (which is true for all non-tiling
> architectures)). This extension was exposed purely to increase testing
> coverage, but is being disabled now as OOMs resulting from allocating
> the implict multisampled image is confusing Chrome. Note that
> SwiftShader exposes only a limited amount of memory.
>
> Bug: chromium:1263046
> Change-Id: Ia69b7fc63804169431885352a8f637a95ab08bd0
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3251581
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: chromium:1263046
Change-Id: I554df85109282db840ed6d2dbf0b153da5a7a98f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3254007
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
fb77afd3
|
2021-10-28T11:07:53
|
|
Vulkan: Don't expose MSRTT on SwiftShader
Emulating this extension on SwiftShader is neither useful nor efficient
(on the contrary, it hurts performance (which is true for all non-tiling
architectures)). This extension was exposed purely to increase testing
coverage, but is being disabled now as OOMs resulting from allocating
the implict multisampled image is confusing Chrome. Note that
SwiftShader exposes only a limited amount of memory.
Bug: chromium:1263046
Change-Id: Ia69b7fc63804169431885352a8f637a95ab08bd0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3251581
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
81d964a1
|
2021-10-28T10:50:51
|
|
vulkan: implement EGLDevice for vulkan backend
It allows ANGLE clients to get and use VkDevice and VkQueue
used by vulkan backend.
Bug: chromium:1264439
Change-Id: I338ac08152cfec50bb34c5025730e5e6368efba9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3250964
Reviewed-by: Peng Huang <penghuang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
|
|
421dbf20
|
2021-10-26T19:06:19
|
|
Revert "Vulkan: Use different strategy for buffer memory allocation"
This reverts commit 0dbe308d91a3526e28fecd9014d873c649f4ef71.
Reason for revert: crbug.com/1253325
Original change's description:
> Vulkan: Use different strategy for buffer memory allocation
>
> This CL uses different memory allocation strategy based on the requested
> size. If the requested size exceeds 1M, we use dedicated memory
> allocation to avoid memory waste associated with the sub-allocator.
> Otherwise we uses VMA's sub-allocator pool. This CL creates two sets of
> customized pool so that we uses different allocation strategy for each
> set of pool: the small pool uses buddy algorithm which favors speed over
> memory and large pool uses default algorithm that favors memory saving
> over speed. This CL also replaces vmaFindMemoryTypeIndexForBufferInfo
> with vmaFindMemoryTypeIndex to avoid create and destroy VkBuffer object
> just try to find memoryTypeIndex.
>
> Bug: b/195588159
> Change-Id: I2bddbfffd77ba2ce6b9389d83a31051c4b748c4d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939490
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Tim Van Patten <timvp@google.com>
Bug: b/195588159
Change-Id: I2c8fe8cb2930d16f5212570d32be68e7c6a6e5f3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3244258
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|