|
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>
|
|
fede5cb6
|
2019-10-12T14:43:26
|
|
Vulkan: Remove resource destruction layer suppressions.
Bug: angleproject:3925
Change-Id: Ic2bda7daf67c6fa735c15735dcb60c5f9a203fc0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1857895
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d37992d1
|
2019-10-04T10:13:23
|
|
Vulkan: Prevent Creating ES 3.0 Context if Min. Caps. Not Met
ANGLE should not allow creating an ES 3.0 context if the device's
maxPerStageDescriptorUniformBuffers or maxVertexOutputComponents
values are too low to support the necessary minimums for GLES 3.0.
Bug: angleproject:3938
Test: CQ
Change-Id: I4fce841d1f364c1aef1a883fa5edb64a4b93f08e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1841971
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
32bee0fd
|
2019-10-10T11:46:58
|
|
Fix debug layers being disabled everywhere.
The define that controlled the debug layer preference was mistakenly
checking a Vulkan define. When the Vulkan define was moved into the
Vulkan back-end then the layers became disabled for all back-ends.
Fix this by using a layered check in the Vulkan back-end and restoring
the asserts enabled check to ShouldUseDebugLayers.
Suppresses some tests that regressed the layers after they were broken.
Bug: angleproject:3987
Bug: angleproject:3991
Change-Id: I6aafcff6d9e19866c2324663ef4d4550e97fcfb8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1852706
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d7323cf7
|
2019-10-09T18:05:16
|
|
Fix a warning with VS2019.
Popped up when testing with the new compiler.
Bug: angleproject:3986
Change-Id: I2c0f838941b133e0d7785f1ba62b5e7d02d89bd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1849986
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f750d86a
|
2019-10-01T17:52:37
|
|
Trigger a flush() when the command graph contains too many objects
If an App repeatedly issues GL commands like glTextImage2D without a
finish/flush/draw, it's possible for ANGLE to exhaust the available
Vulkan memory allocations and exceed
VkPhysicalDeviceLimits::maxMemoryAllocationCount. When this occurs,
the Vulkan validation layers will trigger an error and cause dEQP
tests to fail.
This change will query the backend if a flush() should be performed
during each of the GL delete calls, and perform it if necessary. This
will cause a queue submission and a Serial increment, allowing the
allocated memory to be freed, preventing the validation errors.
Bug: angleproject:3818
Test: KHR-GLES3.copy_tex_image_conversions.forbidden.renderbuffer_cubemap_*
Change-Id: I26d0a47aa7bca10c25bc8141f1523afbab0b3b5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1834781
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7dd03446
|
2019-09-30T13:50:12
|
|
Ensure Features* descriptions stay up to date
Created a macro to help keep Features' descriptions up to date. This
will avoid confusion in the future when conditions change. Also update
all descriptions to match current state.
Bug: angleproject:3947
Change-Id: Ifc65e7789c916fab79f1323798dfb59d7a4efad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1829584
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
514d5e28
|
2019-09-25T14:37:44
|
|
Vulkan: Remove global finish in ContextVk::onDestroy.
Should be no longer necessary with shared garbage collection in
RendererVk.
Bug: angleproject:2464
Change-Id: I8ebd910cf36dd0b18d83d32981db28599d443ec3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1825445
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f22f16d3
|
2019-07-18T15:10:49
|
|
Reland "Vulkan: Use VK repos' internal BUILD.gn files"
This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6
There was a missing build dependence causing a build no-op
issue which has now been fixed in the upstream Vulkan Validation
Layer repo.
Primary workaround that need to be re-visted and fixed are:
1. Disabled validation layers on 32-bit Windows
2. Disabled validation layers on 32-bit Android
3. Disabled DebugUtils on Android, using DebugReport instead
4. Using custom VK Loader branch to avoid WDK dependence
Original change's description:
> Vulkan: Use VK repos' internal BUILD.gn files
>
> This retires custom BUILD.gn files for the Vulkan Headers, Tools,
> Validation-Layers, and Loader repos. They now have integrated BUILD.gn
> files so switched ANGLE to use those by default.
> Also Validation Layer, Loader, and Tools repos no longer uses codegen
> so this speeds up the build overall.
> Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer
> to VK_LAYER_KHRONOS_validation unified layer.
>
> This changes includes a temporary workaround to the Vulkan-Loader repo
> to remove its Window's build dependence on WDK. There are plans to
> remove that depenedence in Loader master, but until then we can use
> our custom branch workaround.
> It also includes a custom branch for validation layers that includes
> some build fixes for ANGLE.
> Finally, the layers were crashing on Android when attempting to use
> DebugUtils extension so forcing DebugReport on Android for now.
>
> Bug: angleproject:2449
> Bug: angleproject:3320
> Bug: angleproject:3852
> Bug: angleproject:3924
> Bug: angleproject:3925
> Bug: angleproject:3946
> Bug: chromium:997009
> Bug: chromium:997016
> Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
Bug: angleproject:2449, angleproject:3320, angleproject:3852
Change-Id: I373ada091a1329db5e304874079428d01ba21d52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778302
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
f10bf6bf
|
2019-09-26T10:27:18
|
|
Vulkan: Implement multi-threaded GL.
The main component of this change is to make vk::BufferHelper,
vk::ImageHelper and vk::SyncHelper use a common path. We introduce a
new "vk::SharedGarbage" helper class that stores small lists of garbage
from individual objects like an ImageHelper or BufferHelper. The
SharedGarbage is stored in the RendererVk with the ResourceUse of the
helper object. The ResourceUse tells RendererVk when it is safe to
destroy the GarbageObjects.
New "onGraphAccess" commands are added in a few places to enable the
common garbage collection path. A couple Context-only resources like
default attributes now are referenced where they were not before.
Also reorganizes some functions so we can add a few helpful ASSERTs
to our graph dependencies. Added "updateCurrentAccessNodes" for this.
Also adds a "RendererScoped" helper to replace many uses of
"ContextScoped".
The multithreading EGL tests mostly pass but have some remaining
flakiness so cannot yet be enabled.
Bug: angleproject:2464
Change-Id: Ia3e3ae8848d731abf3f21ebe04c33e381e130be0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1808444
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
71c1138d
|
2019-08-16T12:23:04
|
|
Vulkan: Emulate instanced attrib divisor
This sets instancedArrays[ANGLE|EXT] extenstions as always
supported regardless of underlying Vulkan HW's max vertex attrib
divisor.
Then detect instances where app sets a divisor that isn't supported
by hardware and emulate those cases. Emulations is accomplished by
copying the instanced attribs to a new buffer where each attrib is
present once per instance, using the attrib divisor value as a
factor to replicate the attribs, and then setting the actual divisor
value for the draw to "1".
Also, we only store 8 bits for the divisor used in the PSO, so this
code also handles emulation of the case where divisor is > 255.
This is passing all of the drawInstanced/Elements dEQP tests
where divisor has to be emulated.
Also enabled end2end InstancingTestES3 for Vulkan backend.
Bug: angleproject:2672
Change-Id: I9932f9eab49b16a19e8bbd35dacaf3b5a27a213f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1758689
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
a0159c03
|
2019-09-02T14:49:07
|
|
Vulkan: Implement basic geometry shader feature
Enable the default behavior of the geometry shader
Bug: angleproject:3571
Test: dEQP-GLES31.functional.geometry_shading.input.basic_primitive.points
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.lines
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_loop
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.line_strip
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangles
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_strip
dEQP-GLES31.functional.geometry_shading.input.basic_primitive.triangle_fan
Change-Id: I65708d19bbfe6a0ad8ca392a1d6b3609b1410ef4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1793753
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
33ffed01
|
2019-09-26T10:19:35
|
|
Vulkan: Clean up garbage APIs.
Instead of dumping resources to a context, we use the release APIs
consistently. Refactoring/cleanup change only. Should have very litte
impact on runtime behaviour.
Bug: angleproject:2464
Change-Id: I2dc7f8316c466f7ccfad50a7b792ba0ee7bc2e49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1804883
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
29f7916f
|
2019-09-25T14:37:35
|
|
Vulkan: Store current Serial in RendererVk.
This gives a stronger ordering on serials than if they're acquired by
the ContextVk. Part of the steps of implementing multithreaded GL on
Vulkan.
Implements a "globalFinish" method in RendererVk that is triggered on
ContextVk destruction. This helped fixed some racy object deletion
situations where the ContextVk could have queued work that uses deleted
objects. Flush all the Contexts before destruction to avoid these
hanging deleted objects.
Bug: angleproject:2464
Change-Id: I244e9bbf6cd47b272c7cbca45b0fb1eb46d626fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1791268
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
84a32193
|
2019-09-18T16:51:38
|
|
Vulkan: Disable Line Rasterization Emulation for Android
The latest Pixel drivers require that the GL line raserization emulation
is disabled to rasterize the lines correctly.
Bug: angleproject:2830
Test: dEQP-GLES2.functional.rasterization.primitives.line*
Test: dEQP-GLES2.functional.clipping.line.long_line_clip
Change-Id: I126715e61f44500c00efc7e81044c0a09001d3bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1812177
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
8be7a4c7
|
2019-09-19T12:48:31
|
|
Re-land "Vulkan: SwiftShader integration."
Re-land fixes Win7 configs and placement of the SwiftShader module for
ASAN/TSAN configs.
Adds a new EGL extension for picking SwiftShader when using the Vulkan
back-end. Also cleans up ICD enabling code RendererVk. Also includes a
change to a buffer size necessary to support SwiftShader's minimum
limits.
Bug: angleproject:3876
Bug: b/140251624
Change-Id: I5e16057ac4de07bbdbbd248542b1b9103133294f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1810065
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
db09eb68
|
2019-09-18T13:40:39
|
|
Increase the max fence wait time in debug builds
Also minor refactor to avoid duplicating the constant by having
both RendererVk and ContextVk retrieve the wait time via new
member function RendererVk::getMaxFenceWaitTimeNs().
BUG=angleproject:3915
Change-Id: I9a283a4e0f34a6a1f840c350dc667f4fc27f59e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1810066
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
db7a36f4
|
2019-09-17T00:22:32
|
|
Revert "Vulkan: SwiftShader integration."
This reverts commit 1224802c214d8f3d5b1f31a35d4461ada39b94c1.
Reason for revert: https://bugs.chromium.org/p/angleproject/issues/detail?id=3912
Original change's description:
> Vulkan: SwiftShader integration.
>
> Adds a new EGL extension for picking SwiftShader when using the Vulkan
> back-end. Also cleans up ICD enabling code RendererVk. Also includes a
> change to a buffer size necessary to support SwiftShader's minimum
> limits.
>
> 32-bit is currently left disabled to work around an issue on AMD Win7.
>
> Bug: angleproject:3876
> Bug: b/140251624
> Change-Id: I33c55d994801d6154caca0cad0a608c1e808d517
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776231
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jonahr@google.com,jmadill@chromium.org
Change-Id: Id7464250f6941b0228a6b2a9bd0349823727275b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:3876, b/140251624
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1808101
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
|
|
1224802c
|
2019-09-16T15:17:33
|
|
Vulkan: SwiftShader integration.
Adds a new EGL extension for picking SwiftShader when using the Vulkan
back-end. Also cleans up ICD enabling code RendererVk. Also includes a
change to a buffer size necessary to support SwiftShader's minimum
limits.
32-bit is currently left disabled to work around an issue on AMD Win7.
Bug: angleproject:3876
Bug: b/140251624
Change-Id: I33c55d994801d6154caca0cad0a608c1e808d517
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776231
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
050b124d
|
2019-06-30T03:26:18
|
|
Reland "Vulkan: Debug overlay"
This is a reland of e54d0f90d1a165404236fd7abd1b05ddd041a686
This was reverted due to a build failure as a result of a missing
virtual destructor in the widget base class.
Original change's description:
> Vulkan: Debug overlay
>
> A debug overlay system for the Vulkan backend designed with efficiency
> and runtime configurability in mind. Overlay widgets are of two
> fundamental types:
>
> - Text widgets: A single line of text with small, medium or large font.
> - Graph widgets: A bar graph of data.
>
> Built on these, various overlay widget types are defined that gather
> statistics. Five such types are defined with one widget per type as
> example:
>
> - Count: A widget that counts something. VulkanValidationMessageCount
> is an overlay widget of this type that shows the number of validation
> messages received from the validation layers.
> - Text: A generic text. VulkanLastValidationMessage is an overlay
> widget of this type that shows the last validation message.
> - PerSecond: A value that gets reset every second automatically. FPS is
> an overlay widget of this type that simply gets incremented on every
> swap().
> - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an
> overlay of this type. On every vkQueueSubmit, the number of nodes in
> the command graph is accumulated. On every present(), the value is
> taken as the number of nodes for the whole duration of the frame.
> - RunningHistogram: A histogram of last N values. Input values are in
> the [0, 1] range and they are ranked to N buckets for histogram
> calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay
> widget of this type. On vkQueueSubmit, the memory waste from command
> buffer pool allocations is recorded in the histogram.
>
> Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py
> processes to create an array of bits, which is processed at runtime to
> create the actual font image (an image with 3 layers).
>
> The overlay widget layout is defined in overlay_widgets.json which
> gen_overlay_widgets.py processes to generate an array of widgetss, each
> of its respective type, and sets their properties, such as color and
> bounding box. The json file allows widgets to align against other
> widgets as well as against the framebuffer edges.
>
> Two compute shaders are implemented to efficiently render the UI:
>
> - OverlayCull: This shader creates a bitset of Text and Graph widgets
> whose bounding boxes intersect a corresponding subgroup processed by
> OverlayDraw. This is done only when the enabled overlay widgets are
> changed (a feature that is not yet implemented) or the surface is
> resized.
> - OverlayDraw: Using the bitsets generated by OverlayCull, values that
> are uniform for each workgroup (set to be equal to hardware subgroup
> size), this shader loops over enabled widgets that can possibly
> intersect the pixel being processed and renders and blends in texts
> and graphs. This is done once per frame on present().
>
> Currently, to enable overlay widgets an environment variable is used.
> For example:
>
> $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste
> $ ./hello_triangle --use-angle=vulkan
>
> Possible future work:
>
> - On Android, add settings in developer options and enable widgets based
> on those.
> - Spawn a small server in ANGLE and write an application that sends
> enable/disable commands remotely.
> - Implement overlay for other backends.
>
> Bug: angleproject:3757
> Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:3757
Change-Id: I47915d88b37b6f882c686c2de13fca309a10b572
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1780897
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc58af47
|
2019-09-02T07:46:44
|
|
Revert "Vulkan: Debug overlay"
This reverts commit e54d0f90d1a165404236fd7abd1b05ddd041a686.
Reason for revert: causes compile failure on Linux CFI bot.
Sample build: https://ci.chromium.org/p/chromium/builders/ci/Linux%20CFI/14810
Sample log: https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8903575125463586160/+/steps/compile/0/stdout?format=raw
Original change's description:
> Vulkan: Debug overlay
>
> A debug overlay system for the Vulkan backend designed with efficiency
> and runtime configurability in mind. Overlay widgets are of two
> fundamental types:
>
> - Text widgets: A single line of text with small, medium or large font.
> - Graph widgets: A bar graph of data.
>
> Built on these, various overlay widget types are defined that gather
> statistics. Five such types are defined with one widget per type as
> example:
>
> - Count: A widget that counts something. VulkanValidationMessageCount
> is an overlay widget of this type that shows the number of validation
> messages received from the validation layers.
> - Text: A generic text. VulkanLastValidationMessage is an overlay
> widget of this type that shows the last validation message.
> - PerSecond: A value that gets reset every second automatically. FPS is
> an overlay widget of this type that simply gets incremented on every
> swap().
> - RunningGraph: A graph of last N values. VulkanCommandGraphSize is an
> overlay of this type. On every vkQueueSubmit, the number of nodes in
> the command graph is accumulated. On every present(), the value is
> taken as the number of nodes for the whole duration of the frame.
> - RunningHistogram: A histogram of last N values. Input values are in
> the [0, 1] range and they are ranked to N buckets for histogram
> calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay
> widget of this type. On vkQueueSubmit, the memory waste from command
> buffer pool allocations is recorded in the histogram.
>
> Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py
> processes to create an array of bits, which is processed at runtime to
> create the actual font image (an image with 3 layers).
>
> The overlay widget layout is defined in overlay_widgets.json which
> gen_overlay_widgets.py processes to generate an array of widgetss, each
> of its respective type, and sets their properties, such as color and
> bounding box. The json file allows widgets to align against other
> widgets as well as against the framebuffer edges.
>
> Two compute shaders are implemented to efficiently render the UI:
>
> - OverlayCull: This shader creates a bitset of Text and Graph widgets
> whose bounding boxes intersect a corresponding subgroup processed by
> OverlayDraw. This is done only when the enabled overlay widgets are
> changed (a feature that is not yet implemented) or the surface is
> resized.
> - OverlayDraw: Using the bitsets generated by OverlayCull, values that
> are uniform for each workgroup (set to be equal to hardware subgroup
> size), this shader loops over enabled widgets that can possibly
> intersect the pixel being processed and renders and blends in texts
> and graphs. This is done once per frame on present().
>
> Currently, to enable overlay widgets an environment variable is used.
> For example:
>
> $ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste
> $ ./hello_triangle --use-angle=vulkan
>
> Possible future work:
>
> - On Android, add settings in developer options and enable widgets based
> on those.
> - Spawn a small server in ANGLE and write an application that sends
> enable/disable commands remotely.
> - Implement overlay for other backends.
>
> Bug: angleproject:3757
> Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=geofflang@chromium.org,syoussefi@chromium.org,jmadill@chromium.org
Bug: angleproject:3757
Change-Id: Ib08e2e7b1a9449ca097673acb11655df5d2bbf31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1778862
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
e54d0f90
|
2019-06-30T03:26:18
|
|
Vulkan: Debug overlay
A debug overlay system for the Vulkan backend designed with efficiency
and runtime configurability in mind. Overlay widgets are of two
fundamental types:
- Text widgets: A single line of text with small, medium or large font.
- Graph widgets: A bar graph of data.
Built on these, various overlay widget types are defined that gather
statistics. Five such types are defined with one widget per type as
example:
- Count: A widget that counts something. VulkanValidationMessageCount
is an overlay widget of this type that shows the number of validation
messages received from the validation layers.
- Text: A generic text. VulkanLastValidationMessage is an overlay
widget of this type that shows the last validation message.
- PerSecond: A value that gets reset every second automatically. FPS is
an overlay widget of this type that simply gets incremented on every
swap().
- RunningGraph: A graph of last N values. VulkanCommandGraphSize is an
overlay of this type. On every vkQueueSubmit, the number of nodes in
the command graph is accumulated. On every present(), the value is
taken as the number of nodes for the whole duration of the frame.
- RunningHistogram: A histogram of last N values. Input values are in
the [0, 1] range and they are ranked to N buckets for histogram
calculation. VulkanSecondaryCommandBufferPoolWaste is an overlay
widget of this type. On vkQueueSubmit, the memory waste from command
buffer pool allocations is recorded in the histogram.
Overlay font is placed in libANGLE/overlay/ which gen_overlay_fonts.py
processes to create an array of bits, which is processed at runtime to
create the actual font image (an image with 3 layers).
The overlay widget layout is defined in overlay_widgets.json which
gen_overlay_widgets.py processes to generate an array of widgetss, each
of its respective type, and sets their properties, such as color and
bounding box. The json file allows widgets to align against other
widgets as well as against the framebuffer edges.
Two compute shaders are implemented to efficiently render the UI:
- OverlayCull: This shader creates a bitset of Text and Graph widgets
whose bounding boxes intersect a corresponding subgroup processed by
OverlayDraw. This is done only when the enabled overlay widgets are
changed (a feature that is not yet implemented) or the surface is
resized.
- OverlayDraw: Using the bitsets generated by OverlayCull, values that
are uniform for each workgroup (set to be equal to hardware subgroup
size), this shader loops over enabled widgets that can possibly
intersect the pixel being processed and renders and blends in texts
and graphs. This is done once per frame on present().
Currently, to enable overlay widgets an environment variable is used.
For example:
$ export ANGLE_OVERLAY=FPS:VulkanSecondaryCommandBufferPoolWaste
$ ./hello_triangle --use-angle=vulkan
Possible future work:
- On Android, add settings in developer options and enable widgets based
on those.
- Spawn a small server in ANGLE and write an application that sends
enable/disable commands remotely.
- Implement overlay for other backends.
Bug: angleproject:3757
Change-Id: If9c6974d1935c18f460ec569e79b41188bd7afcc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1729440
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c3f57231
|
2019-08-28T15:00:46
|
|
Vulkan: revamp present semaphore management
See doc/PresentSemaphores.md for details.
Bug: angleproject:3450
Bug: angleproject:3670
Change-Id: I52d5bd13a4af25f224d386c9584525c182af6f17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776880
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d2766ce7
|
2019-08-30T15:26:17
|
|
Vulkan: Generalize ICD decision for loader.
This will allow a more flexible introduction of other ICDs like
SwiftShader. Refactoring change only.
Bug: angleproject:3876
Change-Id: I6883225645e0f961f699366368bebccd9812aaec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1775463
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2b7e2acb
|
2019-08-30T13:26:37
|
|
Vulkan: Move loader defines into BUILD.gn.
We shouldn't need the extra loader defines config variable. The defines
we need should probably be able to be located in ANGLE entirely.
Bug: angleproject:3320
Bug: angleproject:3876
Change-Id: I78f449f44c1709b6d683930f9b9ea3d80016272e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1775462
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
aae21ef6
|
2019-08-29T21:56:06
|
|
Revert "Reland "Vulkan: Use VK repos' internal BUILD.gn files""
This reverts commit 0ad1559f3ae95efecaa209f990987d3ce4ebd150.
Reason for revert: linux-rel no-op build issue showing up in Chromium integration. Tracking in chromium:997016
Original change's description:
> Reland "Vulkan: Use VK repos' internal BUILD.gn files"
>
> This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6
>
> Original change's description:
> > Vulkan: Use VK repos' internal BUILD.gn files
> >
> > This retires custom BUILD.gn files for the Vulkan Headers, Tools,
> > Validation-Layers, and Loader repos. They now have integrated BUILD.gn
> > files so switched ANGLE to use those by default.
> > Also Validation Layer, Loader, and Tools repos no longer uses codegen
> > so this speeds up the build overall.
> > Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer
> > to VK_LAYER_KHRONOS_validation unified layer.
> >
> > This changes includes a temporary workaround to the Vulkan-Loader repo
> > to remove its Window's build dependence on WDK. There are plans to
> > remove that depenedence in Loader master, but until then we can use
> > our custom branch workaround.
> > It also includes a custom branch for validation layers that includes
> > some build fixes for ANGLE.
> > Finally, the layers were crashing on Android when attempting to use
> > DebugUtils extension so forcing DebugReport on Android for now.
> >
> > Bug: angleproject:2449
> > Bug: angleproject:3320
> > Bug: angleproject:3852
> > Bug: chromium:997009
> > Bug: chromium:997016
> > Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438
> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> > Reviewed-by: Jamie Madill <jmadill@chromium.org>
> > Commit-Queue: Tobin Ehlis <tobine@google.com>
>
> Bug: angleproject:2449, angleproject:3320, angleproject:3852
> Change-Id: I9597be99000083b135e19b6ee68d4ae222158e72
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769036
> Commit-Queue: Tobin Ehlis <tobine@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
TBR=tobine@google.com,syoussefi@chromium.org,jmadill@chromium.org
Change-Id: I88afdaff07e9f414f9de02f6d3651eaba9a5045f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2449, angleproject:3320, angleproject:3852
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1776920
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
0ad1559f
|
2019-07-18T15:10:49
|
|
Reland "Vulkan: Use VK repos' internal BUILD.gn files"
This is a reland of 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6
Original change's description:
> Vulkan: Use VK repos' internal BUILD.gn files
>
> This retires custom BUILD.gn files for the Vulkan Headers, Tools,
> Validation-Layers, and Loader repos. They now have integrated BUILD.gn
> files so switched ANGLE to use those by default.
> Also Validation Layer, Loader, and Tools repos no longer uses codegen
> so this speeds up the build overall.
> Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer
> to VK_LAYER_KHRONOS_validation unified layer.
>
> This changes includes a temporary workaround to the Vulkan-Loader repo
> to remove its Window's build dependence on WDK. There are plans to
> remove that depenedence in Loader master, but until then we can use
> our custom branch workaround.
> It also includes a custom branch for validation layers that includes
> some build fixes for ANGLE.
> Finally, the layers were crashing on Android when attempting to use
> DebugUtils extension so forcing DebugReport on Android for now.
>
> Bug: angleproject:2449
> Bug: angleproject:3320
> Bug: angleproject:3852
> Bug: chromium:997009
> Bug: chromium:997016
> Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
Bug: angleproject:2449, angleproject:3320, angleproject:3852
Change-Id: I9597be99000083b135e19b6ee68d4ae222158e72
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769036
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
886698bc
|
2019-08-27T16:48:07
|
|
Vulkan: Style cleanups to TextureVk.
Pass params by const & and use "CPU instead of "Cpu" naming. Also
prefer "ContextVk *contextVk" to "ContextVk *context".
Bug: angleproject:2464
Change-Id: I887de5b2e5494d14f0e9c7db269eb63744f2a3cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1771499
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1d5aaa6c
|
2019-08-06T11:20:13
|
|
Vulkan: support dynamic indices in array of arrays
Expands existing struct-sampler rewrite to flatten arrays of arrays.
This allows us to support dynamically-uniform array indexing, which is
core in ES 3.2.
Samplers inside (possibly nested) structs are broken apart as before,
and then if the type resulting from merging the array sizes of the field
and its containing structs is an array of array, the array is flattened.
Also adds an offset parameter to functions taking in arrays to account
for this translation.
As a result of outer array sizes leaking into function signatures,
functions taking arrays of different sizes are duplicated according to
how the function is invoked.
Bug: angleproject:3604
Change-Id: Ic9373fd12a38f19bd811eac92e281055a63c1901
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1744177
Commit-Queue: James Dong <dongja@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5f3c98de
|
2019-08-23T01:05:38
|
|
Revert "Vulkan: Use VK repos' internal BUILD.gn files"
This reverts commit 552f5fcb0d8fcc615856ce3b678190e1cbdd38e6.
Reason for revert: Causing flakiness in "confirm no-op" CQ step.
See issue for more details.
Bug: chromium:997016
Original change's description:
> Vulkan: Use VK repos' internal BUILD.gn files
>
> This retires custom BUILD.gn files for the Vulkan Headers, Tools,
> Validation-Layers, and Loader repos. They now have integrated BUILD.gn
> files so switched ANGLE to use those by default.
> Also Validation Layer, Loader, and Tools repos no longer uses codegen
> so this speeds up the build overall.
> Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer
> to VK_LAYER_KHRONOS_validation unified layer.
>
> This changes includes a temporary workaround to the Vulkan-Loader repo
> to remove its Window's build dependence on WDK. There are plans to
> remove that depenedence in Loader master, but until then we can use
> our custom branch workaround.
> It also includes a custom branch for validation layers that includes
> some build fixes for ANGLE.
> Finally, the layers were crashing on Android when attempting to use
> DebugUtils extension so forcing DebugReport on Android for now.
>
> Bug: angleproject:2449
> Bug: angleproject:3320
> Bug: angleproject:3852
> Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
TBR=ynovikov@chromium.org,tobine@google.com,syoussefi@chromium.org,jmadill@chromium.org
Change-Id: Iec97ba8cb5c38fa56bfd4c0afb0f7af8d68513ff
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2449, angleproject:3320, angleproject:3852
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1767363
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
552f5fcb
|
2019-07-18T15:10:49
|
|
Vulkan: Use VK repos' internal BUILD.gn files
This retires custom BUILD.gn files for the Vulkan Headers, Tools,
Validation-Layers, and Loader repos. They now have integrated BUILD.gn
files so switched ANGLE to use those by default.
Also Validation Layer, Loader, and Tools repos no longer uses codegen
so this speeds up the build overall.
Switched over from old VK_LAYER_LUNARG_standard_validation meta-layer
to VK_LAYER_KHRONOS_validation unified layer.
This changes includes a temporary workaround to the Vulkan-Loader repo
to remove its Window's build dependence on WDK. There are plans to
remove that depenedence in Loader master, but until then we can use
our custom branch workaround.
It also includes a custom branch for validation layers that includes
some build fixes for ANGLE.
Finally, the layers were crashing on Android when attempting to use
DebugUtils extension so forcing DebugReport on Android for now.
Bug: angleproject:2449
Bug: angleproject:3320
Bug: angleproject:3852
Change-Id: I48b36acefcc7f2bc930eb72d6fdbc87bca24f833
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610438
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
1d83e1e8
|
2019-08-21T09:00:33
|
|
Vulkan: Handle new validation errors
With updated validation layers Vulkan backend is hitting two new
errors. This CL fixes one and works around (WA) another.
Fixes issue where a Buffer used in vkCmdDispatchIndirect() did
not have VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT set so now setting
that usage bit for all buffers.
WA issue where invalid topologies enabled primitiveRestart so
ignoring that VUID initially until complete fix is implemented.
Bug: angleproject:3832
Change-Id: Ie3f681eaf9e2051c27bdf00a35dc50d8ad4a2528
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1763196
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
5a2553a7
|
2019-08-07T14:44:12
|
|
Vulkan: Emulate subgroup ops in seamful cubemap emulation
Where subgroup ops are not available, they are emulated as such:
Code with subgroup ops:
float lH = subgroupQuadSwapHorizontal(layer);
float lV = subgroupQuadSwapVertical(layer);
float lD = subgroupQuadSwapDiagonal(layer);
bool isHelperH = subgroupQuadSwapHorizontal(gl_HelperInvocation);
bool isHelperV = subgroupQuadSwapVertical(gl_HelperInvocation);
if (gl_HelperInvocation)
{
layer = !isHelperH ? lH : !isHelperV ? lV : lD;
}
Emulated code:
float nonHelperLayer = gl_HelperInvocation ? 0.0 : layer;
float lH = abs(dFdxFine(nonHelperLayer));
float lV = abs(dFdyFine(nonHelperLayer));
float lD = abs(dFdxFine(lV));
float isHelperDiffH = abs(dFdxFine(float(gl_HelperInvocation)));
bool isNonHelperH = isHelperDiffH > 0.5;
float isHelperDiffV = abs(dFdyFine(float(gl_HelperInvocation)));
bool isNonHelperV = isHelperDiffV > 0.5;
if (gl_HelperInvocation)
{
layer = isNonHelperH ? lH : isNonHelperV ? lV : lD;
}
Both paths are supported as on nvidia devices the emulated code
misbehaves. This change therefore effectively only enables seamful cube
map emulation on Android where subgroup operations are not supported.
Bug: angleproject:3243
Bug: angleproject:3732
Change-Id: I9664d9760756758748183eb121c626f176789f3a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1742222
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4346c8b1
|
2019-04-09T14:50:23
|
|
Vulkan: pipeline cache not populated as blob cache is not set
1. Use vkMergePipelineCaches to recreate pipeline cache after
blob cache callbacks are set after eglInititalize.
2. Use a more proper way to save the cache data to disk.
Bug: angleproject:3318
Change-Id: Ied1fb572813198b51e02ed9629cbf34e2d9159b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1683807
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7e48c9eb
|
2019-08-06T17:17:19
|
|
Add explicit integer casts
WebKit uses the -Wshorten-64-to-32 flag which warns on these cases.
Bug: 3439
Change-Id: I8c1de60da0f173ca2036e2120e79b857f5f2775f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1740866
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
93560ef5
|
2019-07-25T16:13:02
|
|
Vulkan: Seamful cube map emulation
In GLSL, a cube texture is sampled with one of textureCube* functions.
This function takes a 3D coordinate which is a vector from the center of
the cube and identifies a direction to sample from. GLES2.0 has the
following table that translates this 3D coordinate (Rx, Ry, Rz) to a
face and ST coordinates within that face. This table can be found in
Section 3.7.5 (Cube Map Texture Selection).
A compiler pass is implemented in ANGLE that replaces samplerCube
declarations with a sampler2DArray. The textureCube* functions are
replaced with the corresponding texture* functions with the translated
coordinates according to that table.
Gradients provided to textureCubeGrad are translated using the same
formulae, which is not precise but the spec specifies this projection to
be implementation dependent.
Helper invocations enabled through WQM (whole quad mode) cause a
nuisance in that the extrapolated varyings used as coordinates in a
textureCube call could have a different major axis (and therefore face)
from the non-helper invocations that lie within the geometry.
subgroupQuadSwap* operations are used in conjunction with
gl_HelperInvocation to make sure the helper threads calculate texture
UVs in the same face as the non-helper invocations.
Bug: angleproject:3300
Bug: angleproject:3240
Bug: angleproject:3243
Bug: angleproject:3732
Change-Id: I0cb6a9b1f2e1e6a392b5baca1c7118ed1c502ccf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1715977
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ed5f7e4d
|
2019-06-07T15:54:00
|
|
Vulkan: Use a persistent CommandPool
Previously transient CommandPool is used for CommandBuffer allocation,
it is created and destroyed per frame. However, profiling found that
CommandPool destroy is very inefficient. So this commit removed the
previous logic and use two preallocated resetable CommandPools (One for
Primary and One for Secondary)
Bug: angleproject:3508
Change-Id: I8b36f2738b082811c3177935c61b10e01acb6947
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1648667
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c13ca2af
|
2019-07-17T15:46:29
|
|
Vulkan: Allow more than one atomic counter buffer binding
dEQP assumes there are more than one atomic counter buffers available.
This is technically not a requirement by the standard, but nevertheless
could be what applications expect as well.
This change adds support for multiple atomic counter buffer bindings.
This is done by declaring an array of storage buffers for the atomic
counter buffers (instead of declaring only one) and passing the
(binding, offset) pair around to functions instead of just the offset.
The atomic counter is found by indexing `binding` into the storage
buffer array first before indexing `offset` into its `uint[]`.
ProgramVk's default uniform collection is also fixed not to include
atomic counter uniforms.
A remaining issue is that atomic counter buffer offsets don't have
alignment requirements in GLES, but Vulkan does for storage buffers.
Similar to emulated transform feedback buffer offsets, these should be
sent to the shader through uniform values. This will be done in a
follow up change.
Bug: angleproject:3566
Change-Id: I5600225c24c38f1a8ecf5c64388073055733197d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1707931
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9addf0cb
|
2019-07-23T11:45:24
|
|
Vulkan: Enable Line Rasterization Emulation
Android requires the same line rasterization for Vulkan, so this CL will
enabled that workaround.
Bug: angleproject:2830
Test: dEQP-GLES2.functional.rasterization.primitives.line*
Change-Id: Ic28dd2e54c5cb9b29f8592952b2c0f29a5f97fd5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1715207
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
35f02850
|
2019-07-23T17:20:25
|
|
Vulkan: Reduce getMaxConformantESVersion() to 2.0
We are currently returning a 3.0 context for Vulkan backends (issue
3425). However, we aren't quite 3.0 conformant yet, so this bug
will drop that back down to 2.0 in getMaxConformantESVersion().
Bug: angleproject:3734
Test: dEQP
Change-Id: I2c5a6ee0ddb3bd52fdc92fdc9b12cf3c6d8e0510
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1716244
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
020abb8b
|
2019-07-24T11:33:49
|
|
Vulkan: invalidate translation buffers for SSBOs
Translation buffers weren't being marked dirty after running a compute
shader in which they are bound as SSBOs.
This change invalidates all SSBOs after a draw or compute call.
Bug: angleproject:3739
Change-Id: I66b56df7e619b55afc7e3da6b5613b6d050e06bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1717144
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: James Dong <dongja@google.com>
|
|
b82d8633
|
2019-07-15T11:23:08
|
|
Vulkan: Atomic counter buffer support
Vulkan doesn't treat atomic counters especially, and they are emulated
with atomic access to storage buffers.
A single atomic counter buffer binding per pipeline is supported. All
the atomic counters identify an offset within this buffer. The shader
is modified to include a storage buffer definition with
`uint counters[];` as the only field.
A compiler pass replaces atomic counter definitions with variables that
hold the corresponding offset parameter, as well as changing atomic_uint
types to just uint (as the offset). Where an atomic counter variable is
used, it is replaced with the offset variable (plus the array index, if
array). At the same time, built-in `atomicCounter*` functions are
replaced with a corresponding `atomic*` function and
`memoryBarrierAtomicCounter` is replaced with `memoryBarrierBuffer`.
Bug: angleproject:3566
Change-Id: Iefb3d47de6a5cb3072bfa0cb94a46ac6a886d369
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1704635
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
610f2388
|
2019-07-18T16:28:49
|
|
Return backwards compatible context versions in Vulkan, GL and D3D11.
This allows us to pass some dEQP GLES 2.0 tests that require using an ES 3.0
context and matches native driver behaviour of returning a higher-than-
requested context version when it's backwards compatible.
BUG=angleproject:3425
BUG=angleproject:3300
BUG=angleproject:3715
BUG=angleproject:3243
BUG=angleproject:3240
BUG=angleproject:3716
Change-Id: I03dfd56deb6191c3363808717e0eea6fdcf5f3ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1709111
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
6a02f06d
|
2019-07-18T16:27:14
|
|
Implement EGL_ANGLE_create_context_backwards_compatible
This extension allows the user to specify if ANGLE should create a
context of the exact requested version or a higher version context that
is backwards compatible.
BUG=angleproject:3425
Change-Id: I7d0b75cdd7e34a2fc888aa238e1eeb67af82ae0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1601560
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
29fba5e0
|
2019-07-04T17:08:41
|
|
Vulkan: Prepare for variable-stage pipelines
Compute (single-stage pipeline) is upcoming, but this change prepares
GlslangWrapper to handle any number of stages (mostly). Additionally,
this change binds each resource to each stage based on whether it's
active, so that we don't hit the per-stage limit of resources by binding
every resource to every stage.
Bug: angleproject:3633
Bug: angleproject:3562
Change-Id: Ifebf691482846e0371c6e314f514226a4cfee258
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1689330
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a1754dc8
|
2019-06-26T13:36:43
|
|
Vulkan: Recycle vkFence
This CL introduces a Recycler to reuse unreferenced vk::Fence, reducing
CPU time spent on vk::Fence init&destroy. Save around 15% of CPU time
for most glmark2 tests.
Bug: angleproject:3556
Change-Id: Ice5054305321c466c5be3bc368d04091f074729c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1679239
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
1cde0eab
|
2019-07-03T10:58:32
|
|
Vulkan: Add storage buffer support
The storage buffers are placed in the same descriptor set as uniform
buffers. Some refactoring is done to reuse code that handles UBOs to
handle SSBOs as well. A good number of tests still fail as they test
SSBOs in conjunction with compute shaders.
Bug: angleproject:3561
Change-Id: Ia33c1f68e6f6402c746f5919ede87b2c308cf81c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687126
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
7d6923de
|
2019-07-01T03:22:42
|
|
Revert "Vulkan: pipeline cache not populated as blob cache is not set"
This reverts commit 134d6eed2a7d1f148a42c78c8e5da3cfc2df288e.
Reason for revert: glmark2 is unable to start on Android-Q when using ANGLE as the driver.
Original change's description:
> Vulkan: pipeline cache not populated as blob cache is not set
>
> 1. Use vkMergePipelineCaches in eglSetBlobCacheFuncsANDROID as
> blob cache callbacks are set after eglInititalize.
> 2. Use a more proper way to save the cache data to disk.
>
> Bug: angleproject:3318
> Change-Id: Ieb5d10ab93e7afb2aab4446b387d7f36c878a686
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1559671
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=syoussefi@chromium.org,jmadill@chromium.org,fei.yang@arm.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:3318
Change-Id: I51e49bf103142e80b2c9028b3af6d3bb58cf6348
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1683820
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f116aa9c
|
2019-06-17T15:08:11
|
|
Vulkan: detect swapchain recreation passively
Currently ANGLE vulkan query current window size every frame to detect
whether a swapchain recreation is needed, however profiling shows some
bottle neck on window size query on X11. So here removing the per frame
window size query and only depend the result of vkAcquireImage and
VkQueuePresent to detect a need for swapchain recreation.
Bug: angleproject:3535
Change-Id: I4ddf70b973d78dfcd5f8fab28e29e802edad1b2d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1662759
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
134d6eed
|
2019-04-09T14:50:23
|
|
Vulkan: pipeline cache not populated as blob cache is not set
1. Use vkMergePipelineCaches in eglSetBlobCacheFuncsANDROID as
blob cache callbacks are set after eglInititalize.
2. Use a more proper way to save the cache data to disk.
Bug: angleproject:3318
Change-Id: Ieb5d10ab93e7afb2aab4446b387d7f36c878a686
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1559671
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0bfa5504
|
2019-06-03T10:40:10
|
|
Vulkan: Emulate Transform Feedback with vertex shader output
In ES 3.0 and 3.1, only non-indexed GL_POINTS, GL_LINES and GL_TRIANGLES
is supported for transform feedback. Without tessellation and geometry
shaders, we can calculate the exact location where each vertex transform
output should be written on the CPU, and have each vertex shader
invocation write its data separately to the appropriate location in the
buffer.
This depends on the vertexPipelineStoresAndAtomics Vulkan feature.
Bug: angleproject:3205
Change-Id: I68ccbb80aece597cf20c557a0aee842360fea593
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1645678
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f0ea83a4
|
2019-06-26T10:17:26
|
|
Vulkan: Initial support for ES3.1
Bug: angleproject:3520
Bug: angleproject:3521
Change-Id: I49d67cae0bba3e147c7a83c10e09fe1ee5ff0824
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678400
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d5cef305
|
2019-06-19T14:21:33
|
|
Vulkan: Add more trace events.
This captures a bit more information about where the call time goes
during a flush. It can show at least on desktop NVIDIA that we spend a
fair amount of time in vkQueuePresentKHR.
Bug: angleproject:3117
Change-Id: I2d0195b9338bcac80e8dd8cfb550402271f286f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650787
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3ea463bf
|
2019-06-19T14:21:33
|
|
Move event tracer back into common.
Requires that we update the TRACE_EVENT macros to accept a platform as
an argument. The refactor isn't complete. In order to finish we'd need
to ensure we have the Display's PlatformMethods available at all sites.
Unblocks adding trace events directly in the perf tests.
Bug: angleproject:1892
Bug: angleproject:3117
Change-Id: Iee0ca086ccfe23acab3fc186fb042f018711a94c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1664794
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fce1e2d1
|
2019-06-04T15:02:08
|
|
Extend eglGetPlatformDisplay to allow feature overrides.
Add EGL_FEATURE_OVERRIDES_ENABLED_ANGLE and
EGL_FEATURE_OVERRIDES_DISABLED_ANGLE to submit lists of strings naming
the features that should be overridden (either enabled or disabled) on
display creation.
Bug: angleproject:1621
Change-Id: I4bb75c5dbab0e3b701a72069c38f8c60ecfffad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646595
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b407e1a0
|
2019-06-03T17:15:51
|
|
Vulkan: implement ES3 blit
Augment the resolve shaders to be able to stretch and blit too. The
UtilsVk resolve function is accordingly expanded to include blit.
Bug: angleproject:3200
Change-Id: I30b172a5e388089735ab494f55cbfdc2781a8bf9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635753
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f2a1c384
|
2019-05-21T16:32:49
|
|
Vulkan: Implement multisampled framebuffers
Simultaneously implements ANGLE_framebuffer_multisample and ES3
multisampled framebuffers.
Additionally, implements ES3 framebuffer blitting where multisampled
framebuffers are involved.
Bug: angleproject:3203
Bug: angleproject:3204
Bug: angleproject:3200
Change-Id: I5694a30f71168e807688a9568e3742b81d907918
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1622667
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|