|
d2c01d2c
|
2021-09-17T12:57:14
|
|
GL: Allow selecting virtualization groups at context creation
Rewrite EGL_ANGLE_platform_angle_context_virtualization to
EGL_ANGLE_context_virtualization, changing the context virtualization
parameter to an identifier for what virtualization group the frontend
context should be added to.
This allows ANGLE's GL backend to be used by multiple threads if the
user creates contexts with different virtualization groups.
Bug: angleproject:6406
Change-Id: I7414d4705ce10bdf63a9b824043d5dd040dad875
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3169193
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
904ac340
|
2021-04-26T15:54:25
|
|
Bug fix for WaitClient, WaitGL and WaitNative
It is valid to call eglWaitClient, eglWaitGL and eglWaitNative
when there is no active context in the current thread. Update code
to account for that possibility.
Bug: angleproject:5898
Test: EGLSyncTest.WaitClient*
EGLSyncTest.WaitGL*
EGLSyncTest.WaitNative*
Change-Id: I81f05a27f1f641cf8986e2e6c05c183ea8471889
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2849587
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
909ea88b
|
2020-11-20T13:07:53
|
|
Reland "Vulkan: Ignore glFlush to reduce vkQueueSubmits in Asphalt 9"
This is a reland of 5cf7472dd161bbda329dfc5e4e65bb6ce0c06fbd
The ShareGroupVk::mResourceUseLists was not being cleared each call to
RendererVk::submitFrame(), so it was growing indefinitely. Each
vk::ResourceUseList within it was cleared, so it was holding an
essentially "infinite" list of empty lists, but that caused the loop in
RendererVk::submitFrame() to take more and more time until the tests
timed out.
The fix is to do 'resourceUseLists.clear()' once the loop to release all
resources has completed, like releaseResourceUsesAndUpdateSerials() does
for each individual list. Additionally, ASSERTs are added to guarantee
that the lists are empty when the ContextVk and ShareGroupVk are
destroyed.
Original change's description:
> Vulkan: Ignore glFlush to reduce vkQueueSubmits in Asphalt 9
>
> Multithreaded apps can use the following pattern:
>
> glDrawElements()
> glFenceSync()
> glFlush()
> glWaitSync()
>
> This currently results in a vkQueueSubmit for every glFlush() to ensure
> that the work has landed in the command queue in the correct order.
> However, ANGLE can instead avoid the vkQueueSubmit during the glFlush()
> in this situation by instead flushing the ContextVk's commands and
> ending the render pass to ensure the commands are submitted in the
> correct order to the renderer. This improves performance for Asphalt 9
> by reducing frame times from 150-200msec to 35-55msec.
>
> Specifically, ANGLE will call flushCommandsAndEndRenderPass() when
> there is a sync object pending a flush or if the ContextVk is currently
> shared.
>
> Additionally, on all devices except Qualcomm, ANGLE can ignore all other
> glFlush() calls entirely and return immediately. For Qualcomm devices,
> ANGLE is still required to perform a full flush (resulting in a
> vkQueueSubmit), since ignoring the glFlush() reduces the Manhattan 3.0
> offscreen score by ~3%.
>
> Bug: angleproject:5306
> Bug: angleproject:5425
> Change-Id: I9d747caf5bf306166be0fec630a78caf41208c27
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2552718
> Commit-Queue: Tim Van Patten <timvp@google.com>
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:5306
Bug: angleproject:5425
Bug: angleproject:5470
Change-Id: I14ee424d032f22e5285d67accbec078ad1955dd0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2595811
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a19bd601
|
2020-12-16T13:04:38
|
|
Revert "Vulkan: Ignore glFlush to reduce vkQueueSubmits in Asphalt 9"
This reverts commit 5cf7472dd161bbda329dfc5e4e65bb6ce0c06fbd.
Reason for revert: causes timeouts, see anglebug.com/5470
Original change's description:
> Vulkan: Ignore glFlush to reduce vkQueueSubmits in Asphalt 9
>
> Multithreaded apps can use the following pattern:
>
> glDrawElements()
> glFenceSync()
> glFlush()
> glWaitSync()
>
> This currently results in a vkQueueSubmit for every glFlush() to ensure
> that the work has landed in the command queue in the correct order.
> However, ANGLE can instead avoid the vkQueueSubmit during the glFlush()
> in this situation by instead flushing the ContextVk's commands and
> ending the render pass to ensure the commands are submitted in the
> correct order to the renderer. This improves performance for Asphalt 9
> by reducing frame times from 150-200msec to 35-55msec.
>
> Specifically, ANGLE will call flushCommandsAndEndRenderPass() when
> there is a sync object pending a flush or if the ContextVk is currently
> shared.
>
> Additionally, on all devices except Qualcomm, ANGLE can ignore all other
> glFlush() calls entirely and return immediately. For Qualcomm devices,
> ANGLE is still required to perform a full flush (resulting in a
> vkQueueSubmit), since ignoring the glFlush() reduces the Manhattan 3.0
> offscreen score by ~3%.
>
> Bug: angleproject:5306
> Bug: angleproject:5425
> Change-Id: I9d747caf5bf306166be0fec630a78caf41208c27
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2552718
> Commit-Queue: Tim Van Patten <timvp@google.com>
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=timvp@google.com,jmadill@chromium.org,cclao@google.com
Change-Id: I9886bf901a835d408b6a4b8be7ea408fa2121be0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:5306
Bug: angleproject:5425
Bug: angleproject:5470
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2595032
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
5cf7472d
|
2020-11-20T13:07:53
|
|
Vulkan: Ignore glFlush to reduce vkQueueSubmits in Asphalt 9
Multithreaded apps can use the following pattern:
glDrawElements()
glFenceSync()
glFlush()
glWaitSync()
This currently results in a vkQueueSubmit for every glFlush() to ensure
that the work has landed in the command queue in the correct order.
However, ANGLE can instead avoid the vkQueueSubmit during the glFlush()
in this situation by instead flushing the ContextVk's commands and
ending the render pass to ensure the commands are submitted in the
correct order to the renderer. This improves performance for Asphalt 9
by reducing frame times from 150-200msec to 35-55msec.
Specifically, ANGLE will call flushCommandsAndEndRenderPass() when
there is a sync object pending a flush or if the ContextVk is currently
shared.
Additionally, on all devices except Qualcomm, ANGLE can ignore all other
glFlush() calls entirely and return immediately. For Qualcomm devices,
ANGLE is still required to perform a full flush (resulting in a
vkQueueSubmit), since ignoring the glFlush() reduces the Manhattan 3.0
offscreen score by ~3%.
Bug: angleproject:5306
Bug: angleproject:5425
Change-Id: I9d747caf5bf306166be0fec630a78caf41208c27
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2552718
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
aafcb504
|
2020-12-08T09:32:10
|
|
Vulkan: Add ensureSubmission to queueSubmitOneOff
Some callers of queueSubmitOneOff require that the command being queued
to have been sent to the GPU. The new ensureSubmission parameter
indicates that behavior and when running with threaded worker will wait
for the worker queue to empty before returning.
Bug: b/170312581
Change-Id: Ib620fb37f4b9b4431451ccbd10807c0dff1842af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2579041
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
6dfd855a
|
2020-03-25T03:02:08
|
|
Metal: Implement fence sync
Bug: angleproject:2634
Change-Id: If1f7bb12c0e661c8e4b5677798a92440995819e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433325
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
de4611c9
|
2020-06-04T13:44:17
|
|
Vulkan: Update eglDupNativeFenceFDANDROID() implementation.
When exporting vkfence FD with vkGetFenceFdKHR() in SYNC_FD
semantic, vkfence could be reset. Dup and store the SYNC_FD created
vkfence's FD in SyncHelperNativeFence by exporting FD during
initializeWithFd() meanwhile make the eglDupNativeFenceFDANDROID()
only dup the mNativeFenceFd in SyncHelperNativeFence.
Test: angle_end2end_tests
--gtest_filter=EGLSyncTest.AndroidNativeFence_*
Bug: angleproject:2517
Change-Id: I354185d26d0fda72baeb61702c879ed5665db6ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2230062
Reviewed-by: Jeff Vigil <j.vigil@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e20f36f4
|
2020-04-21T15:45:44
|
|
EGL: Implement EGL_ANDROID_native_fence_sync on vulkan
Check the following -
1. Vulkan ICD supports VK_KHR_external_fence_fd
2. ExternalFenceProperties and ExternalSemaphoreProperties
support Android FD.
eglCreateSync - if FD was provided import to VkFence,
else create VkFence with new FD and then
flush and submit VkFence on next vkQueueSubmit.
eglGetSyncAttrib - for status call vkGetFenceStatus.
eglDupNativeFenceFdANDROID - return FD from vkGetFenceFD call.
eglClientWaitSync - call vkWaitForFences.
eglWaitSync - dup FD, create VkSemaphore and import FD, then
flush() and add VkSemaphore to next vkQueueSubmit
as a waiting semaphore.
Extended end2end test suite with nativefence test cases.
Bug: angleproject:2517
Test: angle_end2end_tests --gtest_filter=EGLSyncTest.AndroidNativeFence_*
Change-Id: I8f6a6f4c3d71d83007f662b78377aa015a740035
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2026177
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4864413b
|
2020-02-17T15:34:33
|
|
Vulkan: Implement eglWaitNative function
Implement eglWaitNative API. It will call XSync() on XCB and
do nothing on other systems.
Bug: angleproject:4281
Change-Id: I597b75124a380df519ab10af3cab9b6e26f3194f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2059620
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b8149075
|
2019-04-30T16:14:44
|
|
Clean up ANGLE test extension functions.
None of these functions needed to be member functions. Also make the
naming more consistent.
Bug: angleproject:3393
Change-Id: I7aafe2269a48af703a87bd9a8cf4cfab9e177dd3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1574673
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5313c8a8
|
2019-01-14T17:02:52
|
|
Implement EGL_KHR_fence_sync and EGL_KHR_wait_sync
EGL_KHR_fence_sync introduces the EGLSync object and associated
create/destroy/clientWait functions. EGL_KHR_wait_sync adds the
serverWait function on top of that.
Bug: angleproject:2466
Change-Id: Iebb239a85c4471ea18b3c3a8a83b793af555e31d
Reviewed-on: https://chromium-review.googlesource.com/c/1412261
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|