|
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>
|