|
65f7ab79
|
2020-07-02T10:04:48
|
|
Vulkan: Cleanup extension properties and features
Bug: angleproject:4551
Change-Id: Iae6b94027cfaca6c72318203a286865c2e3b19a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279133
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
62ff54eb
|
2020-05-12T13:27:21
|
|
Vulkan: Featurize shadow buffers
Shadow buffers help reduce the latency of glMap* operations
at the cost of CPU overhead. It might not be desirable to
incur such an overhead for all usecases. Featurize it but
enable it by default.
Bug: angleproject:4339
Change-Id: I6374618bf99677eef55fd50a139fb86f5ea70791
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2278102
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
b47cc50a
|
2020-06-22T10:59:09
|
|
Enable validation layer custom extensions
With this change, Vulkan-ValidationLayers will allow the specified
extensions to pass through, instead of being nulled out:
* VK_STRUCTURE_TYPE_SAMPLER_FILTERING_PRECISION_GOOGLE
* VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
Bug: b/159027603
Bug: b/154620295
Change-Id: I0ace3acdac06a6c115834ef88b0c883fa2dd4744
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2246304
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7db2dcec
|
2020-06-19T07:01:08
|
|
Roll Vulkan-ValidationLayers from 04f0b691eb4c to 74ed6cfd05c1 (20 revisions)
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/04f0b691eb4c..74ed6cfd05c1
2020-06-18 tony@lunarg.com layers: Remove leading comma in lists
2020-06-18 mark@lunarg.com corechecks: Fix DrawIndexedIndirect VUID name
2020-06-18 jeremyk@lunarg.com tests: Add combined image sampler test
2020-06-18 jeremyk@lunarg.com layers: Add combined image sampler check
2020-06-18 jeremyk@lunarg.com layers: Add CMD_TYPE parameter to pipeline binding
2020-06-18 tony@lunarg.com layers: Add is_khr to acceleration_structure_state
2020-06-17 mark@lunarg.com tests: Don't run ManySmallIndexedDrawCall test on shieldTV
2020-06-17 s.fricke@samsung.com tests: Add export handleType VUIDs
2020-06-17 s.fricke@samsung.com layers: Add export handleType VUIDs
2020-06-17 s.fricke@samsung.com layers: Wrap non external AHB logic together
2020-06-17 s.fricke@samsung.com tests: Validate maxSamplerAllocationCount
2020-06-17 s.fricke@samsung.com layers: Validate maxSamplerAllocationCount
2020-06-17 s.fricke@samsung.com layers: Add function calls to error log messages
2020-06-17 mark@lunarg.com tests: Add filters for BP Android test failures
2020-06-17 mark@lunarg.com tests: Compile best practices tests for Android
2020-06-17 mark@lunarg.com tests: Replace setenv with private settings extension
2020-06-17 mark@lunarg.com layers: Add private settings extension and write support
2020-06-17 s.fricke@samsung.com layers: Remove invalid check for AHB format
2020-06-17 szilard.papp@arm.com tests: Adding test for triple buffering
2020-06-17 szilard.papp@arm.com practices: Adding checks for triple buffering
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-validation-layers-angle-autoroll
Please CC courtneygo@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
Bug: None
Tbr: courtneygo@google.com
Change-Id: I8c35e56e998560c53e8b54bfd26749d334172b30
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2254490
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2919dc6e
|
2020-06-15T18:39:39
|
|
Add immutable samplers to descriptor set layout
To support YUV conversion we need to track the use of immutable samplers
in the descriptor set layout.
Bug: b/155487768
Change-Id: Ic7dc6a08551f5125c4a519b5cfada312f95ab914
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2225423
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
959037e0
|
2020-05-25T15:40:38
|
|
Vulkan: Preserve RPs on XFB changes when possible.
Instead of unconditonally ending the RenderPass we keep a set of
active XFB buffers in the ContextVk. This lets us re-use RPs when
we don't write to the same buffer repeatedly.
Reduces the RenderPass count in our Manhattan capture from 29->23.
Bug: angleproject:4622
Change-Id: I28c2d4d3db1490e5d07be3c48d21fd2cc6ff85d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2196957
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b55f0f78
|
2020-06-02T18:01:24
|
|
Compress Program binaries saved in blob cache
The Android blob cache has a limit of 2MB, so ANGLE should compress the
Program binaries that are saved into it to maximize its effectiveness.
ANGLE will gzip the program binaries before being stored in the blob
cache and then uncompress them when retrieved. Using gzip, the binaries
are compressed to ~25% of their size when running the T-Rex benchmark.
Some examples (in bytes):
Uncompressed: 20193, Compressed: 4455
Uncompressed: 8767, Compressed: 2369
Uncompressed: 11144, Compressed: 2927
This doesn't appear to affect the T-Rex benchmark since all of the
programs are loaded/decompressed as part of the benchmark
initialization, and the programs are small enough to all fit in the
blob cache without compression.
Bug: b/155184635
Test: T-Rex, CQ
Change-Id: Ie6a101c32ab5fd49baae1cb7aecdd26a934e15af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227529
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
d80adf4e
|
2020-06-03T11:50:04
|
|
Vulkan: Remove non-triggering validation error suppression
Bug: angleproject:4510
Change-Id: I04f989943ec2abe17cfe90f32a276e20c5a42cea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227811
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
17b4a877
|
2020-05-26T17:02:48
|
|
Vulkan: Pass API version to VMA.
This apparently can save on memory usage in the allocator.
Reported by penghuang@chromium.org.
Bug: angleproject:4685
Change-Id: I6f29280e3fe16f3388c4f8412e0acb09d7f16e58
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216714
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0df92012
|
2020-06-03T17:08:43
|
|
Rename Platform.h to PlatformMethods.h.
"platform.h" is too common a name and causes headers to be
included incorrectly. Disambiguate the header using a more
specific name.
Solves a problem that came up with the GLES 1 tests and the
standalone test harness.
Bug: angleproject:3162
Change-Id: I88229a2c9407e0db57f5beee44daa11a4075f700
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2229065
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
b131d25f
|
2020-06-03T10:53:39
|
|
Vulkan: Remove validation error suppressions for VVL bug
These warnings were generated due to a validation layer bug, which is
presumably fixed now.
Bug: angleproject:4572
Bug: angleproject:4577
Bug: angleproject:4578
Bug: angleproject:4579
Bug: angleproject:4580
Bug: angleproject:4583
Change-Id: I8799c4e33bc38f83e0fdd364cf6e7eb607c39890
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227810
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8f3aa154
|
2020-06-03T10:29:21
|
|
Vulkan: Remove validation error suppression for fixed issue
Bug: angleproject:3450
Change-Id: Ie88aedae6e4573b2c31e389f7d0ff5c8d1059647
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2227856
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
93577b20
|
2020-05-28T15:16:46
|
|
Vulkan: Move "null" buffer to RendererVk.
This will allow the TransformFeedback and other classes to share
the same buffer. Also should save a bit of memory.
Bug: chromium:1086532
Change-Id: I198170b4e09165a4770b68af6df9aa7b690e8d66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219138
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
b947498b
|
2020-05-28T13:06:13
|
|
Vulkan: Clean up VMA wrapper classes.
Make these more consistent with the rest of the wrapper classes.
Also handle some VkResult errors that were being ignored.
Will pave the way for better handling of buffer allocation error
conditions.
Bug: chromium:1086532
Change-Id: Idc5b3f0e2945b1f44f152d33e8cc572f83a6b658
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219136
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
|
|
209cf8fa
|
2020-05-27T16:23:57
|
|
GGP: Check and enable VK_GGP_frame_token
Bug: angleproject:4668
Change-Id: I9ecbdf37e206cb6eb93699091bbff70ad898040f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2219032
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
02fa7313
|
2020-05-05T17:01:18
|
|
Vulkan:Initial worker thread disabled by default
Created new CommandProcessor class that can be run as a worker thread.
Running CommandProcessor within RendererVk as a worker thread that
takes a CommmandBufferHelper (CBH) ptr as the interface and processes
that CBH into a primary command buffer.
Main thread has a queue of CBH to draw from. After submitting a CBH to
the worker, it pulls next CBH from the queue. Worker thread releases CBH
back to the main thread queue when done.
Synchronization goes two ways:
1. Work submitted to worker thread is managaed with a mutex and
condition variable based around the work queue.
2. Available CBH ptrs for the main thread have a mutex and condition
variable that manages the CBH queue.
The worker thread is disabled by default, and, when enabled, it will
currently behave and perform as the non-threaded code. This is because
the kNumCommandBuffers const in ContextVk.h is set to 2. With only 2
command buffers, they will be assigned to the inside and outside
RenderPass command buffers respectively. Then, as soon as one is
submitted, the main thread will stall waiting for it to be completed
and put back into the queue mentioned in #2 above.
The next step is to move command submission to the worker thread and
update the number of command buffers so that processing/submission
will occur in parallel with the main thread. Right now there is a
race condition issue when attempting to run in parallel because the
main thread updates and submits the same primary command buffers
that are used in the worker thread, which is in violation of the
Vulkan spec.
The follow-on CL will fix this issue as the main thread will only
touch SecondaryCommandBuffers and the worker thread will be the
only thread touching the primary command buffers.
Bug: b/154030730
Change-Id: Ib0c518bbd7ca9a3a7e789f4e1f2f7131ddc0509e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174719
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f5dace0f
|
2020-05-22T19:02:49
|
|
Vulkan: Increase GLES support to 3.1
Update getMaxConformantESVersion() to support GLES 3.1.
This requires skipping some tests on Nvidia due to XFB failures.
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.*
dEQP-GLES3.functional.transform_feedback.array_element.separate.*
dEQP-GLES3.functional.transform_feedback.array.interleaved.*
dEQP-GLES3.functional.transform_feedback.array.separate.*
dEQP-GLES3.functional.transform_feedback.random.*
Bug: angleproject:3520
Test: CQ
Change-Id: I3de0e8f7a9e9c6e800be9eb2c04e713e1f88fc08
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2213810
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
d3d7b95b
|
2020-05-19T17:27:50
|
|
Vulkan:Migrate timer sync functions to one-off cmd buffer
ContextVk's getTimestamp() and synchronizeCpuGpuTime() were the two
places that mCommandQueue was used outside of processing
SecondaryCommandBuffers. Migrating those functions to use the one-
off command buffer instead. This will allow for the removal of
mCommandQueue from ContextVk as we migrate it to RendererVk
instead for threading phase2 development.
Bug: b/154030730
Change-Id: Ic00ce56739dadcdc4b5a1b1839e0e18603bfe0eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2209312
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
33cf03cd
|
2020-05-20T20:45:34
|
|
Vulkan: change preferAggregateBarrierCalls to accomodate ARM on linux
Bug: angleproject:4633
Change-Id: Ic198cef1afbad7dc96cead690daa46f07a653e96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2211321
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Sunny Sun <sunny.sun@arm.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
258d94f6
|
2020-05-18T16:21:50
|
|
Vulkan: Add workaround for nvidia to always merge barriers into one
vkCmdPipelineBarrier call
Nvidia preferes one barrier call than multiple calls with fine grained
stage dependency information. They do not care much about stage
dependency. This adds a feature flag that sets to true on nvidia and
will merge all barriers into one call.
Bug: angleproject:4633
Change-Id: I204484aa4c5989655f74d70a0eaa235c3c83f548
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2207635
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
4f343f3e
|
2020-05-13T14:11:51
|
|
Reland "Add support for GL_CHROMIUM_texture_filtering"
This is a reland of 38780ae3921d2570316119a881adfb9520e7e296 modulo the
changes to disable VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, as
this was causing problems. With this landed, the extension will not work
on SwiftShader until we find a way to allow this extension through the
validation layers.
Bug: b/146423360
Bug: b/154620295
Change-Id: Ie09fc507c01a47be3bb227bc78771660170ba5d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2199639
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3b82fdcf
|
2020-05-12T23:44:07
|
|
Revert "Add support for GL_CHROMIUM_texture_filtering"
This reverts commit 38780ae3921d2570316119a881adfb9520e7e296.
Reason for revert:
Breaks SWANGLE-VK:
05-12 23:42:28.612 22836 22861 D libEGL : dlopen_ext from APK (libEGL_angle.so) success at 0x79f4485a10
05-12 23:42:28.617 22836 22861 D libEGL : dlopen_ext from APK (libGLESv1_CM_angle.so) success at 0x79f4485eb0
05-12 23:42:28.619 22836 22861 D libEGL : dlopen_ext from APK (libGLESv2_angle.so) success at 0x79f4485c60
05-12 23:42:28.624 14223 14223 D StatusBar: disable<e i a s b h r c s > disable2<q i n >
05-12 23:42:28.633 14014 14057 V DisplayPowerController: Brightness [0.19986142] reason changing to: 'automatic', previous reason: 'automatic [ dim ]'.
05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/lib/arm64'
05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/base.apk!/lib/arm64-v8a'
05-12 23:42:28.632 22836 22836 W .khronos.gl_cts: type=1400 audit(0.0:218): avc: denied { ptrace } for scontext=u:r:zygote:s0 tcontext=u:r:untrusted_app_25:s0:c512,c768 tclass=process permissive=0 b/77925912 app=org.khronos.gl_cts
05-12 23:42:28.636 14014 14034 I EventSequenceValidator: Transition from ACTIVITY_LAUNCHED to ACTIVITY_FINISHED
05-12 23:42:28.637 22836 22861 F SwiftShader: external/swiftshader/src/Vulkan/libVulkan.cpp:425 vkCreateInstance TRACE_ASSERT: pCreateInfo->pNext sType = 1000247000
--------- beginning of crash
05-12 23:42:28.637 22836 22861 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 22861 (.khronos.gl_cts), pid 22836 (.khronos.gl_cts)
Original change's description:
> Add support for GL_CHROMIUM_texture_filtering
>
> Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when
> using SwiftShaderGL, to enable high precision filtering. This change
> makes it so ANGLE also handles this same extension when using the
> SwiftShaderVK backend, by enabling the new
> VK_GOOGLE_sampler_filtering_precision custom extension.
>
> Bug: b/146423360
> Bug: b/154620295
> Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822
> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,amaiorano@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: b/146423360, b/154620295
Change-Id: I803d7a7baac81cf178b59c4bf2789346ec1d3f87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197168
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
38780ae3
|
2020-05-06T16:05:02
|
|
Add support for GL_CHROMIUM_texture_filtering
Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when
using SwiftShaderGL, to enable high precision filtering. This change
makes it so ANGLE also handles this same extension when using the
SwiftShaderVK backend, by enabling the new
VK_GOOGLE_sampler_filtering_precision custom extension.
Bug: b/146423360
Bug: b/154620295
Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
605af42e
|
2020-03-04T21:52:53
|
|
Vulkan: Move ICD overrides to a common place
We also need the bundled ICDs and selection logic for certain tests that
create a vulkan instance. If we don't, the tests will use default vulkan
even if ANGLE is using swiftshader-vulkan. Tests of driver specific
handle types (e..g opaque fd) will fail in this case.
Bug: angleproject:4092
Change-Id: Iff089c9341b8b533ee8634923d0177c5dbcd5cc8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2088659
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
3cb9c4be
|
2020-03-13T13:56:47
|
|
Statically link vulkan-loader on Mac
Disable angle_shared_libvulkan on Mac since we are the only client.
Re-add codepaths to support this.
Bug: angleproject:4477
Change-Id: Ie128c83adaae741636541bbfd6105d160d874a8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102954
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
23621826
|
2020-04-23T10:09:03
|
|
Vulkan: Manual Validation Layer Roll
Latest Vulkan validation layer roll is hitting new error so added
exception and rolling manually.
Bug: angleproject:4583
Change-Id: Id9f8be7d2e20156ad8397ee0ba7ea5fcc12f6d28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2163133
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
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>
|
|
492ec932
|
2020-04-21T13:38:41
|
|
Vulkan: Track allocated sampler counts.
Helps to diagnose perf bugs where resources are over-allocated. Also
can be useful to evaluate caching strategies.
Bug: angleproject:4517
Change-Id: I48df5a09fbc394fa0b1712fa8cf28a179665e6e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2159293
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
6fc0066a
|
2020-04-21T17:40:54
|
|
Vulkan: Add a sampler cache.
This uses a packed sampler description to re-use samplers for multliple
VkImages. The samplers will persist for the lifetime of RendererVk. In
the future we could look at doing cache eviction for large object
counts.
Reduces the active VkSampler cache in Manhattan from over 1200 to 9.
Also should reduce the number of VkSamplers used with Chrome.
Bug: angleproject:4491
Change-Id: Idca00e4ed8cb660a0865281544aaa57cf884bbdb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2160771
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dadd1986
|
2020-04-21T01:50:00
|
|
Implement GL_APPLE_clip_distance
- Built-in variable gl_ClipDistance has been added to compiler.
- Desktop GL: gl_ClipDistance is supported since GL 3.0. Enable/Disable
each gl_ClipDistances[i] works out of the box via glEnable().
- Vulkan/Metal: Use uniform variable to control writing to each
gl_ClipDistance. One bit flag controls one element in the gl_ClipDistance
array. The writing to the disabled element in vertex shader will be
ignored, and turned into zero assignment instead.
- Direct3D/Mobile GL: Not implemented yet.
- Added ClipDistanceTest to gl_tests and compiler unittests.
- GL_APPLE_clip_distance is a subset of GL_EXT_clip_cull_distance, so
GL_EXT_clip_cull_distance could be implemented in future if needed.
Bug: angleproject:4452
Change-Id: I571ac8b56826989808a680226a04bec4cf59988e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2084324
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b7d6949b
|
2020-04-17T13:36:14
|
|
Vulkan: Enable persistently mapped buffer objects
The VMA allocator has a handy feature where during memory
allocation we can request persistently mapped memory.
This saves IOCTL overhead for apps that update buffers
frequently.
Bug: angleproject:2162
Change-Id: I870d880033beec343efae6de06f1c5935de4c2c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2155131
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
293c36c0
|
2020-04-20T17:35:19
|
|
Vulkan: Manual validation roll
Manually roll validation layers to latest and ignore two more VUIDs that
are being flagged with latest layers.
Bug: angleproject:4578
Bug: angleproject:4579
Bug: angleproject:4580
Change-Id: I4fc46d9df3fa3be4be1f8b773eb2d63e6f4bbd92
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2158265
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
139f8149
|
2020-04-20T14:04:25
|
|
Vulkan: Suppress VUID-vkCmdClearColorImage-image-01993
The latest VVL roll is generating many new errors for
VUID-vkCmdClearColorImage-image-01993. This CL will suppress the
error messages to prevent the test failures until they can be fixed.
Bug: angleproject:4577
Change-Id: I3ea4986c1f43c7d7921761e537d6d51cac3327e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2157853
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
ebc4846d
|
2020-04-17T10:42:02
|
|
Vulkan: Suppress VUID-vkCmdCopyImageToBuffer-srcImage-01998
The latest VVL roll is generating many new errors for
VUID-vkCmdCopyImageToBuffer-srcImage-01998. This CL will suppress the
error messages to prevent the test failures until they can be fixed.
Bug: angleproject:4572
Test: BindUniformLocationES31Test.ArrayOfArrays/ES3_1_Vulkan_SwiftShader
Change-Id: I6b36ab64cea8490e577f9077bb44fc7e5023fbda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2154833
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6e0d718a
|
2020-03-31T18:41:57
|
|
Vulkan: Implement device memory sub-allocation
Use AMD Vulkan Memory Allocator for device memory sub-allocation.
We now have a mempool from which all glBuffer memory is allocated.
The CPU overhead involved in repeated IOCTL calls to the kernel is
reduced significantly.
Bug: angleproject:2162
Change-Id: Id7681ffe2ac3d2853141ebe34c7df7b7fdd0d55e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124519
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
7ce8f3e0
|
2020-04-14T11:07:25
|
|
Enable perFrameWindowSizeQuery by default on Mali
It doesn't return out of date error after the native window
has resized, so we need to enable perFrameWindowSizeQuery
on Mali GPU.
Bug: angleproject:4564
Change-Id: Ib454898c5653fbb1b05dc542f7266dfffb03e793
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2145879
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
76d52be3
|
2020-04-07T09:14:29
|
|
Vulkan: Add VulkanMemoryAllocator to DEPS.
Bug: angleproject:2162
Change-Id: If91ae40c1fe818a59d775bb2fa066227dd52859d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139992
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
449d9d76
|
2020-03-31T17:27:00
|
|
Vulkan: Refactor garbarge collection related parameter
Use RendererVk instead of VkDevice as a parameter in garbage collection
functions.
Bug: angleproject:2162
Change-Id: Ifd53e05223d6d603402c9b7fcfa82fe1f896458c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131882
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d03b15b2
|
2020-03-26T17:22:18
|
|
Vulkan: Mask out Depth/Stencil RTs in feedback loops.
This should enable some cases of limited support for feedback loops
with depth/stencil buffers. For example with Manhattan and the Vulkan
back-end.
Increases the number of RenderPasses in Manhattan slightly. This will
regress performance slightly until we can work out a better solution
that is also conformant with the spec.
Bug: angleproject:4517
Change-Id: I2758e6b4c2a930474c09cdc0950f3b6c34541089
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2106670
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
6719f54a
|
2020-03-24T08:36:41
|
|
Update Vulkan header and related repos
Vulkan header was updated with non-backward compatible change so need
to update all dependencies simultaneously.
Bug: b:152298150
Bug: angleproject:4510
Change-Id: I46ac9a3a0ccb52184fd183df617804c866b63453
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118151
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
4119f033
|
2020-03-17T13:34:09
|
|
Vulkan:Set one-time bit on all command buffers
All Vulkan command buffers are only submitted once so we can set the
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT which may help performance.
Bug: angleproject:4304
Change-Id: Ibd116dcac4e78a2c058eb3da54489057d6fa8f44
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107800
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
b1b6a171
|
2020-03-10T14:20:36
|
|
Vulkan: Disable robustness support
Swiftshader does not currently have the ability to behave in a way
for ANGLE to support KHR_robustness. Disable for now until that
functionality is available.
Bug: angleproject:3058
Bug: swiftshader:145
Change-Id: I1c1b8147f6b9cf6f8d0da633dfe0f61ebfab5175
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2097053
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
1a5c7a16
|
2020-02-25T12:02:31
|
|
Reland "Vulkan:Include precision qualifier in GLSL"
Currently still ignoring precision qualifiers for Vulkan shaders by
default, but have added feature "enablePrecisionQualifiers" that can be
enabled in order to include precision qualifiers.
With this initial implementation, it's possible to get precision
qualifier mis-matches in the generated GLSL 4.50. According to the
spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and
Precision Qualifiers":
For the purposes of determining if an output from one shader stage
matches an input of the next stage, the precision qualifier need not
match.
However, when converted to SPIR-V and run through the shader validation
any mismatches will cause shader validation errors. Initially just
ignoring those errors with this commit.
Bug: angleproject:3078
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
Change-Id: Ieecca604bb2c834c9b1c2bcab85279d1f8755dfa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086280
|
|
f143ab1f
|
2020-03-03T17:15:38
|
|
Vulkan: Disable forceOldRewriteStructSamplers for SwS-Android
Disable the forceOldRewriteStructSamplers feature for SwiftShader on
Android. Another change fixed the issue that prevented SwiftShader on
Android from supporting sampler arrays as parameters. The Qualcomm
driver still cannot support sampler arrays as parameters, and so it
still needs forceOldRewriteStructSamplers.
Bug: angleproject:4071
Bug: angleproject:2703
Change-Id: I77fbfacdad6cd9cc918c79fa0918f15de0558ce0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086282
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f8b28678
|
2020-02-26T19:12:39
|
|
Vulkan: Add support for VK_EXT_index_type_uint8
Enable VK_EXT_index_type_uint8 Vulkan extension if supported by
VkDevice.
Bug: angleproject:4405
Change-Id: I84d030497898c5944a36d9a88a31e7377ccd5e9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082391
Commit-Queue: Xiaoxuan Liu <xiaoxuan.liu@arm.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ff60abaf
|
2020-02-28T14:06:07
|
|
Vulkan:Disable FramebufferVk cache on Apple
Currently hitting a crash on Apple so disabling FramebufferVk cache.
Bug: angleproject:4442
Change-Id: I3824252210aeeaf9919c8d17730395b394a50862
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080661
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
a60e4973
|
2020-02-27T20:11:20
|
|
Revert "Vulkan:Include precision qualifier in GLSL"
This reverts commit 93e72f5f0eb80b89334ea8fe577b32901a00b5fb.
Reason for revert: This is having a negative impact on gfxbench
Manhattan 3.1 tests (20-30%) with only a minor improvement (~4%) in TRex offscreen. Pulling out for now and need to re-evaluate best
solution here.
Original change's description:
> Vulkan:Include precision qualifier in GLSL
>
> With this initial implementation, it's possible to get precision
> qualifier mis-matches in the generated GLSL 4.50. According to the
> spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and
> Precision Qualifiers":
>
> For the purposes of determining if an output from one shader stage
> matches an input of the next stage, the precision qualifier need not
> match.
>
> However, when converted to SPIR-V and run through the shader validation
> any mismatches will cause shader validation errors. Initially just
> ignoring those errors with this commit.
>
> Bug: angleproject:3078
> Change-Id: Ia2b04f90f0a7b6b1302c1b1b3e32bcfd8db9ed49
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Tobin Ehlis <tobine@google.com>
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
TBR=tobine@google.com,timvp@google.com,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:3078
Change-Id: I84984e2a963bde573f0f1de585001ceb83623c89
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079334
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
e488d8b8
|
2020-02-26T16:11:29
|
|
Vulkan: Implement Android pre-rotation
As an Android GLES driver on top of Vulkan, ANGLE must pre-rotate
rendering on behalf of the application. This involves modifying the
vertex shader to multiply gl_Position with a mat2 "rotation matrix".
Not doing so means that SurfaceFlinger (SF) will perform a costly
rotation blit before presenting every image. Setting
WindowSurfaceVk::mPreTransform to mCurrentTransform tells SF to not do
the blit.
When the surface is rotated 90 or 270 degrees, the width and height
must be swapped for:
- The swapchain images, and for any depth, stencil, and/or multisample
attachments used with the swapchain image.
- The viewport, scissor, and render area.
Because the Metal back-end shares the TranslatorVulkan, it will define
the same preRotation (mat2) DriverUniform that is used for Vulkan.
Bug: angleproject:3502
Change-Id: I968dbe8869ba0f50de18dd41f1195e847c06b545
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2038272
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
93e72f5f
|
2020-02-25T12:02:31
|
|
Vulkan:Include precision qualifier in GLSL
With this initial implementation, it's possible to get precision
qualifier mis-matches in the generated GLSL 4.50. According to the
spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and
Precision Qualifiers":
For the purposes of determining if an output from one shader stage
matches an input of the next stage, the precision qualifier need not
match.
However, when converted to SPIR-V and run through the shader validation
any mismatches will cause shader validation errors. Initially just
ignoring those errors with this commit.
Bug: angleproject:3078
Change-Id: Ia2b04f90f0a7b6b1302c1b1b3e32bcfd8db9ed49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
8aea6d5a
|
2020-02-25T11:22:00
|
|
glslang: enforce initialize and release as once per process
Bug: angleproject:4354
Change-Id: Ice0912a90d4e9a4fe3fdaf67d67292afc0eba8a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2073201
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
660c0dd6
|
2020-02-25T13:30:33
|
|
Vulkan: Fix padding out Buffer allocations on AMD.
We would often pad incorrectly given the constraints of the max stride.
We shouldn't really be rounding up the buffer size, but we should
instead be adding the max alignment size to the end of the buffer.
Bug: angleproject:4428
Change-Id: Id2afc572c85985548a18f60b42cdc388d83d5c4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071235
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
46cb0f62
|
2020-02-21T11:38:17
|
|
Vulkan: prevent volk reloading on null instance and devices
Bug: angleproject:4419
Change-Id: I82f9bb157e88754efd074358dccef1bb82cab0f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068902
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a741abb9
|
2020-02-21T16:37:37
|
|
Vulkan: Rename CommandGraphResource to Resource.
Also renames the h and cpp files to ResourceVk (to keep distinct from
other resource.h/cpp files) and renames 'onResourceAccess' to 'retain'.
Cleans up a few remaining mentions of the command graph in comments.
Bug: angleproject:4029
Change-Id: Ifc8e880c8cea3fc48a4aec4730191c88aa35a076
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065920
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c4197713
|
2019-06-03T19:23:02
|
|
Implement glImportMemoryZirconHandle & glImportSemaphoreZirconHandle
Implement import of fuchsia external objects passed by zircon handle. This
works exactly the same as with file descriptors.
Bug: angleproject:3492
Change-Id: I4d46917dfc5902f00c94550158a9f8073097f0a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1642334
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c58458e6
|
2020-02-19T14:51:41
|
|
Vulkan: Remove CommandGraph code.
Also updates relevant comments to no longer refer to a graph.
Bug: angleproject:4029
Change-Id: Ic29716e9ae4926870f902947d49d8fee7af98662
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057804
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
ce4918f1
|
2020-02-19T09:39:44
|
|
Vulkan: Sanitize Images & Buffers with non-zero values.
Only enabled for specific tests at the moment. This CL allows our tests
to sanitizes memory for the robust resource access extension. It is
quite slow so should not be enabled by default.
Only works for 1 level 2D color textures and buffers. Makes several
flaky robust resource initialization tests consistently fail.
Controlled via an angle::Feature in FeaturesVk.
It works by initializing memory to an abitrary non-zero value:
- if newly allocated memory is mappable, we map it in init and set it
- if a buffer or texture can be a transfer destination, we use a
staging resource
- otherwise we don't attempt to initialize the resource.
Bug: angleproject:4384
Change-Id: I9b4f347bfcddf3096f491ed0243bef86837feaa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2043271
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
12a36dd9
|
2020-02-14T12:48:20
|
|
Vulkan: Add debug utils functions to wrapper.
Also adds a more consistent way of checking if the debug utils
extension is enabled.
Enables adding support for the debug utils markers with the command
graph disabled.
Bug: angleproject:4029
Change-Id: I5f8762921b06f54e400c25764012ab70e10bfb8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055554
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
74ab0bff
|
2020-02-12T17:29:27
|
|
Vulkan: Disable command graph by default.
Also removes the angle_end2end_tests feature override.
Bug: angleproject:4029
Change-Id: I0d0bd087fc2143360185592d9fa1238a9bafc55d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2046054
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
806ba566
|
2019-12-12T13:02:01
|
|
Extend ANGLE_iosurface_client_buffer to Vulkan backend for Swangle
Implement an IOSurface-backed pBuffer surface for the Vulkan backend
on Mac, through SwANGLE. ANGLE will pass a raw pointer to Swiftshader
and handle locking/unlocking the IOSurface.
Bug: chromium:1015454
Change-Id: Ia3ead55334736003d405b54ba8dcc7701706fbb2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965434
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
eb63016d
|
2020-02-04T16:15:41
|
|
Add environment overrides for ANGLE features.
Allows the application to override ANGLE behaviour without having to
modify the code or use the ANGLE extension. Useful for testing with the
command graph refactor.
Adds a new string utility for parsing lists of strings from environment
variables.
Bug: angleproject:4029
Change-Id: Ibae93b743c0c385392cd259d9604ce2f2ed988dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2037784
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
49a53d68
|
2020-01-30T16:30:30
|
|
Vulkan: Request used features
Some features were used but not enabled. There is no validation error
for this. This change enables the following features:
- shaderStorageBufferArrayDynamicIndexing: used by atomic counter
emulation.
- shaderSampledImageArrayDynamicIndexing: used by sampler array of array
emulation, as well EXT_gpu_shader5.
- shaderUniformBufferArrayDynamicIndexing: used by EXT_gpu_shader5.
Bug: angleproject:4071
Change-Id: I582750d1552055deeec50485e6511788b98490c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2032144
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1736c47b
|
2020-01-31T11:16:41
|
|
Vulkan: Remove transient cmd buffer workaround
We no longer need this workaround. Also mCommandPoolFreeList dead code.
Bug: angleproject:3508
Change-Id: Ib73ddd431eb1bf9a55c3421111af4df5976cc1fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033485
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
71153201
|
2020-01-29T14:42:30
|
|
Vulkan: Disable restartRenderPassAfterLoadOpClear workaround
This workaround was added due to qualcomm driver bug b/129281932. But
this has been fixed with recent drivers. Removing the WR here so that it
will not negatively affect performance.
Bug: angleproject:4344
Change-Id: Iea2ec86082a0ced64bfe843bf916c6bdb2aea60b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2029210
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
053929ac
|
2020-01-24T18:15:38
|
|
Fuchsia: Enable perFrameWindowSizeQuery by default
Fuchsia won't return VK_ERROR_OUT_OF_DATE_KHR after a size change, so we
need to check every frame. In fact we don't even tell Scenic what the new
size is during resize, because it does not care - the surface size
determines the "window size", not the other way around.
Bug: angleproject:4348
Change-Id: I8f9af0d1379f4993865c7ccedc9aba3cab90cf54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023914
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
71e6afb1
|
2020-01-14T14:12:31
|
|
Vulkan: Set set/binding in SPIR-V
This change introduces a SPIR-V transformer that modifies shader
interface variable decorations directly in SPIR-V instead of
manipulating the input GLSL. Currently, descriptor set and binding
indices are set by the transformer.
The shader translator outputs arbitrary set and binding indices. Once
compiled by glslang, the SPIR-V transformer modifies these decorations.
The ultimate goal is to be able to modify the SPIR-V again when program
pipeline objects decide a different set/binding is necessary.
Bug: angleproject:3394
Change-Id: If358265a72bf1fe9f5676562b39a632cb2e05dc4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001477
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d0b4eaf6
|
2020-01-16T09:38:28
|
|
Vulkan: Allow user to specify preferred device
On a platform with multiple graphics devices (e.g. laptop with
integrated and descrete devices) it's handy to be able
to specify the specific device we want ANGLE to use.
Setting the environment variable ANGLE_PREFERRED_DEVICE to the device
name as returned by VkPhysicalDeviceProperties.deviceName will select
that device.
Bug: angleproject:4305
Change-Id: Ib16895add2c36a59135942b52401ceb7b6bc0895
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2002737
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
564eb6f2
|
2019-11-22T16:46:02
|
|
Implement EGL_IMG_context_priority
Change RendererVk to have 3 VkQueues instead of one.
Each queue has a priority. To match extension: Low, Med, High.
gl::Context contains priority.
ContextVk contains a reference to one of the queues.
Every call to vulkan that uses queue, uses the associated context queue.
Bug: angleproject:3962
Change-Id: Ibd913a07a81c77bd975921d6dbae6a222842e88b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1978154
Commit-Queue: Jeff Vigil <j.vigil@samsung.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
13205b93
|
2020-01-16T14:48:12
|
|
Vulkan: Cleanup device feature query and enabling
All device extension features and properties queries are now performed
in a single call for each (i.e. one for features, one for properties),
with all the extension structs chained. Then based on which feature is
present (not just whether the extension is supported), the extensions
and features are enabled.
In the process, it fixes the following issues:
- If VK_EXT_vertex_attribute_divisor is present, but the necessary
vertexAttributeInstanceRateDivisor feature is not supported, that
feature is not enabled and the emulation path is taken. Incidentally,
this also fixes an issue with renderdoc that refuses to replay captures
on such devices.
- If VK_EXT_transform_feedback is present, but the necessary
transformFeedback feature is not supported, similarly that feature is
not enabled and the emulation path is taken.
Bug: angleproject:4306
Bug: angleproject:4027
Change-Id: I0969064cba811d215c37dfe551b0ceedb334051c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2005111
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
62475e95
|
2020-01-20T11:16:24
|
|
Allow tests to pick ANGLE features.
This uses the EGL_ANGLE_feature_control extension through the test
harness to control feature selection via a test config. This obviates
the need for the hacky platform methods table override.
Also adds a command graph feature that will be used to prototype the
command graph linearization for Vulkan.
Bug: angleproject:4029
Change-Id: Id37fadd5d2c317c9d9dd90dfab1fdc8e4ac3701f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2007612
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6b275406
|
2020-01-09T11:14:47
|
|
Vulkan: Workaround vertex attributes vs stride issue on AMD
Under robustBufferAccess, Vulkan states that:
Vertex input attributes are considered out of bounds if the offset of
the attribute in the bound vertex buffer range plus the size of the
attribute is greater than either:
- vertexBufferRangeSize, if bindingStride == 0; or
- (vertexBufferRangeSize - (vertexBufferRangeSize % bindingStride))
The latter implies that if the buffer size is not a multiple of the
vertex attribute stride, what lies beyond the last multiple of stride is
considered out of bounds.
It also says:
Out-of-bounds buffer loads will return any of the following values:
- Values from anywhere within the memory range(s) bound to the buffer
(possibly including bytes of memory past the end of the buffer, up to
the end of the bound range).
- Zero values, or (0,0,0,x) vectors for vector reads where x is a valid
value represented in the type of the vector components and may be any
of ...
The first bullet point indicates that the driver is allowed to load the
attribute values from the buffer if its range still lies within the
buffer size.
Take the following example:
- Buffer size = 12
- Attribute stride = 8
- Attribute offset = 0
- Attribute size = 4
Basically the buffer is thus laid out as follows:
attr stride
_________/\_________
/ \
+----------+----------+----------+
| vertex 0 | padding | vertex 1 |
+----------+----------+----------+
\___ ____/
V
attr size
In the above example, the attribute for vertex 1 is considered out of
bounds, but the driver is allowed to either read it correctly, or return
(0, 0, 0, 1) for it.
Most drivers implement the former, while AMD implements the latter.
This change introduces a workaround for AMD where
GL_MAX_VERTEX_ATTRIB_STRIDE is limited to 2048 (the common value for it
according to gpuinfo.org) and conservatively rounds up every buffer
allocation to that size.
While technically, this workaround should be applied on any device with
the robustBufferAccess feature enabled, it is currently limited to AMD
to avoid the inefficiency. A possible future revision of Vulkan may
relax the above restrictions.
Bug: angleproject:2848
Change-Id: Ida5ae5d777da10f22ce8be5a09a7644b5bbd778e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1991709
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5aed7c74
|
2020-01-08T17:42:21
|
|
Narrow point size range clamping to affected versions
Bug: angleproject:2970
Change-Id: Ie14725b0cf30738d394320c24a72bc947135f5cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993204
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
23b8857b
|
2020-01-08T14:07:53
|
|
Fix RendererVk::getMaxSupportedESVersion() to truly downgrade max version
Added a small helper function (LimitVersionTo) to prevent future mistakes.
Bug: angleproject:4168
Change-Id: Ia19312459540adbc2788ad0a5cb3d19ef1ff784f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1992185
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2c63b83c
|
2020-01-03T15:44:30
|
|
Vulkan:Enable DebugUtils extension for Android
Enable DebugUtils Vulkan extension for Android.
This rolls VK Validation Layer dep forward to include a fix that
allows this extension to work correctly with Android loader.
Here's the Validation layer fix:
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/1464
Bug: angleproject:3852
Change-Id: I74c55c0a66a7ee4db3b623221c8fb6c4433a39af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1985175
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
942d9152
|
2019-12-23T15:31:52
|
|
EGL: Add support for EGL_KHR_gl_colorspace extension
If the Vulkan backend supports VK_EXT_swapchain_colorspace extension,
enable the option for applications to create surfaces with non-linear
formats. Not all formats have non-linear versions and is platform
specific.
Tests: dEQP-EGL.functional.wide_color.*
angle_deqp_egl_tests --use-angle=vulkan --deqp-gl-context-type=egl --deqp-case=dEQP-EGL.functional.wide_color.*
Bug: angleproject:2514
Change-Id: I441ee797cceef92c84473bfa18605c4fd8180de1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1951963
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
e2fc92ca
|
2019-12-23T14:21:28
|
|
Vulkan: Fix swiftshader device selection
A recent SwS roll changed the deviceName of swiftshader to include the
backend (LLVM for example). That made ANGLE no longer recognize
SwiftShader. This change looks for the known SwS device name as a
prefix of the deviceName retrieved from the device, rather than a
complete match.
Bug: angleproject:3876
Change-Id: If6dacb1e5685493d5334cad2015439f0f6b71124
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1980275
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7e19e25e
|
2019-12-16T10:59:42
|
|
Vulkan: Fix SwiftShader disabled build.
Disabling SwiftShader in the GN build led to a compile error
when trying to use ANGLE_VK_SWIFTSHADER_ICD_JSON.
Bug: angleproject:4223
Change-Id: I076a88e6bc58adf1e34bbb7286b1f46028cd021a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1969059
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d674e1e5
|
2019-12-12T14:47:24
|
|
Vulkan: EXT_gpu_shader5: non-const offset in textureGatherOffset
This change includes preparatory work for textureGatherOffsets as well,
though that requires special handling which is addressed in a follow-up
change. This special handling is due to the fact that this family of
functions is the only built-in with an array parameter, and our built-in
table generation doesn't handle it correctly.
Bug: angleproject:3569
Change-Id: Ic1c8dd03878a184be00f578ab9fc42af8f6e47ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965435
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5fd73782
|
2019-08-09T11:46:46
|
|
Vulkan: Use volk to load vk* func ptrs
Thanks to Jamie Madill for some fixes to get all CI test passing w/ volk.
This change updates all ANGLE targets that use Vulkan to dyanmically
link all of the VK entrypoints using the volk OSS library from
https://github.com/zeux/volk.
It's only two source files so baking them directly into ANGLE repo.
Also it's used in both the tests and libANGLE trees so added to
src/common/third_party/volk dir.
Updated volk and the renderer to track latest instance and device
that were loaded and renderer will refresh vk* function pointers if
the current and previous device and/or instance don't match. This
prevents errors in the test framework as we transition between
backends, especially between VK HW & SwiftShader ICDs.
This change rolls the Vulkan Loader forward to use the latest loader
version which no longer allows static linking but requires dynamic
linking.
Bug: angleproject:3740
Bug: angleproject:4092
Bug: angleproject:4162
Bug: angleproject:4210
Bug: angleproject:4225
Change-Id: I8a0b7d24c9545bbfdfaa4b9357a9bfe6793e0140
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965640
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
caa6eccd
|
2019-10-27T13:46:56
|
|
Vulkan: Implement Transform Feedback support via extension
Implemented transform feedback extension path. Where
VK_EXT_transform_feedback is supported, extension path will be taken
over an emulation path. Extension path has advantages in terms of
performance.
BUG=angleproject:3206
Test: dEQP-GLES3.functional.transform_feedback.*
angle_end2end_tests --gtest_filter=TransformFeedbackTest*
Change-Id: Ia07c23afb289d9c67073469a97b714ec96f5265a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1882767
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
4576f1d0
|
2019-12-05T10:10:48
|
|
Vulkan: Implement multisample textures
This functionality is exercised by running angle_deqp_gles31_tests with the
following sets of command arguments:
--gtest_filter=dEQP.GLES31/functional_texture_multisample* --use-angle=vulkan
--gtest_filter=dEQP.GLES31/functional_state_query_texture_level_texture_2d_multisample* --use-angle=vulkan
--gtest_filter=dEQP.GLES31/functional_state_query_texture_texture_2d_multisample_texture_immutable* --use-angle=vulkan
The following are some high-level design notes:
- Texture::setStorageMultisample() handles converting the "requested number of
samples" to the actual number of samples used (e.g. converting 3 to 4),
supported by the underlying back-end). The actual number used is stored in
gl::TextureState::mImageDescs, for use by other GLES commands.
- ANGLE uses the Vulkan standard sample locations/positions. If the underlying
Vulkan driver's VkPhysicalDeviceLimits::standardSampleLocations is false,
ANGLE limits itself to GLES 2.0 (i.e. before GLES 3.0 which adds multisample
renderbuffers).
- The Vulkan specification currently doesn't support ANGLE providing support
for GLES 1-sample textures, because of the following Vulkan specification
statement:
- If the image was created with VkImageCreateInfo::samples equal to
VK_SAMPLE_COUNT_1_BIT, the instruction must: have MS = 0.
- At least one Vulkan driver returns different
VkPhysicalDeviceLimits::*SampleCounts for different formats. Because of
this, ANGLE does a logical-AND of all values in order to only support the
commonly-available numbers of samples.
The detailed design document is located at:
https://docs.google.com/document/d/1NiM8gAR74iGGXGTE6IP1ChdDUZjhtXRuJdtEp_wGFEM/edit?usp=sharing
Bug: angleproject:3565
Bug: angleproject:4103
Bug: angleproject:4104
Bug: angleproject:4196
Bug: angleproject:4197
Bug: angleproject:4198
Change-Id: I28921badf9568427799b0af347198b5df06c2db0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919982
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
795a3559
|
2019-12-03T11:31:18
|
|
Vulkan: EXT_gpu_shader5 support: precise
The precise keyword is used in tessellation shaders but introduced in
this extension.
EXT_gpu_shader5 introduces a handful of features to shaders. This
change only implements the `precise` keyword.
Bug: angleproject:3569
Change-Id: I2252b79098eb8ba2d2faa040d7eaed7548b7051e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1939851
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4c7db77e
|
2019-10-31T15:42:31
|
|
Vulkan: Set limitation on maxComputeWorkGroupCount
According to Table 20.45 and Chapter 17 in the ES 3.1 spec, MAX_COMPUTE_WORK_GROUP_COUNT
is get as a GLint by using GetIntegeri_v. However, it is an unsigned integer
in the Vulkan. It needs to set limitation on maxComputeWorkGroupCount[] during
translating.
1. Change the data type to GLint stored in Caps.
2. Ensure that the limitation is set during initialization.
3. Add workaround for angleproject:4120
Bug: angleproject:4066
Change-Id: I1659ba1d560e30b9599cace0feeab8a18890c3ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1890586
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
84c074cf
|
2019-11-20T15:32:44
|
|
Vulkan: Simplify AppendToPNextChain use
The function is turned into a template to avoid the reinterpret_cast at
call sites. Additionally, uses Vulkan's own VkBaseOutStructure instead
of a bespoke definition.
Bug: angleproject:4027
Change-Id: Ib236d44a12c0363e7e89b9bf2ed5ab8166252730
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1924992
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
f9c3eaf4
|
2019-11-19T15:19:04
|
|
Add ability to disable all ANGLE features
Chrome has a --disable-gpu-driver-bug-workarounds flag that needs to be
able to be forwarded to ANGLE
Bug: 1016377
Change-Id: Ied6c8656742e25c32d508b8bfe76a902d82bcf93
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1925249
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0e5d019e
|
2019-11-08T08:43:21
|
|
Vulkan: Enable 3.0 as default context version
Now that 3.0 support is passing dEQP, always return that as the
context version to use (unless app asks for 1.0).
Test: angle_end2end --gtest_filter=EGLBackwardsCompatibleContextTest.BackwardsCompatibleEnabledES3/*
Bug: angleproject:3750
Change-Id: I0402ac015acfc22e84a985fe75346999bcc47188
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906202
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
322220a0
|
2019-11-05T09:51:43
|
|
Vulkan: Ignore VK_INCOMPLETE from vkGetPipelineCacheData
When getting the data store from a pipeline cache, we do the following
sequence:
1.) Query the amount of data to get.
2.) Create a buffer to hold that data.
3.) Request that amount of pipeline cache data.
This typically works without errors, but we have seen cases where the
amount of pipeline cache data changes between steps (1) and (3). This
leads to the driver returning VK_INCOMPLETE because we requested a
different amount of data than the driver currently has (either too much
or too little). However, getting at least the pipeline cache header is
all that's required, so this isn't necessarily an error:
From the Vulkan spec:
> If pDataSize is less than the maximum size that can be retrieved by
the pipeline cache, at most pDataSize bytes will be written to
pData, and vkGetPipelineCacheData will return VK_INCOMPLETE. Any
data written to pData is valid and can be provided as the
pInitialData member of the VkPipelineCacheCreateInfo structure
passed to vkCreatePipelineCache.
This change will update ANGLE to ignore VK_INCOMPLETE, rather than
treating it as an error.
Bug: angleproject:3988
Test: Android dEQP-GLES2.*
Change-Id: I6518d7cb00c26ae403b58aafa86a600fa7a8504a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1900009
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
6072d056
|
2019-11-05T10:26:12
|
|
Vulkan:Ignore layer warnings about provoking vtx ext
We're temporarily using a pre-release version of the provoking vertex
vulkan extension that's causing the layers to complain about unknown
structs. I already skipped two warnings, but missed this one so adding
it. This will temporarily disable the warning until the extension lands
in the header.
Bug: angleproject:4063
Change-Id: Ide7b0b068fca6ea4b3cd60bce35fb56f431e4739
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1900014
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
1d09b983
|
2019-11-05T16:22:04
|
|
Vulkan: Fix memory corruption crash
When VK_EXT_LINE_RASTERIZATION or VK_EXT_PROVOKING_VERTEX is present,
createInfo's pNext pointer is set, which caused pEnabledFeatures to
not be set, which ended up causing memory corruption issues.
This change was made to comply with the Vulkan spec, specifically:
"If the pNext chain includes a VkPhysicalDeviceFeatures2 structure,
then pEnabledFeatures must be NULL"
Since the VkPhysicalDeviceFeatures2 structure is only added to the
pNext member of the createInfo structure in the if statement above,
restoring the else statement solves this issue.
Bug: angleproject:4060
Change-Id: I0688c4297f167fa28e110cd6ee11a11b95282493
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1899731
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c898ec1a
|
2019-11-04T15:20:18
|
|
Add EGL GGP extensions.
This CL adds two new extensions:
* EGL_ANGLE_ggp_stream_descriptor:
Introduces a new attribute to CreateWindowSurface. Allows the app
to pass in a stream descriptor to VkCreateSurfaceKHR.
Mirrors VK_GGP_stream_descriptor_surface.
* EGL_ANGLE_swap_with_frame_token:
Introduces a new function 'eglSwapBuffersWithFrameTokenANGLE'. This
allows the app to pass a GGP frame token down to vkQueuePresentKHR.
Mirrors VK_GGP_frame_token.
Bug: angleproject:4078
Change-Id: I4313ac4c264e68999905049f661bc64b44f72fab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1897315
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
5cbb7773
|
2019-11-04T11:05:14
|
|
Vulkan: Increase Fence Wait Time
Our current fence wait time is triggering timeouts while running with
SwiftShader. However, it's possible for a 'real' application to hit a
timeout also with a large enough workload. This change increases the
timeout to something large enough for us to avoid most timeouts and
instead rely on the OS's detection and recovery mechanism (e.g., Windows
TDR).
We will continue to investigate improving ANGLE's command timeout
handling mechanism.
Bug: angleproject:4043
Test: CQ
Change-Id: I3a32174d1d794806fef1971806797683b6b3f0b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1897648
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2f6a9afd
|
2019-11-01T15:06:58
|
|
Vulkan:Ignore layer warnings about provoking vtx ext
We're temporarily using a pre-release version of the provoking vertex
vulkan extension that's causing the layers to complain about unknown
structs. Temporarily disable these warnings until the extension lands
in the header.
Bug: angleproject:4063
Change-Id: Ia441ddef21bfcca9bb1b46f25a009eb469e8f1fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1895326
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
5e6be1d6
|
2019-10-11T11:29:22
|
|
Provoking vertex feature support enabled
Added support in ANGLE for the provoking vertex feature,
which allows to choose the provoking vertex convention
(first or last) for flat shading.
Just copying the vk_ext_provoking_vertex.h file into ANGLE src tree for now.
When the extension lands in the vulkan header we'll migrate to that and remove this
file from ANGLE.
With this, all these tests pass with SwANGLE:
dEQP-GLES3.functional.fragment_out.* (fixes 526 failures)
dEQP-GLES3.functional.rasterization.flatshading.* (fixes 6 failures)
dEQP-GLES3.functional.shaders.linkage.varying.* (already passing before, still passing)
Bug: angleproject:3430
Bug: angleproject:3677
Bug: angleproject:4063
Change-Id: Icc361f567072c12472398e37a94a61d7f95007ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1855681
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
|
|
287b0a67
|
2019-10-24T17:21:40
|
|
Vulkan: Enable forceOldRewriteStructSamplers for all Android ICDs
Both Qualcomm and SwS require forceOldRewriteStructSamplers to be
enabled, so this change will enable that feature for all of Android.
We aren't sure yet why this is required for SwS also, but that will be
chased as part of issue 2703.
Bug: angleproject:4045
Change-Id: I83b2ac18e0111ed35438ffd457bfe120911a7767
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1879711
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a6206854
|
2019-10-24T12:55:09
|
|
Enable "-Wmissing-field-initializers".
This is another warning required by Skia. This one didn't find
anything that surprising. Enabling the warning does help enforce
code consistency and avoids a bit of possible undefined behaviour.
Bug: angleproject:4046
Change-Id: Ifec7f4afad49cd820bf3c0a79df3f46559473ee2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877477
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
08af1c80
|
2019-10-22T08:58:52
|
|
Vulkan:Store full 64bit handle in GarbageObject
On 32bit builds we were only storing 32bit handles for non-
dispatchable objects. This resulted in the handles getting shrunk
from 64-bits which then led to false validation errors.
Fixed this by using VK_DEFINE_NON_DISPATCHABLE_HANDLE() macro in
GarbageObject instead of VK_DEFINE_HANDLE().
Also MSVC on Win32 didn't like reinterpret_cast<> with the updated
64bit handles so migrated a number of GarbageHandle casts to be
c-style which is contrary to style guide, but is preferable to
conditional code.
Bug: angleproject:3924
Bug: angleproject:3946
Change-Id: Icb4139e34989179e46ac1f0c76269ff49ab1e897
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1873244
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a48f95ab
|
2019-10-14T14:49:49
|
|
Move Vulkan GlslangWrapper code to a shared location.
Metal backend will reuse Vulkan's GlslangWrapper code.
The Metal backend will use this code to translate glsl to spirv then
cross compile to Metal Shading Language using spirv-cross.
So the source code of GlslangWrapper should be moved outside vulkan folder.
Bug: angleproject:2634
Change-Id: I208062daf0d77756c9d32cfdab925b7dfdf83e05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1858042
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
df9a7500
|
2019-10-21T15:32:27
|
|
Remove forceNonZeroScissor workaround
The original driver bug no longer exists after upgrading the bots. This
workaround has the side effect causing the bug 3867.
Bug: angleproject:3407
Bug: angleproject:3867
Change-Id: I64f2e41729f209a1cef5ba49140650207666992c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1870845
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
be1fa7d8
|
2019-10-16T16:34:57
|
|
Vulkan: Enable VK_EXT_line_rasterization
Plumbing to make ANGLE use VK_EXT_line_rasterization
extension when available.
Bug: angleproject:3981
Change-Id: I12913c20bff69ab0b7c16462c10b8b5fd8e1c2a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1865027
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4a80ba25
|
2019-10-10T17:07:26
|
|
Vulkan: Ignore VK_INCOMPLETE from vkGetPipelineCacheData
From vkGetPipelineCacheData(3) Manual Page:
If pDataSize is less than the maximum size that can be retrieved by
the pipeline cache, at most pDataSize bytes will be written to
pData, and vkGetPipelineCacheData will return VK_INCOMPLETE. Any
data written to pData is valid and can be provided as the
pInitialData member of the VkPipelineCacheCreateInfo structure
passed to vkCreatePipelineCache.
Bug: angleproject:3988
Test: CQ, CtsOpenGLTestCases
Change-Id: I34589ee3c9e27839a9cd0168b4a2186f4cbb255e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1854680
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
ae1b7786
|
2019-10-16T16:42:53
|
|
Fix ANGLE_FEATURE_CONDITION style issue
Macro should end with a ;
Bug: angleproject:3976
Change-Id: I4aaa146464d9d7e6230a3de44c30cfd1179a89ae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1864620
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|