|
ea71c6b6
|
2021-01-12T14:13:35
|
|
Vulkan: Emulate R32F images with R32UI
GL requires that imageAtomicExchange be supported for r32f formats.
However VK_FORMAT_FEATURE_STORAGE_*_ATOMIC_BIT is nearly unsupported
everywhere without some Vulkan extension that brings in unnecessary
support.
This GL feature is emulated by transforming the shader to use r32ui for
all images that originally specified r32f. floatToUintBits and
uintBitsToFloat is used to maintain correct usage of the image* builtin
functions.
Bug: angleproject:5535
Change-Id: Ie607089935d3283b3ffa054f4b4385b81fb8f53d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2635453
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
186fe990
|
2021-01-15T15:49:30
|
|
Vulkan: Redo RewriteAtomicCounters
With MonomorphizeUnsupportedFunctionsInVulkanGLSL and
RewriteArrayOfArrayOfOpaqueUniforms transformations run, it is no longer
possible to encounter array of array of atomic counters, or have any
passed to functions. As a result, RewriteAtomicCounters is greatly
simplified. Additionally, it is no longer necessary to pass
binding/offset information for atomic counters around and they can use
constants. This change removes dependency on the
shaderStorageBufferArrayDynamicIndexing Vulkan feature.
Bug: angleproject:3726
Bug: angleproject:3881
Change-Id: Ia43092a668f60d009eccbbceeed5deaf105a5895
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2633687
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b912eec5
|
2020-11-27T11:08:41
|
|
Vulkan: Support GL_EXT_tessellation_shader.
Shader translator changes done in http://crrev.com/c/2633936
Adds a new DIRTY_BIT_PATCH_VERTICES state to Context.
Supportes state query and transform feedback.
4 test suppressions remain as follow-up fixes.
Adds a new varying packing mode for a simple Vulkan rule set.
Based on work by Mohan Maiya (m.maiya@samsung.com).
Test: dEQP-GLES31.functional.tessellation.*
Bug: angleproject:3572
Change-Id: I4cad2cca30adb754fd12c83027673906541f566a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2568234
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
60015ff6
|
2021-01-14T02:03:07
|
|
Vulkan: Redo RewriteStructSamplers
This transformation is split into two. The first transformation solely
takes out the samplers out of structs, and potentially generates array
of array of samplers. A second transformation is added that takes any
array of array of opaque uniforms and flattens it.
A follow up change will simplify RewriteAtomicCounters which also
handles array of arrays (which is no longer possible), and removes
dependency on shaderStorageBufferArrayDynamicIndexing.
Bug: angleproject:2703
Bug: angleproject:3881
Bug: angleproject:4071
Bug: angleproject:4211
Change-Id: I352bb2bbe65ac49f4d7d753c0ba3160fa3cc925a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2628138
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cea86910
|
2021-01-14T08:13:00
|
|
Vulkan: Support EXT_clip_cull_distance extension
EXT_clip_cull_distance extension is supported except for
some features related to EXT_tessellation_shader and
EXT_geometry_shader. Also added a few compiler tests to validate
the transformation from ESSL to GLSL for Vulkan backend.
Bug: angleproject:5458
Tests: angle_end2end_tests --gtest_filter=Clip*DistanceTest*
angle_unittests --gtest_filter=*Clip*Distance*
Change-Id: Ie74e6b2b55112ad92ad111191d629b63506032ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2585987
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
fb4eea2e
|
2021-01-11T16:58:02
|
|
Vulkan: Index mandatory support table by ANGLE format.
This removes another instance of indexing a flat array by VkFormat.
With the introduction of YUV formats we no longer have a compact
table. Switching to ANGLE format indexing allows us to keep a flat
array and avoid using an unordered map.
Bug: angleproject:5438
Change-Id: I96caa19e3b7ce419ce09680399919447f002b0bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2622238
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2e9706d8
|
2021-01-08T17:29:42
|
|
Vulkan: Use angle::FormatID instead of VkFormat.
This change switches the internal enums we pass around from VkFormat
to FormatID. The end goal of the refactor is to allow the Vulkan
back-end to store packed tables indexed by FormatID. Because VkFormat
has large gaps in its enum space we'd otherwise need to use unordered
data structures like unordered_map.
The change removes the redundant VkFormat storage from vk::Format and
uses a new table query to return the VkFormat that 1:1 matches an
angle::FormatID. We also include a reverse mapping for use with native
Vulkan get functions for Android.
Also moves sRGB conversion functions into renderer_utils. A couple
sRGB formats that don't exist in GL are no longer handled by the sRGB
conversion functions. These formats should be extremely rare.
Bug: angleproject:5438
Change-Id: Id8b49773ca0c556f9f5a6a10fcf0d9762b93bbea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2618204
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
c0bbe6cf
|
2020-12-16T11:56:52
|
|
Unsuppress TextureCubeTest.CubeMapFBO on Intel/Win/Vulkan
This disables forceCpuPathForCubeMapCopy as well
Bug: angleproject:2822
Bug: angleproject:3055
Change-Id: Iecb37d0c2d109e319c67310dd64ad8d4bbc14fd8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2594707
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
98b56e60
|
2020-12-12T16:28:21
|
|
Vulkan: Accumulate internal cache stats in renderer
The CacheStats of all internal caches are accumulated
by the renderer.
In order to see the hit ratios of all caches, the
following GN args must be enabled:
is_debug = true
angle_enable_perf_counter_output = true
Bug: angleproject:5447
Test: Manual verification with angle_end2end_tests
Change-Id: Iaca3249192e9e4e130d8291b7759c459d79b06ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2588430
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
da8c2261
|
2020-12-12T16:39:55
|
|
Vulkan: Enable FramebufferVk cache on Apple
This effectively reverts ff60aba. The crash no longer
occurs on Apple.
Bug: angleproject:4442
Change-Id: I4aa745c80a482eb99311f3810e34124afe950cfe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2588429
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
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>
|
|
f2a15485
|
2020-12-04T14:07:24
|
|
Suppress memory leaks detected by LSAN
In order to be able to land SwANGLE in Chromium, this cl adds
suppressions for memory leaks detected by LSAN. Some of these should
be fixed and some are intentional leaks of global variables.
This cl should allow the linux_chromium_asan_rel_ng bot to pass while
using SwANGLE and shouldn't break the win-libfuzzer-asan-rel bot.
Bug: chromium:972686
Bug: angleproject:5377
Change-Id: I7e2336aba43fcfeb95716d6c0aa05caf855134aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2575200
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
|
|
51a0e95d
|
2020-12-04T16:34:53
|
|
Revert "Suppress memory leaks detected by LSAN"
This reverts commit 2ded93db0a0d0767e6101dfaf738167ee406b2e6.
Reason for revert: Appears to be breaking the ANGLE roll
Original change's description:
> Suppress memory leaks detected by LSAN
>
> In order to be able to land SwANGLE in Chromium, this cl adds
> suppressions for memory leaks detected by LSAN. Some of these
> should be fixed and some are intentional leaks of global
> variables.
>
> This cl should allow the linux_chromium_asan_rel_ng bot to pass
> while using SwANGLE.
>
> Bug: chromium:972686
> Bug: angleproject:5377
> Change-Id: I50a30e74a7d7c799c9dfa4d307792a56cb9d2017
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2562748
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
TBR=sugoi@chromium.org,syoussefi@chromium.org,jmadill@chromium.org,sugoi@google.com
Change-Id: I2ab53f3ab89143ea639424f108c404f884c3aaf9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:972686
Bug: angleproject:5377
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2574796
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
2ded93db
|
2020-11-27T11:15:55
|
|
Suppress memory leaks detected by LSAN
In order to be able to land SwANGLE in Chromium, this cl adds
suppressions for memory leaks detected by LSAN. Some of these
should be fixed and some are intentional leaks of global
variables.
This cl should allow the linux_chromium_asan_rel_ng bot to pass
while using SwANGLE.
Bug: chromium:972686
Bug: angleproject:5377
Change-Id: I50a30e74a7d7c799c9dfa4d307792a56cb9d2017
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2562748
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
|
|
968fccb2
|
2020-12-02T13:28:30
|
|
Vulkan: Use VK_EXT_device_memory_report extension
This CL can enable and use the VK_EXT_device_memory_report extension.
This is disabled by default. To enable, link with the required
extension, enable one or both of two features, AND build with the
following GN arg:
angle_enable_trace = true
The two added features are:
- logMemoryReportStats provides per-swap statistics
- logMemoryReportCallbacks provides per-callback logging
If either or both of the features are enabled, if the
VK_EXT_device_memory_report extension is available, it is enabled.
Bug: b/173636655
Change-Id: Ic5cf6c06efdb34f2313ef143853b3cc90f55faa5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2543506
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
e674625d
|
2020-11-20T13:05:49
|
|
Reland "Vulkan: Fix incorrect exposure of sRGB extensions"
This is a reland of abcabb474bf1c25eea48d7dca14bcafde737eba7
only we continue to suppress the validation error
Original change's description:
> Vulkan: Fix incorrect exposure of sRGB extensions
>
> When we check to see what formats we can reinterpret for sRGB
> extensions, we need to make sure we can match the image usage
> flags as well. If the original format supports framebuffer
> attachment usage, we need to make sure that the reinterpreted
> format can support it as well.
>
> Bug: angleproject:5309
> Change-Id: I7e84d01004504f854a3e22227e99b1740ed1a2b2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2549156
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:5309
Change-Id: I0efb6180b7be4e14d24b4bb339de01a2b9177e7e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2556571
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4e913d34
|
2020-11-02T10:44:51
|
|
Vulkan: Work around Nvidia depth clamping bug
In GL ES, depth is always clamped to [0,1].
The same is true in Vulkan, but not for implementations affected by
Nvidia bug 3171019. This patch implements a workaround.
The workaround introduced test failures on Linux with Nvidia Quadro P400
and driver version 418.56, so it's only applied conditionally, and as a
result the test failure expectations are not removed completely.
Bug: angleproject:3970
Change-Id: I0d9f855d7f3df72fea4af9f9b134ae3177cf820d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514377
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9041ca0c
|
2020-11-20T16:27:48
|
|
Limit testing of in-progress work to ANGLE's build of dEQP
A new feature is added, exposeNonConformantExtensionsAndVersions, which
is set by ANGLE's build of dEQP to allow exposing ES3.2 or extensions
that are not yet entirely conformant. This would allow ANGLE to expose
WIP extensions for regression testing without affecting partners that
test ANGLE with dEQP's standalone build.
Bug: angleproject:3647
Change-Id: Id1e6219f26b41d3f8cdc9763131b8052227761c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2552926
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Sunny Sun <sunny.sun@arm.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5fac02c8
|
2020-11-24T14:20:36
|
|
Revert "Vulkan: Fix incorrect exposure of sRGB extensions"
This reverts commit abcabb474bf1c25eea48d7dca14bcafde737eba7.
Reason for revert: Failed on CQ and build passed, see bug.
Bug: angleproject:5394
Original change's description:
> Vulkan: Fix incorrect exposure of sRGB extensions
>
> When we check to see what formats we can reinterpret for sRGB
> extensions, we need to make sure we can match the image usage
> flags as well. If the original format supports framebuffer
> attachment usage, we need to make sure that the reinterpreted
> format can support it as well.
>
> Bug: angleproject:5309
> Change-Id: I7e84d01004504f854a3e22227e99b1740ed1a2b2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2549156
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=syoussefi@chromium.org,jmadill@chromium.org,m.maiya@samsung.com
Change-Id: I211802eb17deff3399ec680eeae4c4ff33e52d9d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:5309
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2557567
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
abcabb47
|
2020-11-20T13:05:49
|
|
Vulkan: Fix incorrect exposure of sRGB extensions
When we check to see what formats we can reinterpret for sRGB
extensions, we need to make sure we can match the image usage
flags as well. If the original format supports framebuffer
attachment usage, we need to make sure that the reinterpreted
format can support it as well.
Bug: angleproject:5309
Change-Id: I7e84d01004504f854a3e22227e99b1740ed1a2b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2549156
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
040de921
|
2020-11-20T09:26:35
|
|
Vulkan: Move FenceRecyler to CommandQueue.
SharedFences are now only used by CommandQueue so move fence recycler
to live there instead of RendererVk.
Bug: b/170312581
Change-Id: Ib055ec50fbebe675a0064e1059089720e63b96b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2551792
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4e5a50b6
|
2020-11-13T22:56:59
|
|
Vulkan: Drop dependency to VK_EXT_shader_atomic_float
This VK extension exposes features that are not necessary for
GL_OES_shader_image_atomic. Instead, support for necessary features for
VK_FORMAT_R32_SFLOAT is used to determine support for this GL extension.
Bug: angleproject:5342
Change-Id: Ia504cba69ffe51cfd7da69df28f58563cb1f0744
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2536908
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
|
|
8930f182
|
2020-11-18T13:12:03
|
|
Vulkan: Add feature flag to fallback rotation to use driver uniform
It appears that older Qualcomm driver has some serious performance issue
with specialization constant. This does not happen with latest
development driver. This adds a feature flag to pick driver uniform path
for older driver.
Bug: b/173636783
Change-Id: Ia494fedbb1e0e69fbd8c44f8457c1bc30bc9fa4b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2547809
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8a401051
|
2020-11-19T07:58:05
|
|
Vulkan: Support OES_sample_variables extension
Enable OES_sample_variables extension on Vulkan backend.
Add support for built-in variables, uniform state and constants
- gl_SampleId, gl_SamplePosition, gl_SampleMask,
gl_SampleMaskIn
- gl_NumSamples
- gl_MaxSamples
Bug: angleproject:3588
Tests: dEQP-GLES31.functional.shaders.sample_variables.*
KHR-GLES31.core.sample_variables.*
Change-Id: Idf37c7b4ccb0331dbda7acd6389ff4e1022ba959
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477907
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8d63a7fc
|
2020-11-17T15:15:44
|
|
Basic support for running deqp khr gles32 tests
Bug: angleproject:3647
Change-Id: Ia707ffcd41926662d1513f1a3bf49149b76f6b9c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2544920
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bb54223b
|
2020-11-13T10:37:12
|
|
Vulkan: Remove RendererVk::getNextSubmitFence.
This function is no longer used.
Bug: b/172704839
Change-Id: I649b205aa5603a25ed28a5fae12ad455d02d0145
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2537236
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
84fce18c
|
2020-11-13T10:14:58
|
|
Vulkan: Give CommandQueue an abstract interface.
This gives CommandQueue and CommandProcessor the exact same interface.
This also moves the worker thread to be owned by CommandProcessor.
Bug: b/172704839
Change-Id: Ife439bcf52d923e01a6a2166e0caaffce14fd086
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2537235
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
d9b4eb38
|
2020-11-13T09:38:39
|
|
Vulkan: Suppress VkSubpassDescriptionDepthStencilResolve
Suppress the following erroneous VVL error:
VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-parameter
Bug: angleproject:5331
Change-Id: I010d5c56e668eb1e1c500fece570d6e20d3c5a54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2537918
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
1885942d
|
2020-11-08T11:19:07
|
|
Vulkan: Move device queue management to CommandQueue.
This closes a few more places where the asynchronous abstraction was
leaking through. We can no longer access VkQueues directly from
RendererVk.
Bug: b/172704839
Change-Id: Idc06ee73816147cf602f21723e75bc5ee842d3e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525145
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
49c13282
|
2020-11-08T10:51:54
|
|
Vulkan: Merge async command queue features.
This merges the 'commandProcessor' and 'asyncCommandProcessing'
features into one new 'asyncCommandQueue' features.
Conceptually the command processor is asynchronous use of the
CommandQueue. This renaming updates the code to reflect the usage.
Bug: b/172704839
Change-Id: I1d7ca1187f802eed48823a01b57fb520527f2540
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525144
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
f19a4a20
|
2020-11-08T10:37:33
|
|
Vulkan: Move CommandBuffer management to RendererVk.
This consolidates all relevant logic in a single place.
We no longer need to interact with ContextVk in the worker thread.
This switches the fixed pointer array size to a dynamically sized
vector. Some of the EGL and ANGLE tests would use a large number of
Contexts and we were consistently running out of available command
buffers which would cause a deadlock situation. We can trust other
parts of the code to throttle the application if it starts to get
too far ahead of the device and dispense with the hard coded limit
in the command buffer allocator itself. The resulting code is also
quite a bit simpler and doesn't need a condition variable.
Also fixes missing initialization in SecondaryCommandBuffer.
Bug: b/172704839
Change-Id: Icc3a3daf5d6b272db556c0e4c93fb793583966a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525143
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
ce7bdd0b
|
2020-11-08T09:45:30
|
|
Vulkan: Merge CommandQueue and TaskProcessor.
Bug: b/172704839
Change-Id: I43a40e6a3e1eb00a7ddebfba6e915437aa69aeb6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525141
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
a428487a
|
2020-11-12T09:04:25
|
|
Vulkan: Suppress VkSubpassDescriptionDepthStencilResolve
Suppress the following erroneous VVL error:
VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-parameter
Bug: angleproject:5331
Change-Id: I403b7e4beaa17fd36e6a8e572c55ec22353e6b80
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2534394
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
65ee5168
|
2020-11-08T09:30:39
|
|
Vulkan: Align submit and serial management code.
This progresses the goal of merging TaskProcessor and CommandQueue.
Moving the serial management out of RendererVk allows these classes
to have finer control over when thread synchronization locks happen.
Note: device lost handling seems untested currently.
Bug: b/172704839
Change-Id: I0cc61e1ffe41aad0b898d4146c8dbd08a2cebd3c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525140
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
453a113a
|
2020-11-08T13:40:44
|
|
Vulkan: Remove queue/device wait idle in favor of finish().
This change should aid further refactorings. In the future if we need
to support waiting for individual queue idle we can add that back in
a way that's supported by both synchronous and async queue operation.
Bug: b/172704839
Change-Id: I9c9900ac81af60a37719439fe9db6135fcb17d46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525146
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
e6a302a0
|
2020-11-07T10:49:15
|
|
Vulkan: Move vk::CommandQueue to RendererVk.
This consolidates most of the command processor vs queue logic in one
place. It also has a number of incidental changes related to fences:
- syncs now do not store a shared fence. instead they call command
apis to wait for a particular serial with a timeout. this is not
yet fully implemented in CommandProcessor.
- surface swap history stores a serial instead of a fence. because
the RendererVk class stores the command batches, we no longer have
to do messy things with ContextVk.
- it is no longer possible to ask for a wait on a serial that isn't
in the command queue.
Also adds mutex synchronization around the RendererVk methods.
Bug: angleproject:5217
Bug: b/172704839
Change-Id: I5faf0e24bb6ede79a927ab149b80bfa8baca4620
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2524548
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
52f77eed
|
2020-11-11T13:44:39
|
|
Suppress BestPractices-vkCreateDevice-specialuse-extension
Suppress the VVL warning:
UNASSIGNED-BestPractices-vkCreateDevice-specialuse-extension
ANGLE uses the extension to match OpenGL ES line rasterization behavior,
so this warning doesn't apply and is being suppressed.
Bug: angleproject:5336
Change-Id: I2f0e086a7ff392e13b6a1da0a55b0e1b81953b2e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2533437
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
528ae31e
|
2020-11-08T10:06:04
|
|
Vulkan: Move ExtensionNameList out of the class.
Mostly a consistency change where now the list never needs to be
prefixed with RendererVk:: and always prefixed with vk::.
Also we can respect the style guide's member ordering suggestion.
Bug: b/172704839
Change-Id: I758bf324573e5585be6842b3455feab0c23c9d4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2525142
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e2ecb2dd
|
2020-11-03T19:26:00
|
|
Enable logging API commands to Android logcat
This enables logging API commands to Android logcat. It is enabled
via the following GN arg:
angle_enable_android_api_logcat = true
On desktop, API commands can continue to be logged to the
"angle_debug.txt" file via a different mechanism, with the GN arg:
angle_enable_trace = true
Bug: b/170249632
Change-Id: Id52e75f966a97692ec6d69eb3d254ba295a151c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2519094
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
74e50cac
|
2020-11-04T12:47:52
|
|
Vulkan: Suppress VUID-VkImageViewCreateInfo-usage-02652
Bug: angleproject:5309
Change-Id: Iafe91565138a5b94c482aeff7607d09c10d2aeaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2519874
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
88b46b9f
|
2020-11-03T12:08:42
|
|
Vulkan: VVL errors once again cause dEQP tests to fail
Was previously setting the global g_debugAnnotator class to
DebugAnnoatorVk, and only when a desktop environment variable or
Android setting indicated to. Setting to DebugAnnoatorVk was equated
with a desire to generate Vulkan debug markers.
Will now set g_debugAnnotator to the generic LoggingAnnotator class
when Vulkan debug markers are not needed. That will enable VVL errors
to again cause dEQP tests to fail.
Bug: angleproject:5291
Bug: angleproject:5304
Change-Id: Ib9169037423dd9de3f799e77f7f47468eeeeac20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2518168
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
23d1f9b4
|
2020-11-02T13:00:08
|
|
Vulkan: Add support for VK_KHR_image_format_list extension
GLES sRGB extensions allows for a texture to be respecified, with say
the sRGB_override extension, which will require us to reinterpret the
data in the texture in sRGB colorspace (or linear depending on the
format of the texture).
If the underlying ICD supports VK_KHR_image_format_list extension we
create a texture's backing VkImage with the
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT enabled since we already know the
format we might need to reinterpret the texture as.
Bug: angleproject:3609
Bug: angleproject:4561
Bug: angleproject:5281
Change-Id: Ia4bed596ed3000f8af1a8fd73fb8e6c2cb9b5d6e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2513110
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3980b1f8
|
2020-10-27T10:01:05
|
|
Refactor FrameCapture.cpp to use common utility
The frame-capture-specific AndroidGetEnvFromProp() function has been
ported to the general utility, GetEnvironmentVarFromAndroidProperty().
Bug: b/170249632
Change-Id: I97de8205ceef140dfd8fab8e6f2d52b90cd996cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2502772
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
a51b57fa
|
2020-10-30T10:00:05
|
|
Revert "Vulkan: Add features to modify sampling parameters"
Bug: b/167404532
Change-Id: Iae19dfe165074e8c01216312bddd744c4fb504a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510012
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6bc362c4
|
2020-10-18T19:09:47
|
|
Allow single threaded CommandProcessor
In replacing the legacy CommandQueue code with the threading
capable CommandProcessor it would be good to be able to run the
CommandProcessor in a single-thread environment. This CL changes the
meaning of the feature flags for the commandProcessor and
asynchronousCommandProcessing so that enabling commandProcess only
changes the code paths to use the command processor but work it still
done as part of the submitting thread (e.g. ContextVk).
Enabling asynchronousCommandProcessing will cause a separate worker
thread to be spawned which will asynchronously process the commands.
This allows us to switch to the CommandProcessor without threading and
then enable threading once performance issues are resolved.
Bug: b/161912801
Bug: b/170329600
Change-Id: I534862b109a7e7708108190b7c3e894071d4c2ed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483580
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
8ace36f8
|
2020-10-30T09:51:16
|
|
Revert "Add a Vulkan feature to compress float32 vertex formats."
Bug: b/167404532
Bug: b/161716126
Change-Id: I95157a006d5c1fd2d3c0c2c2be37fa0403c07f93
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510011
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e895ced6
|
2020-10-29T09:06:00
|
|
Vulkan: Add OES_shader_image_atomic support
Add support for shader builtins and enable the extension.
Bug: angleproject:3578
Tests: dEQP-GLES31.functional.*image_atomic*
Change-Id: Idd45b2ee62efe1474c6c5947c77da64ff2221bf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2505540
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
45881ab3
|
2020-10-26T16:15:16
|
|
Enable debug-util markers with an env var/property
Enable the Vulkan debug-util markers by setting the
ANGLE_ENABLE_DEBUG_MARKERS" environment variable to any 1+-character
value. On Android, this is set with the "debug.angle.markers" Android
property.
Bug: b/170249632
Change-Id: I66503fac71397c59cc641dd903faad152e0ec449
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2500186
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
94900b69
|
2020-10-24T03:46:44
|
|
Vulkan: Remove VVL warning suppression for push constants
Bug: angleproject:5191
Change-Id: Ic4a64ad0bf4cdf6b3ed8677dd45ee940d0da30d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2496245
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6a35cadc
|
2020-10-23T17:14:44
|
|
Suppress VUID-vkCmdDraw-None-02698 validation
A bug in Vulkan-ValidationLayers is stopping changes from being rolled
into ANGLE. Suppress this warning for now, until the root cause is
addressed.
Bug: angleproject:5191
Change-Id: I7c6cb65055bdc7b2eb3679f26f09530b1cff3775
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495543
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
de3a7180
|
2020-10-23T10:54:46
|
|
Vulkan: Reduce scope of clear workaround
Forcing draw for clear only appears to be needed on Pixel 2.
Test: angle_perftest --gtest_filter="*free_fire*"
Bug: angleproject:4836
Change-Id: I4446adc04a8e5cf7b0bfef68ec70122e847755a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495484
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ed876984
|
2020-10-03T11:00:36
|
|
Vulkan: functionally complete worker thread
Working on enhancing worker thread to completely own primary command
buffers. This will include not only processing SCBs from main thread
into a primary, but also submitting those command buffers to the queue.
The CommandProcessor is a vk::Context so it can handle errors in the
worker thread. When the main thread submits tasks to the worker
thread it also syncs any outstanding errors from the worker.
Include asynchronousCommandProcessing feature that will control
whether the worker thread task does it's work in parallel or not. If
false, we wait for the thread to complete it's work before letting the
main thread continue. If true, the thread can execute in parallel with
the main thread.
Bug: b/154030730
Bug: b/161912801
Change-Id: I00f8f013d6cbb2af12a172c4f7927855db2f0ebf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2328992
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7bbe497a
|
2020-10-16T14:46:45
|
|
Vulkan: Implement EXT_texture_sRGB_decode
Implement EXT_texture_sRGB_decode. This builds on the existing
functionality from EXT_texture_sRGB_override, with 2 major edge
cases:
1. sRGB_decode allows the texture state to be overridden by
sampler state, which is implemented by forcing a a texture state
sync during updateActiveTextures if a texture is bound to the same
unit as a sampler with that state
2. texelFetch calls require us to reenable decoding, regardless
of decode state. We add a new compiler pass
(FlagSamplersWithTexelFetch) to mark samplers that are used with
texelFetch in order to support this.
This change also re-enables EXT_texture_sRGB_R8, which was disabled
due to a dEQP bug that this change will bypass.
Bug: angleproject:3609
Bug: angleproject:4503
Test: dEQP.GLES31/functional_srgb_texture_decode_skip_decode_*
Test: GLES31/functional_state_query_texture_*_srgb_decode_*
Test: GLES31/functional_state_query_sampler_*_srgb_decode_*
Test: GLES31/functional_debug_negative_coverage_*_srgb_decode_*
Test: GLES31/functional_android_extension_pack_extensions_ext_texture_srgb_decode
Test: angle_end2end_tests --gtest_filter=SRGBTextureTest.*Vulkan*
Change-Id: I4a67e487dc82e2f57c8c87d4bcd8ef442b6fe220
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2359481
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
43b4fefd
|
2020-10-14T20:48:37
|
|
Revert "Vulkan: Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount"
This reverts commit a5db7d6eb5284359930b3b82507f96a52c62b6e1.
Reason for revert: VVL rolled with the fix.
Original change's description:
> Vulkan: Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount
>
> Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount while the
> Khronos issue is investigated.
>
> Bug: angleproject:5148
> Change-Id: If3cd4b028182a06411b928417e7c778ea02189d1
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462075
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Tim Van Patten <timvp@google.com>
TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:5148
Change-Id: Ibb66370334554773dda3e849d0bc9f3e8f8577fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472997
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
1e435d07
|
2020-10-14T13:33:10
|
|
Vulkan: Support dumping VMA stats string
This CL adds support for dumping the VMA stats string, which can be
given to VmaDumpVis.py to visualize the allocations that the VMA has
performed.
To enable dumping the string, set:
RendererVk.cpp
rx::kOutputVmaStatsString = true
Copy the desired JSON output into a text file, and pass that to
VmaDumpVis.py:
python3 \
third_party/vulkan_memory_allocator/tools/VmaDumpVis/VmaDumpVis.py \
-o stats.png stats.txt
The legend for the visualization is available at:
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/tree/master/tools/VmaDumpVis
Bug: angleproject:2162
Test: Manual verification
Change-Id: Ic8c1002805dd57e594df724bcf1cdbc1d1599a3e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472525
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
fa47b9a4
|
2020-10-14T15:42:17
|
|
Revert "Vulkan: Disable vkCreateDevice-physical-device-features-not-retrieved"
This reverts commit 4dae43d877763390c56435fb0126e310ee515fb8.
Reason for revert: VVL rolled with the fix.
Original change's description:
> Vulkan: Disable vkCreateDevice-physical-device-features-not-retrieved
>
> Disable
> UNASSIGNED-BestPractices-vkCreateDevice-physical-device-features-not-retrieved
> while the Khronos issue is investigated.
>
> Bug: angleproject:5149
> Change-Id: I680cf264d6356cf219826902d7fdf2304e27ebab
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461475
> Commit-Queue: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:5149
Change-Id: I0a338983ac0804d5bb0e41e592f177372be66d5c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2471556
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
d9a88d63
|
2020-09-28T17:58:31
|
|
Vulkan: Support OES_texture_cube_map_array extension
Add support for GL_OES_texture_cube_map_array to the Vulkan backend
if the underlying ICD supports creation of of cube array ImageViews
Bug: angleproject:3584
Test: dEQP-GLES31.functional.fbo.color.texcubearray.*
Change-Id: I636cbf347d718abfc1600119b312578370b8e02e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2437989
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5dd82cac
|
2020-10-13T09:58:01
|
|
Vulkan: Remove Arm from perFrameWindowSizeQuery
The perFrameWindowSizeQuery feature was enabled for Arm, based on a
faulty dEQP test, that says that it is resizing a window on Android,
but doesn't actually. The Arm team has verified that this feature is
no longer needed for Arm/Mali, and so it is being removed.
Bug: b/170733470
Bug: angleproject:5150
Change-Id: I8b9d7cb45983b6bbf8d52d37bf5b237f2c3e4fe4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468176
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
298c2768
|
2020-10-12T10:50:39
|
|
Add PowerVR Vendor ID & Vulkan GL Line Emulation Exclusion
Adds the PowerVR VendorID into the accepted vendor list, and prevent
basic GL line emulation from being ran on PowerVR hardware as it's
not required on those platforms, yet causes CTS failures when enabled.
Fixes a variety of line failure tests across OGLES3/3.1 test suites
seen on PowerVR hardware.
Bug: angleproject:5145
Change-Id: I7383f1c09d026b8d33e6fbda66418c5f8b7f90bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462094
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
df6b7298
|
2020-10-12T13:39:09
|
|
Vulkan: Use StoreOp_None_QCOM for read only depth stencil buffer
For read only depth stencil buffers, there is no need to store depth or
stencil value. But we can not use DontCare for storeOp because vulkan
core spec says DontCare indicates data is undefined after this.
VK_QCOM_render_pass_store_ops extension introduces a new store op that
will leave data defined but skip the store. This CL utilize this if the
extension is available.
Bug: angleproject:5055
Change-Id: I104f3d01eb342a2d0cc900f342430e901bde1bff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462604
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f8070feb
|
2020-10-09T11:03:29
|
|
Vulkan: Use depthClamp to clear depth where available
This will avoid breaking render pass if clearing depth in clearWithDraw.
Bug: angleproject:4836
Change-Id: I50242d1115efc91059923143f6ae5fd25fb3d36f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462717
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4dae43d8
|
2020-10-08T11:04:50
|
|
Vulkan: Disable vkCreateDevice-physical-device-features-not-retrieved
Disable
UNASSIGNED-BestPractices-vkCreateDevice-physical-device-features-not-retrieved
while the Khronos issue is investigated.
Bug: angleproject:5149
Change-Id: I680cf264d6356cf219826902d7fdf2304e27ebab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461475
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a5db7d6e
|
2020-10-08T11:01:46
|
|
Vulkan: Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount
Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount while the
Khronos issue is investigated.
Bug: angleproject:5148
Change-Id: If3cd4b028182a06411b928417e7c778ea02189d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462075
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
9f5eb0b8
|
2020-10-05T08:18:05
|
|
Vulkan: Add OES_sample_shading extension support
Support OES_sample_shading extension if the underlying
Vulkan ICD supports sampleRateShading.
Bug: angleproject:3587
Tests: dEQP-GLES31.functional.sample_shading.*
Change-Id: I1b324c1ad3ea3b2157d3cbe0abcdf7085aa4231b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444213
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bc4ec4c1
|
2020-10-05T17:10:18
|
|
Vulkan: Plumb OpenGL ES commands to AGI/debuggers
Use vkCmd*DebugUtilsLabelEXT() calls to delimit all GLES commands, and
group them under GLES draw/dispatch calls. Plumb calls from the EVENT
macro (for every GL entrypoint) to vkCmd*DebugUtilsLabelEXT() via a
newly-implemented DebugAnnotatorVk class. Use a new dirty bit so that
cached entrypoints are associated with a triggering draw/dispatch
command.
The DebugAnnotatorVk::beginEvent() method saves a string in a vector
of all GL commands in ContextVk. The dirty bit converts the strings
into begin-end vkCmd*DebugUtilsLabelEXT() pairs. The
DebugAnnotatorVk::endEvent() method makes the final
vkCmdEndDebugUtilsLabelEXT() call for a draw/dispatch command.
Enable the OGL->VK mapping feature by setting
"angle_enable_trace = true" in GN args.
Bug: b/162068318
Bug: b/169243237
Change-Id: I61b6a8d113168c0ce578d6efd002d8a393659aba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2451517
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
08142700
|
2020-10-01T19:30:03
|
|
Work-around test runner & DebugAnnotator
Note: This precedes another CL that needs this change.
DebugAnnotator uses a global variable. The test runner doesn't change
state between testing different back-ends. This works-around the
problem by setting the global variable when the context is switched.
Because the GL back-end doesn't have its own DebugAnnotator sub-class,
add a Display* to DisplayImpl::makeCurrent(), so that
DisplayGL::makeCurrent() can install the front-end-Display's
DebugAnnotator.
Note: the Vulkan back-end gets this fix even though the new
DebugAnnotatorVk class will be added in a follow-on CL.
Bug: b/162068318
Bug: b/169243237
Bug: angleproject:5121
Change-Id: If08626a5310f9b4e3210e1a897a6886248e4d8ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2451423
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
da61c40e
|
2020-10-06T01:57:55
|
|
Revert "Work-around test runner & DebugAnnotator"
This reverts commit e44c94d96a9b65615fe8f5038e124763ac8c45e5.
Reason for revert: Breaks build of DisplayGbm on ChromeOS:
src/libANGLE/renderer/gl/egl/gbm/DisplayGbm.{h,cpp}
First failing builds:
https://ci.chromium.org/p/chromium/builders/ci/ChromeOS%20FYI%20Release%20%28amd64-generic%29/1608
https://ci.chromium.org/p/chromium/builders/ci/ChromeOS%20FYI%20Release%20%28kevin%29/2212
Original change's description:
> Work-around test runner & DebugAnnotator
>
> Note: This precedes another CL that needs this change.
>
> DebugAnnotator uses a global variable. The test runner doesn't change
> state between testing different back-ends. This works-around the
> problem by setting the global variable when the context is switched.
>
> Because the GL back-end doesn't have its own DebugAnnotator sub-class,
> add a Display* to DisplayImpl::makeCurrent(), so that
> DisplayGL::makeCurrent() can install the front-end-Display's
> DebugAnnotator.
>
> Note: the Vulkan back-end gets this fix even though the new
> DebugAnnotatorVk class will be added in a follow-on CL.
>
> Bug: b/162068318
> Bug: b/169243237
> Bug: angleproject:5121
> Change-Id: I748e8a1fd09b72e07242ac7fb39154537dcce534
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444095
> Reviewed-by: Ian Elliott <ianelliott@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
> Commit-Queue: Ian Elliott <ianelliott@google.com>
TBR=courtneygo@google.com,ianelliott@google.com,jmadill@chromium.org
Change-Id: I99df2716951726ead24961dc3d27a7ec63aeda80
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/162068318
Bug: b/169243237
Bug: angleproject:5121
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2451420
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
|
|
e44c94d9
|
2020-10-01T19:30:03
|
|
Work-around test runner & DebugAnnotator
Note: This precedes another CL that needs this change.
DebugAnnotator uses a global variable. The test runner doesn't change
state between testing different back-ends. This works-around the
problem by setting the global variable when the context is switched.
Because the GL back-end doesn't have its own DebugAnnotator sub-class,
add a Display* to DisplayImpl::makeCurrent(), so that
DisplayGL::makeCurrent() can install the front-end-Display's
DebugAnnotator.
Note: the Vulkan back-end gets this fix even though the new
DebugAnnotatorVk class will be added in a follow-on CL.
Bug: b/162068318
Bug: b/169243237
Bug: angleproject:5121
Change-Id: I748e8a1fd09b72e07242ac7fb39154537dcce534
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444095
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
6534a6f8
|
2020-10-02T01:10:54
|
|
Revert "Vulkan:Add debug labels for OpenGL calls"
This reverts commit 3705fc41315b50a64299ecb1d75015a33fefd6aa.
Reason for revert: Causes errors on Debug bots. See bug.
Bug: angleproject:5121
Original change's description:
> Vulkan:Add debug labels for OpenGL calls
>
> Implement the DebugAnnotatorVk class, and plumb the EVENT macro in the
> GL entrypoints to save a string of call info in the vector of all
> GL calls in ContextVk.
>
> Then add a vkCmdBeginDebugUtilsLabelEXT() call that includes the
> OpenGL draw/dispatch call prior to any Vulkan Draw or Dispatch calls.
> Also embedded under that label add a second
> vkCmdBeginDebugUtilsLabelEXT() call labeled "OpenGL Commands" that
> includes all of the OpenGL calls leading up to the draw/dispatch.
> Each individual OpenGL call is then given its own
> vkCmdBegin/EndDebugUtilsLabelEXT() pair so that the complete sequence
> of GL calls leading up to a draw call is visible for each Draw.
>
> Enable the OGL->VK mapping feature by setting
> "angle_enable_trace = true" in GN args.
>
> Note: This will create an ANGLE APK on Android that generally won't
> work with games, unless launched by AGI (which provides the debug
> utils extension). A future version will disable these labels unless
> the debug utils extension is found.
>
> Bug: b/162068318
> Bug: b/169243237
> Change-Id: I09886f17fa9287528c12552698738ea1fe2a4b8c
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2427557
> Commit-Queue: Ian Elliott <ianelliott@google.com>
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
TBR=courtneygo@google.com,ianelliott@google.com,timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: b/162068318
Bug: b/169243237
Change-Id: I772d549213e1ad64ae58a1937e5de0f7ea740084
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444094
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
3705fc41
|
2020-09-28T21:40:57
|
|
Vulkan:Add debug labels for OpenGL calls
Implement the DebugAnnotatorVk class, and plumb the EVENT macro in the
GL entrypoints to save a string of call info in the vector of all
GL calls in ContextVk.
Then add a vkCmdBeginDebugUtilsLabelEXT() call that includes the
OpenGL draw/dispatch call prior to any Vulkan Draw or Dispatch calls.
Also embedded under that label add a second
vkCmdBeginDebugUtilsLabelEXT() call labeled "OpenGL Commands" that
includes all of the OpenGL calls leading up to the draw/dispatch.
Each individual OpenGL call is then given its own
vkCmdBegin/EndDebugUtilsLabelEXT() pair so that the complete sequence
of GL calls leading up to a draw call is visible for each Draw.
Enable the OGL->VK mapping feature by setting
"angle_enable_trace = true" in GN args.
Note: This will create an ANGLE APK on Android that generally won't
work with games, unless launched by AGI (which provides the debug
utils extension). A future version will disable these labels unless
the debug utils extension is found.
Bug: b/162068318
Bug: b/169243237
Change-Id: I09886f17fa9287528c12552698738ea1fe2a4b8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2427557
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b156a753
|
2020-09-28T16:43:50
|
|
Move LayoutCaches to ShareGroup
Testing with TSN found a race condition with RefCounted objects
(DescriptorSetLayout and PipelineLayout). Rather than add more lock
calls to protect accesses to mRefCount and mObject recommendation was to
put these caches in the ShareGroup (basically part of the context).
Locking at the GL level will ensure that two threads that share the same
context will not access the ShareGroup at the same time.
The ShareGroup also works because these layouts are not destroyed until
the context is destroyed so don't have to worry about other threads
(e.g. command processor thread) accessing them.
Bug: b/168744561
Change-Id: Icc0aa07bf4787a69572d6ec62da2f21d286232c3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2437509
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b3859a3c
|
2020-09-30T12:52:39
|
|
Vulkan: disable glFlush deferral optimization for QualComm GPUs.
It appears this optimization causing Manhattan performance regression on
pixel4 with QualComm GPU. It does have a measurable performance
improvement on S20+ that has ARM GPU. This disables this optimization
for QualComm but still leaves it enabled on other GPUs.
Bug: b/166475273
Change-Id: I9c9cd55ab169463fc8cc16d7d917be660cb2f363
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2441667
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
a3b16c6b
|
2020-08-28T16:14:30
|
|
Vulkan: Workaround vkCmdClearAttachment bug on Pixel
Adds a workaround to use draw calls to clear color instead of
vkCmdClearAttachment when the clear happens in the middle of render
pass. On Pixel phones, vkCmdClearAttachment races with the previous
draw calls in the render pass.
Bug: b/166809097
Change-Id: I8c96b87793da191757635658ad4ee2c3a7875aca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2382416
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
65311748
|
2020-09-25T13:11:26
|
|
Vulkan: Disable MSRTT on AMD/Windows
Due to buggy drivers on the bots
Bug: chromium:1132366
Change-Id: Ia7a021991fcbd409289915f9121a07d8e5b232c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2431570
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
54dbd5e7
|
2020-09-23T16:10:12
|
|
Vulkan: Add mutex around queueSubmit related data
There are several queueSubmit related members of RendererVk that can be
accessed from multiple threads. Adding mutex around thoses accesses
resolves race condition flagged by TSAN.
Add stress test for QueueSerial handling
Add test to catch race issue in garbage collection found by TSAN.
Test:
angle_end2end_tests MultithreadingTest.MultiContextDrawWithSwapBuffers
angle_end2end_tests MultithreadingTest.MultiContextCreateAndDeleteResources
Bug: b/168744561
Change-Id: I238cce9052476710778a3b35f8531891d90ddd6e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2415402
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
a76b6836
|
2020-09-17T22:40:42
|
|
Vulkan: Support MSRTT depth/stencil resolve
VK_KHR_depth_stencil_resolve is used by this change to resolve
depth/stencil multisampled-render-to-texture renderbuffers.
This extension is not widely supported yet. If it's not present, the
depth/stencil resolve operation is silently ignored and the renderbuffer
acts as a normal multisampled one. This is not correct, but our primary
user (Chrome), and most applications don't care for the resolved
depth/stencil data. In fact, it's recommended for the depth/stencil
attachment to be invalidated after rendering.
Exposing EXT_multisampled_render_to_texture even in the absence of
depth/stencil resolve allows the majority of the applications to still
take advantage of MSRTT color attachments.
Bug: angleproject:4836
Change-Id: I6ba4187344a0c9330d2c77bdc5e2c6fc5483c299
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2417645
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
f0b02054
|
2020-08-06T20:55:05
|
|
Add a Vulkan feature to compress float32 vertex formats.
Use the vertex conversion pipeline in VertexArrayVk to detect
static vertex data and convert float32 vertices to float16. This
feature is useful for determining if an allication is vertex
bandwidth bound and seeing what gains could be had by using smaller
attributes.
This feature could be implemented in ANGLE's frontend but new
infrastructure for converting and storing the converted attributes
would need to be added to gl::VertexArray. Our backends already
have the functionality needed to handle unsupported attribute formats
and this can be repurposed for compressing vertex formats.
Bug: b/167404532
Bug: b/161716126
Change-Id: I9a09656a72e8499faa4124adf876d7261c8341c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2342285
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b44af662
|
2020-09-22T10:20:16
|
|
Vulkan: Fix racy access to VkPipelineCache
Missing a lock(mPipelineCache).
Bug: b/168744561
Change-Id: I7e57f9feed7431d0fdfec153e7e8e47fe9a2fa0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2424463
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
49f01a53
|
2020-09-18T11:38:14
|
|
Vulkan: Add features to modify sampling parameters
Add features to optionally increase the LoD offset of all sampling
operations or disable linear filtering. These can be used to compare
performance without recompiling ANGLE.
These features could be potentially implemented in the frontend it is
more difficult because the features are not available at texture
initialization time.
Bug: b/167404532
Change-Id: Ifcf56fbcf130c24c54834737733bbffa5ade3959
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2411475
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ed899835
|
2020-09-11T21:21:55
|
|
Vulkan: Allocate descriptor pools with layouts
Descriptor set layouts and pools are very tightly coupled, since their
binding types and counts must match to ensure the number of available
descriptor sets within a pool remains accurate. To enforce this, the
descriptor pools will now keep a copy of the VkDescriptorSetLayout that
the pool was created for, which is verified when a descriptor set is
allocated from the pool. If the handles don't match, an ASSERT() will
fire.
Bug: angleproject:5033
Test: CQ
Change-Id: I4faf82c24f31052e57b656c968788bb0c131b619
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407282
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
f39e0f01
|
2020-09-07T23:07:37
|
|
Vulkan: Use subpass to unresolve render-to-texture attachments
GL_EXT_multisampled_render_to_texture allows singlesampled textures to
be used with multisampled framebuffers in such a way that the final
resolve operation is automatically done. In Vulkan terminology, the
render-to-texture GL attachment is used as a Vulkan subpass resolve
attachment with an implicit (ideally-)lazy-memory multisampled image as
the color attachment.
This extension expects that if the texture is drawn to after the
automatic resolve, the implicit multisampled image would take its
fragment colors from the singlesampled image. In other words, the
opposite of a resolve operation should be automatically performed at the
start of the render pass. This change refers to this operation as
"unresolve".
The goal of this extension is to allow tiling GPUs to always keep
multisampled data on tile memory and only ever load/store singlesampled
data. The latter is achieved by using a subpass resolve attachment and
setting storeOp of the multisampled color attachment to DONT_CARE. This
change achieves the former by using an initial subpass that uses the
resolve attachment as input attachment, draws into the multisampled
color attachment and sets loadOp of said attachment to DONT_CARE.
Bug: angleproject:4881
Change-Id: I99f410530365963567c77a7d62fc9db1500e5e3e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2397206
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e1f7e2de
|
2020-09-17T08:25:40
|
|
Vulkan: lock around accesses to mSharedGarbage
Bug: b/168744476
Change-Id: I26205e7d29260ffdefbd5b2971b570c8bff7187f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2416236
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
3c64fe30
|
2020-09-17T08:27:04
|
|
Vulkan: need to serialize access to mFenceRecycler
It's possible for multiple threads to touch mFenceRecycler so need to
protect it with a mutex to prevent race conditions.
Bug: b/168744476
Change-Id: I9898d2e9ebf0974581a1074cbda5be41a09cd790
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2415401
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
68c424fe
|
2020-09-17T10:34:07
|
|
Vulkan: Workaround oldSwapchin bug on Android
When vkCreateSwapchainKHR is called with a valid oldSwapchain, the
Android framework destroys the images in oldSwapchain. This is not
correct, as it should be deferred to the actual vkDestroySwapchainKHR
call performed later by ANGLE. This is because rendering to the
oldSwapchain could still be in progress.
While this issue affects all of Android, currently only ARM shows any
symptoms. A workaround is added for ARM to vkDeviceWaitIdle before
recreating the swapchain if oldSwapchain is valid.
Bug: angleproject:5061
Change-Id: I308e4798c6418d7891d880218b0ebcfd7a795643
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2416238
Reviewed-by: Sunny Sun <sunny.sun@arm.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6939a023
|
2020-09-17T12:03:12
|
|
Vulkan: Fix racy access to VkPipelineCache.
Use a mutex to guard against the object init. The accesses to the
cache internals are internally synchronized. There is a Vulkan ext
that allows for external cache synchronization that we could
investigate at some point.
Detected by looking at MultithreadingTest with TSAN enabled.
Bug: b/168744561
Change-Id: I1d4744e1aa970bcd57cac49f7ecaf8c238ea61c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2415183
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
ed01473e
|
2020-09-12T13:01:05
|
|
Vulkan: Fix blendEnable-02023 VU
Enable BlendIntegerTest
Add DrawBuffersTest.BlendWithGaps test
Add BlendPackedTest
Bug: angleproject:4548
Bug: angleproject:4571
Bug: angleproject:4583
Change-Id: I139183099b26f0fe1ac9e43f96d18b8ccb134a2f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407772
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c03c4490
|
2020-08-28T11:03:20
|
|
Vulkan: Defer glFlush issued in middle of renderpass to endRenderpass
Manhattan is calling glFlush in middle of a renderpass. This CL defers
the flush that issued in the middle of renderpass to the end of
renderpass.
Bug: b/166475273
Change-Id: I6baa3898d5efc456e2205c44e13c64f3d79d1464
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2381942
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
19b4dfc6
|
2020-08-11T15:53:49
|
|
Enable precision qualifiers.
This enables precision qualifiers to be included in the translated GLSL
and the generated SPIR-V.
We do not enable precision qualifiers on Pixel 2 with Android Q due to
bugs in the Vulkan driver. Issues appear to be fixed with later Android
releases and later devices.
Bug: angleproject:3078
Change-Id: Ia5f40befc7ec80fbb63fb6bbe88600301967f9c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2350583
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cbbf9587
|
2020-09-09T17:01:00
|
|
Fix ASAN issue with accessing application name
ASAN caught reference outside scope issue regarding
RendererVk::initialize. Need to have a local copy of the string so that
it stays alive for the Vulkan call.
Bug: b/168145220
Change-Id: I13d751a48fe86a5a3d603d892c86c5a7186f2606
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2402353
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d4b029e3
|
2020-09-08T11:00:56
|
|
Vulkan: Suppress VVL PushConstantOutOfRange errors
VVL Error: UNASSIGNED-CoreValidation-Shader-PushConstantOutOfRange
Bug: angleproject:5027
Change-Id: I60eef046df5569f4d76bf065ea6df7565793a6b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2399178
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
a25b165a
|
2020-08-28T12:01:44
|
|
Vulkan: Add transient flag to command pool
Add the VK_COMMAND_POOL_CREATE_TRANSIENT_BIT flag when creating the
PersistentCommandPool since the command buffers are only used once and
then reset. Update the tracking bugs.
Bug: b/166641492
Bug: b/166793850
Change-Id: I5827b5df7dd150756325421fc6ff0283bbd8b8e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2381943
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
9a19a996
|
2020-08-26T09:00:50
|
|
Vulkan: Use 4 MB as preferredLargeHeapBlockSize for allocator.
This reduces preferredLargeHeapBlockSize from the default
value of 256 MB to 4 MB, which reduces the initial block
size from 32 MB to 512 KB.
4 MB is the same size as used by Chromium and Skia. It seems
to be a good compromise of not wasting unused allocated space
and not making too many small allocations.
This change is limited to non-Qualcomm GPUs as a number of
tests are failing on Qualcomm after this change and the
initial investigation indicates a potential driver bug. See
http://anglebug.com/4995 for more details.
Bug: chromium:1122718
Bug: fuchsia:58959
Change-Id: Ifdaf863ef38e72098a04ee57dec46ee71cab6ac3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2376891
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: David Reveman <reveman@chromium.org>
|
|
fde4d2f7
|
2020-08-28T04:19:25
|
|
Revert "Vulkan:Clean up best practices exceptions"
This reverts commit 15438d3f906f4dffbd445ef01a934ffe1b8ccfbe.
Reason for revert: Running end2end tests on Linux, this validation error pops a lot.
Original change's description:
> Vulkan:Clean up best practices exceptions
>
> Assign new bug ID for clean-up work. It appears that the
> UNASSIGNED-BestPractices-vkCreateCommandPool-command-buffer-reset
> error was already fixed.
>
> Bug: b/166641492
> Change-Id: I536017e0386cf5f57bb53bcba32d5df048050343
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380510
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
TBR=tobine@google.com,courtneygo@google.com,timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org
Change-Id: I90ee856b8bcac3e3f2b8104fb8642185a26f3e63
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/166641492
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2381077
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
15438d3f
|
2020-08-27T12:36:10
|
|
Vulkan:Clean up best practices exceptions
Assign new bug ID for clean-up work. It appears that the
UNASSIGNED-BestPractices-vkCreateCommandPool-command-buffer-reset
error was already fixed.
Bug: b/166641492
Change-Id: I536017e0386cf5f57bb53bcba32d5df048050343
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2380510
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
7bb75ff6
|
2020-08-26T15:10:59
|
|
Disable forceOldRewriteStructSamplers on Mali.
The nested_array.*sampler2D_* tests can pass on Mali with disabled
forceOldRewriteStructSamplers.
Test: dEQP-GLES31.functional.uniform_location.nested_array.*sampler2D_*
Bug: angleproject:2703
Change-Id: I34368d6ce14b81e873e2a3d60a73da4a8a866884
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2377627
Commit-Queue: Amy Liu <Amy.Liu@arm.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c7645886
|
2020-08-24T16:47:21
|
|
Vulkan: Remove the flipViewportY feature
This was featurized as a workaround for Intel/Windows drivers that did
not render flipped in comparison to GL per Vulkan spec. This issue has
long since been fixed, and due to missing parentheses the feature was
accidentally unconditionally true for a long time already.
Bug: angleproject:4896
Change-Id: I1db55d298bd47df649ff1f03d287d0cfa7453ea7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2372632
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
682f9141
|
2020-08-18T10:57:40
|
|
Remove feedback loop support from back-end.
Front-end detection still in place and will be removed in a follow-up.
Removes the Vulkan feature and the special clear handling.
Bug: angleproject:4959
Change-Id: I5d44c3f7dbdb49d8aa0375f54b7148df09732ba2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2363208
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|