|
4375d6c7
|
2021-06-18T23:51:23
|
|
Vulkan: Support multiview queries
When using queries with multiview, Vulkan specifies that N queries are
actually produced (N being the number of views) which must be summed by
the application.
Bug: angleproject:6048
Change-Id: I5ea615536f1a357806b7ea8093280b9122f1d66a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2971562
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
977a28f3
|
2021-06-22T12:30:07
|
|
No-op glGenerateMipmap on zero-sized textures
The spec says:
> Otherwise, ... if any dimension is zero, all mipmap levels are left
> unchanged. This is not an error.
Bug: chromium:1220250
Change-Id: I45e007c1f8e9b80f405d3d096eb896a7246f7c8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2979853
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5b314268
|
2021-06-15T17:37:45
|
|
Vulkan: Support OVR_multiview and OVR_multiview2
Multiview is supported in Vulkan simply by specifying the number of
views in the render pass, and creating the appropriate image views. A
number of changes to the way image views and render targets are stored
are made to support those that don't cover the entire range of layers.
One particular detail that is not implemented in this change is the use
of queries in combination with multiview. Vulkan specifies that N
queries are actually produced (N being the number of views) which must
be summed by the application, but this is not currently done.
Bug: angleproject:6048
Change-Id: I1d4a9894c232d3a93d7a97c9fa0eedc334e57469
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2967625
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9bad7a19
|
2021-06-15T23:39:52
|
|
Vulkan: Unpack RenderPassDesc
Upcoming multiview support needs to add 2~3 more bits to this struct,
but this struct is already fully packed. As the combination with
emulated multisampled render to texture is not planned, some bits used
for MSRTT can be aliased with multiview. However, that makes the
packing of this struct even more unwieldy.
Since only tens of render passes are expected per frame, increasing the
size of the render pass cache key should not have a dramatic effect.
Bug: angleproject:6048
Change-Id: I5c9a0d155f23a37e2787b38525d3ce721b54ec1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2966218
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b6adeb2f
|
2021-06-21T11:11:30
|
|
Vulkan: Use pipeline statistics query to emulate primitives generated
The VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT query produces
the same result as the GL primitives generated query. One caveat is
that in combination with rasterizer discard this query may not work.
This is emulated by disabling rasterizer discard when this query is
active and applying an empty scissor instead.
When VK_EXT_primitives_generated_query is released and supported, a
similar issue with rasterizer discard persists so this change will
facilitate using that extension as well.
Bug: angleproject:5430
Change-Id: Id45b6f058c5cb6837e04aa64b1efde28c104e4cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2976181
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
64ce506d
|
2021-06-18T14:48:29
|
|
Vulkan: SPIR-V Gen: Support most non-texture/image built-ins
Most GLSL built-ins map directly to some SPIR-V operation. texture*()
and image*() built-ins are not implemented as well as a handful of other
built-ins that require special-handling.
Bug: angleproject:4889
Change-Id: I72abfb4692c3d66a3c8be43ce44ba6808efe6255
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2971646
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
96dd515a
|
2021-03-31T14:21:16
|
|
Update glColorspace(EGL_KHR_gl_colorspace) enable logic
1. Enable glColorspace if VK_EXT_swapchain_colorspace is
supported, remove dependency on VK_KHR_image_format_list.
2. Enable VK_KHR_image_format_list support on Mali GPU.
3. Fix PbufferTest.ClearAndBindTexImageSrgbSkipDecode
test tolerance issue.
Bug: angleproject:2514
Bug: angleproject:5281
Change-Id: I2ed54a14afc7c3aee5a5980bd300ab052ebab3d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2793852
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3706f9eb
|
2021-06-10T18:45:15
|
|
Vulkan: Fix AGI hierarchy crash for noop'd clears/queries
The ASSERT in ContextVk::endEventLogForClearOrQuery() was wrong.
Certain glClear*, glBeginQuery*, and glEndQuery* commands may exit
early (e.g. noop). When this happens, mQueryEventType will be set to
NotInQueryCmd. In such cases, return without trying to finish a
non-started debug-util-marker hierarchy.
Bug: b/191489405
Change-Id: If40ed00fdc6e420ae6a11c2aeaced19e5aa45a5f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2973342
Reviewed-by: Trevor David Black <vantablack@google.com>
Reviewed-by: Mark Lobodzinski <mark@lunarg.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
851fbedb
|
2021-06-10T21:27:01
|
|
Vulkan: Switch viewport and scissor to dynamic state
Heavily based on http://crrev/c/1316888
Some apps are creating a large number of viewport combinations and
are running out of graphics memory. This CL drops their graphics
pipeline use from tens of thousands to tens.
Performance testing shows little impact to application traces.
Bug: b/190026813
Bug: angleproject:3143
Change-Id: Ib7415be1128f8fedae4a7ca72e067b2815201223
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2954925
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
24155b13
|
2021-06-17T18:09:29
|
|
Vulkan: Free DynamicBuffer buffers after dip in allocation size
In a pattern like this:
- allocate 100 bytes
- allocate 200 bytes
- allocate 50 bytes
- allocate 100000000 bytes
- allocate 100 bytes
- allocate 200 bytes
- allocate 50 bytes
The DynamicBuffer class switches to making 100MB allocations even if
that allocation was a one-off. A small future allocation would then tie
up 100MB in memory for future allocations. Another 100MB is also left
tied up in the free list.
With this change, if an allocation is made that's less than a quarter of
the DynamicBuffer's current allocation size, it's taken as a sign that
the previous large allocation was a one-off and the size is moved back
to the DynamicBuffer's original initial size.
Bug: b/187757166
Change-Id: I0c6f00eec7c81298f9dc41a41cc308510ce76623
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2971004
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
69562546
|
2021-06-11T19:12:11
|
|
CL: Refactor info structs and fix conformance bug
- Remove variable name prefix from Info structs to be more consistent
with other ANGLE structs.
- Fix CL object validation check with magics, since the Mesa solution
doesn't work without RTTI.
- Add support for some extensions required by OpenCL 1.1 and for some
optional extensions.
- Fix more conformance bugs.
Bug: angleproject:6015
Change-Id: I41b1c45d95059a9994f5dc78bf9b74476cc6f2d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2956349
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b77a6c25
|
2021-06-16T11:01:14
|
|
Vulkan: Avoid using VK_WHOLE_SIZE when using dynamic offsets
Binding descriptor sets that use VK_WHOLE_SIZE with a dynamic offset
results in the VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979
validation error.
Updated the updateDefaultUniformsDescriptorSet function to use the
uniform's size instead of using VK_WHOLE_SIZE.
Bug: angleproject:5924
Tests: dEQP-GLES31.functional.shaders.multisample_interpolation.*
SimpleStateChangeTest.UniformUpdateTest*Vulkan
UniformTestES3.MatrixUniformUpload*Vulkan
Change-Id: Ie4633af61d59a9401f599d336a5b9040cdf18004
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950309
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4fbb6f43
|
2021-06-14T18:20:06
|
|
Vulkan: Fix accessing index buffer with uninitialized memory
This was discovered by Clusterfuzz on MacOS. The issue was
that is index buffer of a draw indexed call was missing,
causing SwiftShader to access uninitialized memory, leading
to the ASAN crash. The missing index buffer was caused by
DIRTY_BIT_INDEX_BUFFER not being set. This was in turn
caused by ContextVk::flushDirtyGraphicsRenderPass() not
setting dirty bits not included in the dirtyBitMask,
despite needing to be set for future processing.
Bug: chromium:1183068
Bug: chromium:1190493
Change-Id: I65b398d8737b3df5fd51a03a2c8074a774a94a81
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2961690
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ebf75698
|
2021-06-10T18:55:04
|
|
Vulkan: Fix AGI clear hierarchy bug for clear commands
This approach properly handles outside-render-pass clears.
Bug: b/190622922
Change-Id: Ia4a9d6ec13d7da8c4a445af1127e82c03f37e8b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2951960
Reviewed-by: Mark Lobodzinski <mark@lunarg.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
1fcbf77c
|
2021-06-10T16:02:31
|
|
Vulkan: Fix AGI hierarchy for query commands
Treat glBeginQuery* and glEndQuery* commands the same as glDraw*
commands, generating a hierarchy. This results in vkCmdBeginQuery and
vkCmdEndQuery commands being nested under gl*Query*, instead of being
a peer of glDraw* commands.
This change necessitated plumbing some of the existing "end" path to
return angle::Result.
Bug: b/190512191
Change-Id: I898d3fdd9b4b7d86e76dfae2ffc5d6f7316a55ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950926
Reviewed-by: Mark Lobodzinski <mark@lunarg.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
31641b8e
|
2021-06-05T02:17:47
|
|
Declare specialization constants in the AST
A new qualifier (EvqSpecConst) is added so that specialization constants
can be declared in tree.
This enables TVariable references to specialization constants to be
validated, which were in fact invalid as every reference declared a new
variable. That is fixed.
Bug: angleproject:4889
Change-Id: I1711e41cbc5a1260843d2d004d3568bdae11e963
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2941451
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
82654e5d
|
2021-06-06T15:46:53
|
|
CL: Add program build commands
Add program build commands to front end and pass-through back end.
Bug: angleproject:6015
Change-Id: I1175646d35ff050796b718d7f0e269520292b319
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940839
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
c670917c
|
2021-06-02T14:43:03
|
|
[Fuchsia] Cleanup vulkan_fuchsia_ext.h
Removed defintions of fuchsia-specific vulkan types from
vulkan_fuchsia_ext.h . Instead, the types provided by vulkan_fuchsia.h
are used now.
Also re-enabled vulkan validation on Fuchsia.
Bug: chromium:1215736
Change-Id: I795347b7fb61d90033749533cefd42cf180730fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2934718
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
69f2fb00
|
2021-03-08T10:49:31
|
|
Vulkan: Expose OES_geometry_shader extension
Modify the symbol table generation script to accept a list
of supported extensions. This allows for the EXT and
OES versions of the geometry shader extension to be exposed.
Test: angle_deqp_khr_gles31_tests --deqp-case=*geometry_shader*
Bug: angleproject:3571
Change-Id: Ia7127a03dbd3fce78957f0505d3ce0c9bab6cb15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2765011
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4bafc503
|
2021-06-01T10:59:17
|
|
Vulkan: Fix AGI hierarchy for clear commands
Treat mid-render-pass glClear* commands the same as glDraw*
commands, generating a hierarchy. This results in
vkCmdClearAttachment commands being nested under glClear, instead of
being a peer of glDraw* commands.
Bug: b/183547523
Change-Id: Ibc6900b0485fd174d79c8fe6c94ea17dbefa520b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2941364
Reviewed-by: Mark Lobodzinski <mark@lunarg.com>
Reviewed-by: Mike Schuchardt <mikes@lunarg.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
0a6c6c00
|
2021-06-01T10:59:17
|
|
Vulkan: Submit Dispatch commands outside renderpass
Compute dispatch commands must be submitted outside a renderpass,
but their associated debug event markers were being submitted
on the renderpass commandbuffer. The dispatch debug event markers are
now handled separately from those for draw calls and are now submitted
on the correct commandbuffer.
Failure manifested in malformed AGI traces for Ragnarok M:
Eternal Love
Bug: b/181611786
Change-Id: I768eeccd76be38818fc99d6d56f5899290c8fc5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2930818
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
26a54260
|
2021-05-26T16:53:29
|
|
Reland "Vulkan: Handle immutable sampler state change in TextureVk"
This is a reland of 349c08300e08bc809c448d62e0ad969ecb17c047
Skip YUV tests on Pixel2
Original change's description:
> Vulkan: Handle immutable sampler state change in TextureVk
>
> Transitioning between sources in RGB and YUV colorspace or between
> YUV formats with different layout should force the recreation of
> pipeline layout and the invalidation of texture's sampler.
>
> Only textures that are EGLImage targets are handled for now.
>
> Bug: b/155487768
> Bug: angleproject:5033
> Bug: angleproject:5773
> Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan
> Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Bug: b/155487768
Bug: angleproject:5033
Bug: angleproject:5773
Change-Id: Ie3791bc6f6e9b53eb0db23759a14fdc038c8f5b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2939354
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
03d8e7c9
|
2021-06-04T21:22:52
|
|
Revert "Vulkan: Handle immutable sampler state change in TextureVk"
This reverts commit 349c08300e08bc809c448d62e0ad969ecb17c047.
Reason for revert: anglebug.com/6028
Original change's description:
> Vulkan: Handle immutable sampler state change in TextureVk
>
> Transitioning between sources in RGB and YUV colorspace or between
> YUV formats with different layout should force the recreation of
> pipeline layout and the invalidation of texture's sampler.
>
> Only textures that are EGLImage targets are handled for now.
>
> Bug: b/155487768
> Bug: angleproject:5033
> Bug: angleproject:5773
> Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan
> Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Bug: b/155487768
Bug: angleproject:5033
Bug: angleproject:5773
Bug: angleproject:6028
Change-Id: Ib8b3b54ff61f26910df2af4a6b894b3d2d5906bb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2941547
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
|
|
349c0830
|
2021-05-26T16:53:29
|
|
Vulkan: Handle immutable sampler state change in TextureVk
Transitioning between sources in RGB and YUV colorspace or between
YUV formats with different layout should force the recreation of
pipeline layout and the invalidation of texture's sampler.
Only textures that are EGLImage targets are handled for now.
Bug: b/155487768
Bug: angleproject:5033
Bug: angleproject:5773
Test: ImageTest.SourceAHBTarget2DExternalCycleThrough*Vulkan
Change-Id: I02d5763e7f89b910313e14b57bfc5403113dfbb2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2924415
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
683064b7
|
2021-06-02T02:59:55
|
|
Vulkan: Fix missing operand list in OpExecutionMode parser & builder
Bug: angleproject:4889
Change-Id: Ie864031caeddfcf5202044b0f9c197b3883ceaf7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2934782
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
152450f8
|
2021-06-02T15:38:35
|
|
Fix ContextVk::handleNoopDrawEvent() for when no cmd buffer
ContextVk::handleNoopDrawEvent() was created to handle no-op
glDraw*'s. However, it assumed/assert'd a valid
mRenderPassCommandBuffer. That is not always the case.
Fix this by having handleDirtyEventLogImpl() check for a valid command
buffer.
Bug: b/189967673
Bug: b/184888395
Change-Id: Ice7c5da842a6f41f27c24af8e858147d01be86bc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2935756
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
bcb678a5
|
2021-05-27T16:50:55
|
|
Vulkan: Fix deferred clears vs 3D textures
Two bugs are fixed in this change.
One is that framebuffer attachments to 3D textures should not attempt to
defer clears. The clear staged for the 3D texture applies to all
slices, not just the slice the framebuffer is attached to (and that
would get cleared through deferred clears).
Secondly, when clearing an attachment to a 3D texture, the clear must be
applied immediately through a render pass loadOp to affect only the
slice that's attached. This was already handled for layered
framebuffers where the clear was applied immediately if the 3D texture
render target had more layers than the framebuffer. The condition for
this is generalized to check whether the 3D texture has more slices
(regardless of whether the render target is layered or not).
Test is based on one written by Austin Eng <enga@chromium.org>
Bug: angleproject:5967
Change-Id: I43cf5fc24673323eda8390021641e2238be6e375
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2923785
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
baca10b7
|
2021-05-29T16:26:57
|
|
CL: Remove object cache and fix multi-threading
All CL front end objects used to be cached to be able to determine
if an object has been created by the front end to check its validity.
The validity is now checked with the existence of an intrinsic value
(the dispatch table pointer), which is consistent with the patterns
found in Mesa and clvk (though clvk uses a magic value).
This allows the removal of all cached objects.
The cached objects were stored with std::unique_ptr. These are now
gone and all remaining pointers are now custom intrinsic reference
count pointers.
Also remove global lock which causes deadlocks, e.g. when CL API
is called from a separate thread to unlock a blocking call with
a user event. Most of the front end is constant and already
thread-safe. The ref count is also thread-safe now (atomic).
A few remaining locks will follow.
Without the global lock it was now possible to make the API
reentrant, and to remove the workaround with the Khronos ICD
loader to skip ANGLE's OpenCL library.
Bug: angleproject:6001
Change-Id: I7d3b52db9011a02cb7ea9ebdeb6e22c4c702ef5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2927395
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
076974a9
|
2021-05-28T11:44:54
|
|
CL: event creation for front end & passthrough
Add event object to back end and implement creation and info query.
Bug: angleproject:6001
Change-Id: Id4951b726b66afa289fafe1a716a7cfdb6f5826d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2925477
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9459456b
|
2021-05-27T13:43:41
|
|
CL: kernel creation for front end & passthrough
Add kernel object to back end and implement creation and info query.
Bug: angleproject:6001
Change-Id: I6e3fdd2b35d7e73ed56144dc938bf21436d3559f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2922150
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
51ab3dc3
|
2021-05-25T16:54:11
|
|
CL: Improve validation readablity
Improve validation readablity by introducing a bit field class
and by changing how the CL error code is returned.
Bug: angleproject:6001
Change-Id: I51deb745454e5281de725481edef85eb30be28c7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2919690
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
b6bd039c
|
2020-10-06T13:34:53
|
|
Vulkan: Fine-grained depth stencil layout transition barrier
Gfxbench Manhattan uses depth attachment as texture in the same render
pass, which creates a feedback loop. The layout we are using for this
has kAllShadersPipelineStageFlags even though it only used by fragment
shader. This creates an unnecessary vertex/fragment dependency that
hurts performance on some mobile GPUs. This CL split
DepthStencilReadOnly to DSAttachmentReadAndFragmentShaderRead,
DSAttachmentReadAndAllShadersRead, and DepthStencilAttachmentReadOnly,
so that if it is used by fragment shader, we only barrier against
fragment stage. If not used by any shader, we don't block any shader
stages. To make names consistent, this CL also renames
DepthStencilAttachmentAndFragmentShaderRead to
DSAttachmentWriteAndFragmentShaderRead, renames
DepthStencilAttachmentAndAllShadersRead to
DSAttachmentWriteAndAllShadersRead.
Bug: b/169891513
Change-Id: Iede497e8af028861f9166a32d122f26dc7aa864a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2453599
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
5e631c5f
|
2021-05-20T11:21:18
|
|
Vulkan: Disable shadowBuffers feature
For PixelUnpack, if the feature is enabled, it always create a shadow
CPU mapped memory. Then when mapBuffer is called, it let user write to
the shadow memory. At unmapBuffer time, it memcpy the shadow buffer data
to context's staging buffer and then issue a vkCmdCopyBuffer from
context staging buffer to the PixelUnpack buffer. This involves too
many data copies. The proper way to do it is simply make sure to create
the buffer as CPU map-able and let user directly write to it. If we find
cases that CPU waiting for GPU to finish is causing performance issues,
there are two ways to improve/fix it: 1)Add event at end of each
renderpass or FBO so that we know if GPU access is finished or not
without have to wait for entire frame to finish rendering. 2) Create
multiple buffers and ping-pong between them, at least there will be no
VkCmdCopyBuffer call involved like shadow buffers do. But we will leave
that to future time when we find such need.
Bug: angleproject:5986
Change-Id: Ib8300e46e779d20533c1f7f81624de0ce003788b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2909758
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d151af7b
|
2021-05-20T10:52:46
|
|
Vulkan: Improve generateMipmapsWithBlit barrier usage
ImageHelper::generateMipmapsWithBlit() implements glGenerateMipmap using
vkCmdBlitImage. For each level it changes layout to
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL and issue a blit. In order to keep
all mipmap levels' layout consistent, it issues a vkCmdPipelineBarrier
call for the the very last mipmap level to change it to
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL as well. This creates an
unnecessary barrier for the next operation, that now it sees a barrier
against transfer stage. This CL changes all levels to
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL so that the whole image will
have consistent layout. After glGenerateMipmap call, the next reasonable
usage is use it in fragment shader, so the barrier is not wasted.
Bug: angleproject:5986
Change-Id: I3690ae8417d97bc504fcf036d016f289e6370526
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2909757
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
1aa88398
|
2021-05-24T14:19:05
|
|
CL: program object creation for front end and pass-through
Add program object to back end and implement creation and info query.
Bug: angleproject:6001
Change-Id: If94db8ab8b491e1ac21c767347cabb6f4f3b3cba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912465
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
e3dd7161
|
2021-05-24T12:47:38
|
|
CL: sampler object creation for front end and pass-through
Add sampler object to back end and implement creation and info query.
Bug: angleproject:6001
Change-Id: If5b7d09564d773d6aeda7612728e19bfec7f6155
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912806
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
efd8da4d
|
2021-05-21T15:39:11
|
|
CL: buffer object creation for front end and pass-through
Add Buffer object to front end and Memory object to back end.
Implement creation of buffer and sub-buffer objects.
Make cl::Object destructor virtual to support destruction of Buffer.
Cache more Device info for Buffer validation. Add missing and move
existing version checks into validation.
Bug: angleproject:5956
Change-Id: Iea7665be5f6bdd8469e81f5fe4935a9fb0e03436
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912677
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
81db1a46
|
2021-05-20T13:45:26
|
|
Vulkan: TextureVk inherits a few attributes from ImageHelper
Cache VkImageCreateFlags in ImageHelper. This allows texture target
siblings to inherit a few VkImage create attributes thus avoiding
image respecification in certain code paths.
Bug: angleproject:2514
Bug: angleproject:5281
Test: PbufferTest.ClearAndBindTexImageSrgbSkipDecode*Vulkan
Change-Id: Ic7397fabdce185264e06488355ca47f809338519
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2910473
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fad9053f
|
2021-05-20T15:52:38
|
|
infra: Add isolated script tests to Pixel 4.
This includes angle_perftests and angle_restricted_trace_gold_tests.
Bug: angleproject:5941
Change-Id: I6f24d2c2752086ae6f7abba26880070c4a4f0472
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911034
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
e697e379
|
2021-03-10T23:59:45
|
|
Vulkan: Allow certain usecases to have non-zero stride
When glVertexAttribPointer is called with a type parameter that doesn't
match the vertex attribute binding's type in shader, the vulkan backend
used to force the stride to 0. This is acceptable since this usecase is
unspecified in spec.
To allow for better app compatibility, introduce a new extension that
requires normal glVertexAttribPointer functionality to be maintained if
the mismatched vertex attribute type is a mismatched integer type sign.
This change also modifies the VkFormat used when a mismatch in
signedness occurs to use a VkFormat with the same component width as
the type parameter.
Bug: angleproject:5762
Test: VertexAttributeTestES3.DrawWithRelaxedVertexAttributeType*
Test: VertexAttributeTestES3.DrawWithMismatchedComponentCount*
Change-Id: I7e5281500afc3d77f0775821447cabfad3ff2d66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2765012
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dd312cc6
|
2021-05-21T08:49:48
|
|
Reland "Vulkan: Add support for EXT_texture_border_clamp"
This is a reland of 4b92e089c01e94730fe26c4c743d76d6c935088d
Initializes mPadding to 0 in SamplerDesc::update
Original change's description:
> Vulkan: Add support for EXT_texture_border_clamp
> Add support for GL_EXT_texture_border_clamp. This is implemented by
> using VK_EXT_custom_border_color.
>
> Bug: angleproject:3577
> Test: dEQP-GLES31.functional.texture.border_clamp*
> Change-Id: Ie9fa1eb5dd03b997b5ae182787641a53080a9e51
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2830192
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Bug: angleproject:3577
Change-Id: I8684242c4bce6e1a006dbe926defaa495fcc2282
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911571
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
44fabb7b
|
2021-05-21T00:51:06
|
|
Revert "Vulkan: Add support for EXT_texture_border_clamp"
This reverts commit 4b92e089c01e94730fe26c4c743d76d6c935088d.
Reason for revert: breaks "Linux MSan Tests" bot
https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20MSan%20Tests/28489/overview
Original change's description:
> Vulkan: Add support for EXT_texture_border_clamp
>
> Add support for GL_EXT_texture_border_clamp. This is implemented by
> using VK_EXT_custom_border_color.
>
> Bug: angleproject:3577
> Test: dEQP-GLES31.functional.texture.border_clamp*
> Change-Id: Ie9fa1eb5dd03b997b5ae182787641a53080a9e51
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2830192
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Bug: angleproject:3577, angleproject:5996
Change-Id: I6b62f1a4a43fcfe2d0df2c73de24db83606ce430
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2911533
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
2add8d9f
|
2021-05-19T18:47:40
|
|
Don't use VK_EXT_debug_utils with non-Android Vulkan < 1.1.91
Due to a bug in Vulkan Loader < 1.1.91
https://github.com/KhronosGroup/Vulkan-Loader/pull/95
Bug: chromium:1205999
Change-Id: Icdedc2e80abe3c5578e811759f66ddbb71abb2ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2907095
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
c37b1ef8
|
2021-05-13T14:31:59
|
|
Balance debuglabel begin/end pairs for skipped drawcalls
Some drawcalls may be no-op'd due to shader issues or having
zero instance or element counts. In these cases, the ANGLE markers
used for AGI will become imbalanced as it is the drawcalls that
trigger the 'begin' marker. This patch ensures that the dirty-bit
draw event handler is called for no-op'd drawcalls to keep the
AGI commandTree in balance.
Bug: b/184888395
Change-Id: I1041d2f06fb313934365340c35e458bc5a66ba64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2895330
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
10a8182c
|
2021-05-19T21:00:05
|
|
CL: Fix querying default device if non exists
Bug: angleproject:5992
Change-Id: Ie43f905fbb9cf41b0f6f88b2db27ebe9de9c37e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2906993
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
6622d2b4
|
2021-05-18T21:26:39
|
|
CL: command queues for front end and pass-through
Bug: angleproject:5956
Change-Id: I6d9d4e4e7dfc5402408e3b002e66e4eae752967d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2903091
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
9bc837f6
|
2021-04-07T15:24:12
|
|
Vulkan: Generate SPIR-V directly from the translator; Part 1
This is the first change in a series to generate SPIR-V directly from
the translator's AST, instead of the generating text GLSL and feeding it
to glslang.
This change implements the majority of the work needed to map AST types
to SPIR-V types, and declare types and interface variables in SPIR-V.
Additionally, it lays the infrastructure to conditionally enabling this
path in end2end tests.
No tests are currently enabled as the change doesn't actually generate
code for function bodies yet.
Bug: angleproject:4889
Change-Id: Iacb28b6907fd48c50e4cc5a0e7ad72f6eed241d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889603
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
88156d26
|
2021-05-18T23:55:32
|
|
Revert "[Vulkan] Add DisplayVkNull"
This reverts commit cbbaf76b758fb6a37175795b1f424549d535fbdc.
Reason for revert: Suspecting this breaks the fuchsia_x64 bot WebGL
tests.
Ex:
https://chromium-review.googlesource.com/c/chromium/src/+/2904812
Original change's description:
> [Vulkan] Add DisplayVkNull
>
> Currently all DisplayVk implementations depend on VK_KHR_swapchain and
> VK_KHR_surface extensions. When running Chromium on Fuchsia these
> extensions are never used (content is shown on the screen using
> ImagePipe API without dependency on swapchain). ANGLE still depended
> on these extensions for DisplayVkFuchsia.
> This CL adds DisplayVkNull, which allows to run ANGLE without dependency
> on swapchain. It's usable only offscreen and cannot present content on
> a surface.
>
> Bug: chromium:1203879
> Change-Id: I4d1307060967ffa68877c4300ea4d5590eeb2152
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861313
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bug: chromium:1203879
Change-Id: I6701ffff48fcb925f387e63b356d2d5cf360ea7e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2904183
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
eaa6961d
|
2021-05-17T18:56:53
|
|
Revert "Vulkan: Disable BufferVk suballocation"
This reverts commit 76181384075c6eb0a5788bf1b732a1e05f6d73bc.
Reason for revert: Bug exposed by this is fixed in https://chromium-review.googlesource.com/c/angle/angle/+/2896168
Original change's description:
> Vulkan: Disable BufferVk suballocation
>
> There are still unresolved bugs.
>
> Bug: angleproject:5719
> Bug: chromium:1209197
> Change-Id: I6a971c421d0ae266404d1ecbf8741a9747a4e809
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897545
> Reviewed-by: Cody Northrop <cnorthrop@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Tim Van Patten <timvp@google.com>
Bug: angleproject:5719
Bug: chromium:1209197
Change-Id: I5c24b5f6476eab98ed5a7b90b3d1796ffc7ca106
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2896169
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4b92e089
|
2021-05-12T09:20:24
|
|
Vulkan: Add support for EXT_texture_border_clamp
Add support for GL_EXT_texture_border_clamp. This is implemented by
using VK_EXT_custom_border_color.
Bug: angleproject:3577
Test: dEQP-GLES31.functional.texture.border_clamp*
Change-Id: Ie9fa1eb5dd03b997b5ae182787641a53080a9e51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2830192
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
c2fd3388
|
2021-05-15T22:28:27
|
|
CL: Add front end object references to back end objects
Add front end object references to back end objects, which requires
a significant amount of refactoring, because the back end objects
have to be constructed during the construction of the front end
objects, so that the references can be passed to the back end objects,
which then can be passed to the front end member initialization.
That would have been easier with inheritance than with PImpl.
Bug: angleproject:5904
Change-Id: Ib58e6a698e76987bdd63cd8088f923424d6c622b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897249
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
835bcb1e
|
2021-05-08T13:24:58
|
|
Vulkan: Support GL_EXT_texture_sRGB_RG8
For completeness, added mappings of R8_SRGB and R8G8_SRGB
to OpenGL and Metal.
Bug: angleproject:4932
Change-Id: Ic8e44e3a94c114e985f6965fcd43fbcb8071432d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880661
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cf3af29a
|
2021-05-14T16:49:36
|
|
Vulkan: Optimize respecifying an image
When recreating a texture image to change a usage flag or the base/max
levels, this change directly places the levels of the previous image as
updates to the new image. This is instead of copying the image to a
temp one and staging that.
Bug: angleproject:4835
Change-Id: Ibc210b9ff0e8d11cba10b1cd9ab262c8f706cea5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2898417
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
8bd3d7d5
|
2021-05-17T13:45:33
|
|
Vulkan: Fix a bug releasing DynamicBuffer-owned buffer
There was one instance of BufferVk releasing a buffer it had allocated
from a DynamicBuffer. This shouldn't have happened as the DynamicBuffer
owns the buffers.
Bug: angleproject:5720
Change-Id: I435512f4bb099130126bf3efb48a238fcd9f3ddb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2896168
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9c262ad0
|
2021-05-14T12:26:48
|
|
Vulkan: Cleanup texture image respecify
Prior to this change, respecifying a texture image due to usage, base or
max level changes incurred a copy of every level and layer to a
temporary buffer which was then staged as an update to the new image.
This code was somewhat messy (for example with respect to depth/stencil
images), error prone (e.g. previously had bugs with compressed textures)
and disallowed further optimizations such as in anglebug.com/4835.
This change does the following:
- ImageHelper::SubresourceUpdate now takes ref-counted images, instead
of image pointers. This allows the same image to be staged for
multiple updates.
- Respecifying an image is still done through a copy, but to an
identical (temp) image instead of buffer, and each level of the image
is staged as an update.
* Further optimization is to stage the old image itself directly as
updates to the new image
Bug: angleproject:4835
Change-Id: I4a3ef2d616c9ab459ff65f918b0fb6d9a2161b73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897537
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9e8fea5b
|
2021-05-13T07:04:05
|
|
Vulkan: Fix desc set cache bug with xfb offset
Prior to this change, the transform feedback buffer offset was not
stored in the descriptor set key, so if the offset changed, stale
descriptor sets could be used.
Bug: angleproject:5963
Change-Id: I3dec4ab9fa82092a65e9a75bdd19c5f2cf49521c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2894513
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ce7bc0c8
|
2021-05-14T17:00:46
|
|
Vulkan: Fix AGI hierarchy
The GLES hierarchy of debug-util markers given to AGI was wrong for
several games. The problem is that glDrawBuffer* was treated as a
draw call, instead of as the state-setting call that it is.
Bug: b/184888395
Change-Id: I6911bd3aae42b5f29b3f40466a615c614651ca8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2898472
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
76181384
|
2021-05-14T15:31:24
|
|
Vulkan: Disable BufferVk suballocation
There are still unresolved bugs.
Bug: angleproject:5719
Bug: chromium:1209197
Change-Id: I6a971c421d0ae266404d1ecbf8741a9747a4e809
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897545
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
cbbaf76b
|
2021-04-29T16:09:09
|
|
[Vulkan] Add DisplayVkNull
Currently all DisplayVk implementations depend on VK_KHR_swapchain and
VK_KHR_surface extensions. When running Chromium on Fuchsia these
extensions are never used (content is shown on the screen using
ImagePipe API without dependency on swapchain). ANGLE still depended
on these extensions for DisplayVkFuchsia.
This CL adds DisplayVkNull, which allows to run ANGLE without dependency
on swapchain. It's usable only offscreen and cannot present content on
a surface.
Bug: chromium:1203879
Change-Id: I4d1307060967ffa68877c4300ea4d5590eeb2152
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861313
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
09dad082
|
2021-05-07T17:28:15
|
|
Vulkan: Add feature flag to flush at framebuffer boundary
Testing shows most app traces seeing performance improved on ARM GPU
when we flush at FBO boundary instead of one submit per frame. This
likely due to more frequent submission means less chance of GPU
starvation. This also helps ANGLE to detect GPU finish at finer grain
since the queue serial is per submission. Finer grain detection of
object completion means memory gets recycled quicker and mapBufferRange
able to hit fast code path more often. With this CL, manhattan 3.1
offscreen score also score improves 7%. This may also helps onscreen
performance if frame time is on the edge of 16ms by submit FBO rendering
earlier instead of been blocked by vkAcquireNextImage.
Bug: b/187993625
Bug: angleproject:5295
Change-Id: I2946a7159231d36019ace89805a69ac8e906ce94
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2888709
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
48b835cf
|
2021-05-09T22:47:00
|
|
CL: Implement context for front end and passthrough
Bug: angleproject:5904
Change-Id: I23b764bba87be3a51a1b5b44b13968fc572efde9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2883773
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
b0c217ba
|
2021-05-13T13:56:27
|
|
Disable GL_EXT_shader_framebuffer_fetch_non_coherent on Arm/QCOM
Thie is a shorter-term work-around to games not checking extensions
properly.
Bug: b/177320565
Bug: b/186643966
Bug: b/186783762
Change-Id: Ic348396db1d081925cd9747cdd9406f5929313b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2894407
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
bccb0d56
|
2021-05-11T13:53:05
|
|
Add messages for framebuffer completeness errors.
This also creates a common code path for all framebuffer
completeness errors (FramebufferStatus::Incomplete) which
helps for adding a debug breakpoint.
Bug: angleproject:5949
Change-Id: Ib102dbf86e020777e56c6dc6b78dda8ebdba2127
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2888110
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e354ff1a
|
2021-03-05T04:07:21
|
|
Vulkan: Allow DynamicBuffer suballocation in BufferVk
When allocations are made from DynamicBuffer, they suballocate from a
possibly larger BufferHelper. In BufferVk, the offset of the
suballocation was discarded, which limited the use of DynamicBuffer to a
pool of small buffers.
This change applies any such offset that may arise from suballocations
everywhere, and makes BufferVk use a larger buffer size when the
GL_DYNAMIC_* buffer usage hints are provided.
Bug: angleproject:5719
Change-Id: I3df3317f7acff1b1b06a5e3e2bb707616a7d0512
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2738650
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b300dc52
|
2021-05-09T00:35:24
|
|
CL: device partitioning for front end and passthrough
Partitioning is the creation of sub-devices. Also add reference
counting for CL objects, which is needed now for sub-devices.
Also fix CL print format strings, since cl_ulong is actually
always 64 bit and not unsigned long.
Bug: angleproject:5904
Change-Id: I006699fad2f953ce312bca87c9b6362b5d77a18a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880665
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b0d39ba2
|
2021-05-12T16:06:15
|
|
Add array bounds checks for WebGL shaders
WebGL shaders may contain OOB array accesses which in turn
cause undefined behavior, which may result in security
issues. This was detected as an UNKNOWN READ by UBSAN while
testing with SwANGLE.
Bug: chromium:1189110
Change-Id: I00f56e771ed0c675abb465fc3a3dc9d62ea8ed51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2892286
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
|
|
859ed396
|
2021-05-11T16:58:55
|
|
Follow up on Vulkan headers update to 1.2.177
Removing duplicate definitions in ANGLE.
Bug: angleproject:5905
Change-Id: Ie62ad39a1ebc0d8b0d2c005723f461bc7309eade
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2889831
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
93aff937
|
2021-05-08T16:46:22
|
|
Refactor CL platform object
Move GetPlatformInfo implementation from stubs to cl::Platform,
because stubs are meant to be small.
Also move CLPlatformImpl::Info instance to cl::Platform as it is
more efficient to be accessed from there, and more consistent with
cl::Device.
Bug: angleproject:5904
Change-Id: I4c0ba6390467d6ef357e38a5ef08f54b0a88d423
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880663
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
e369a282
|
2021-05-08T14:08:28
|
|
Implement CL device object for front end and passthrough
Bug: angleproject:5904
Change-Id: I17f6d10ed59c62fe9126d29b7de2c127c5d0039a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880662
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: John Plate <jplate@google.com>
|
|
46a139ad
|
2021-05-06T11:20:51
|
|
Vulkan: set DS layout before using it in the endRenderPass
In CommandBufferHelper::endRenderPass(), we are checking depth stencil's
initialLayout to change storeOp to None if the layout is read only. But
the layout was set after that check, which essentially voids the
optimization. This CL moves the finalizeDepthStencilImageLayout() call
before the layout is used.
This CL also moves the depth stencil loadOp/storeOp to a new function
finalizeDepthStencilLoadStoreOp(). When depthImage gets deleted before
renderpass ends, we could also apply the same load/store optimization
just like we did at endRenderPass() time.
Bug: b/187425444
Change-Id: I89814274352f09cbf1f7b58a91bbaf131b983fb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2877933
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
84d22197
|
2021-04-26T17:11:27
|
|
Vulkan: Add device local fallback in findCompatibleMemoryIndex(...)
When finding a compatible memory index for an external buffer,
we need to have a fallback path that requires just the
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT property.
Bug: angleproject:5909
Change-Id: Id3faffb3e357be2e5e6f5fce9e64f0f2889d199a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2862561
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
7828506a
|
2021-04-06T23:42:16
|
|
Vulkan: Cleanup buffer format fallbacks
- Fallbacks for formats that have required vertex attribute support are
removed.
- Fallbacks are changed to ones with smaller sizes
- A bug is fixed where CopyNativeVertexData wasn't initializing the
alpha channel appropriately, which was not exercised due to fallback
to 32-bit float formats.
Bug: b/184163871
Change-Id: Icd9afa49d94c65545d1f3fcf521881726d64529d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2809441
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2d5df9d9
|
2021-05-01T12:50:55
|
|
Vulkan: Don't assume host visibility for external buffers
When importing external buffers, Vulkan ICDs could choose to
import the memory into a memoryType that doesn't support the
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT property. Account for this
possibility.
Bug: angleproject:5073
Bug: angleproject:5909
Change-Id: Ied063b38fa48d0c8508c4aaca9214cc526f393ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2783669
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cc3e7b5d
|
2021-04-26T14:26:29
|
|
Vulkan: Handle GL_MAP_PERSISTENT_BIT_EXT for external buffer
When user specifies GL_MAP_PERSISTENT_BIT_EXT bit for an external
buffer but we are unable to import it into a memoryType that supports
host visibility, error out with GL_INVALID_OPERATION error.
Bug: angleproject:5073
Bug: angleproject:5909
Change-Id: I03e5477266dfb705bfb0a1bce5ca003049ef4c7a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2862560
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc0c8d18
|
2021-04-27T16:58:50
|
|
Vulkan: Honor mapRangeImpl and unmapImpl abstraction
All BufferVk methods need to honor the abstraction provided by
mapRangeImpl and unmapImpl. Do not map BufferVk::mBuffer directly,
this is needed for when we support device local buffers that
cannot be CPU mapped.
Bug: angleproject:5909
Change-Id: I520e5cc0994560a3784b8978e349550211dc2cde
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2862559
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
dfe208f1
|
2021-04-28T18:26:00
|
|
Add loader for CL pass-through back end
Bug: angleproject:5904
Change-Id: If4960f3150f6bbc85a30f0f6ac5c9e668e6ff756
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2864022
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
99beb97a
|
2021-05-03T16:54:11
|
|
Vulkan: Fix MAX_VERTEX_OUTPUT_COMPONENTS limit
gl_Position is excepted from contributing to MAX_VARYING_VECTORS, which
is taken into account when calculating this limit based on Vulkan limits
(which don't have such an exception). This exception was mistakenly
also being applied to other limits such as MAX_VERTEX_OUTPUT_COMPONENTS.
Bug: angleproject:5916
Change-Id: I394761efa02d3093741d2bff21023daf997e5e69
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2869145
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
23ff18f9
|
2021-04-30T16:45:04
|
|
Roll vulkan-deps from 42d8716d0294 to c5559fe406e3 (24 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/42d8716d0294..c5559fe406e3
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/18eef33bd7..56b17b2f2d
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/c624d5387c..72a2ec4c1b
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/22b82872b4..8ec9f456e6
* vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/074fa3055c..3f437c4a94
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/d0f1abe22e..5dcea8a449
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/eb3d67bd17..4ee5f2a8be
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/f6b4a3dea4..7ab4afe505
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC jonahr@google.com,ynovikov@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: angleproject:5905
Tbr: jonahr@google.com,ynovikov@google.com
Change-Id: I462413910900b8dc38b3e88b78d9ff2e10b103b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2863562
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a4588e33
|
2021-04-29T14:24:20
|
|
Vulkan: Disable logMemoryReportStats if driver extension not exist
logMemoryReportCallbacks and logMemoryReportCallbacks features are
useful for memory debugging. But they rely on
VK_EXT_device_memory_report extension. Right now if this extension is
not there and you enable the log, you still see the logs but everything
is all zero. This CL will disable the feature and print out warning
message if the extension is not supported.
Bug: None
Change-Id: I478ae0ac7ba1ee43245a9fd8a3f1d9907f5d833c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861310
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
54e99d36
|
2021-04-23T13:02:43
|
|
Vulkan: Cleanup garbage when destroying EGL images
SurfaceFlinger will optimistically create EGL images just in case it
does need them in the future, since creating them can be slow and
waiting until they're necessary can cause jank on 90hz+ devices.
However, since the images are never actually used, ANGLE's garbage is
never cleaned up so vkDestroyImage() and the memory is never freed. This
can lead to exhausting the device's memory when many EGL images are
allocated. For example, when running the CTS test
CtsBiometricsTestCases.
This CL adds a call to always cleanup the renderer's garbage when an EGL
image is destroyed via eglDestroyImageKHR(), since we can't know if a
draw will ever be performed in the future (which would normally cleanup
the garbage).
Bug: b/184388756
Test: atest CtsBiometricsTestCases
Change-Id: I104c05c7be44f1e57123ac7eed23effaa982837a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2848131
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jason Macnak <natsu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
9c66461c
|
2021-04-29T11:47:16
|
|
Suppress VUID-VkImageViewCreateInfo-pNext-01585 temporarily
Vulkan validation failures are happening on ComputeShaderTest on
Linux and Windows with AMD. Suppress for now while the issue is
investigated
Bug: angleproject:5912
Change-Id: If89f7c85bb311a68d6cab85e397112b4178e34d7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2860044
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ccc0fbaa
|
2021-03-24T17:56:38
|
|
Vulkan: Related fixes for buffer descriptor set cache.
Includes some stats counter gathering and a few related refactors and
cleanups. Also includes a new overlay widget.
Bug: angleproject:5736
Change-Id: Ida8d2cd815c5b598c6a442dd9bbfdf51e9c05180
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2785431
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
61288549
|
2021-04-27T17:42:21
|
|
Vulkan: Turn on cubemap arrays for Qualcomm
The feature works on Pixel 3 and later, so only disable it on Pixel 2.
Bug: angleproject:5143
Change-Id: I824fc9ea71cb612fd99e23b7f37a1a3c278d92aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2855218
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
16a919b1
|
2021-04-27T11:36:11
|
|
Add stubs for CL platform layer back ends
Bug: angleproject:5904
Change-Id: If23c7f76013a17c3c67c13194566438035beb3d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2853582
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
be7049d7
|
2021-04-20T10:03:33
|
|
Vulkan: Redesign buffer descriptor set cache key.
Instead of writing the bitset masks, iterate up until the last active
buffer. Write zeros instead of skipping spaces. This is a bit simpler
to implement and also fixes a bug where empty buffers could cause us
to write invalid handles.
Bug: angleproject:5736
Change-Id: I785ef18ef5ae45109ec7d6e0b079b79a9984a1f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2837848
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
cd4a63f5
|
2021-04-26T11:52:02
|
|
Vulkan: Fix ASSERT in CreateRenderPass2
RenderPass2 was used for when a depth/stencil attachment is needed, or
the VK_EXT_multisampled_render_to_single_sampled extension. The logic
that decided this was "has D/S resolve || has MSRTSS extension", but the
function itself asserted that the render pass is using MSRTSS if not D/S
resolve.
This caused an assertion failure on platforms where MSRTSS is present,
but a non-MSRTSS render pass is used.
Bug: chromium:1201455
Change-Id: Iefd26a071303c703a322d946f82474f85f5bf767
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2849180
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
84b31c03
|
2021-04-25T08:30:14
|
|
Vulkan: Fix bug in VkImageFormatListCreateInfoKHR
On some vendors VVL throws the following error, snippet only -
[ VUID-VkImageViewCreateInfo-pNext-01585 ] Validation Error
...
image was created with a VkImageFormatListCreateInfo in pNext of vkImageCreateInfo,
but none of the formats match the VkImageViewCreateInfo::format
...
The Vulkan spec states: If a VkImageFormatListCreateInfo structure was included in
the pNext chain of the VkImageCreateInfo structure used when creating image and
VkImageFormatListCreateInfo::viewFormatCount is not zero then format must be one of
the formats in VkImageFormatListCreateInfo::pViewFormats.
It looks like VkImageFormatListCreateInfoKHR::pViewFormats needs
to contain all formats including the format of the VkImage itself.
Bug: angleproject:5281
Change-Id: I93c6900d99791ef4f9f116cb114f068e0a318bf4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2849566
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
d824908f
|
2021-04-23T16:31:44
|
|
Increase kMaxExtensionNames
https://github.com/KhronosGroup/Vulkan-Tools/pull/502 adds new
extensions, so 200 is no longer enough.
Bumping up to 400.
Bug: chromium:1201987
Change-Id: Icbad7637649c2236a8c46e577c1c0bd0dbccd633
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2848487
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f2b47418
|
2021-04-22T18:32:37
|
|
Align BPTC format names in angle::FormatID
Use the same naming convention as other similar formats.
Bug: angleproject:5731
Change-Id: I187881f4bc4691a0963502ed41f42ab0ebf4171c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2846824
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
ccd984ff
|
2021-04-08T12:06:57
|
|
Reland "Add a Vulkan feature to compress float32 vertex formats."
This reverts commit 8ace36f8c15877264fb58af7b54baad635899dca.
Original change's description:
> Revert "Add a Vulkan feature to compress float32 vertex formats."
>
> Bug: b/167404532
> Bug: b/161716126
> Change-Id: I95157a006d5c1fd2d3c0c2c2be37fa0403c07f93
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510011
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: b/167404532
Bug: b/161716126
Change-Id: Ic6811fe3a7124e6eb1efe7c72a1a03a120217753
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815260
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
e167d453
|
2021-04-21T14:14:33
|
|
Vulkan: Allow logging with VVL and/or AGI debug utils to be used
A recent change allowed logging API commands on Android to be used
with Vulkan Validation Layers (VVL). That broke debug utils for AGI
(i.e. when the ANGLE-built VVL is not being used). This allows both
use cases to be supported.
Bug: b/183133198
Change-Id: Ide83ed63fad99d0eca97998365276a1ef365a4e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2842325
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
718022e8
|
2021-04-16T20:50:34
|
|
Reland "Revert "Vulkan: Suppress draw-time push constant VVL warnings. ""
This is a reland of b027dfeb83d028ae72ed1957ba81e6c5dc3baffa
Original change's description:
> Revert "Vulkan: Suppress draw-time push constant VVL warnings.
> "
>
> This reverts commit f34b40dab0487bbabc37645918bed87048107e14.
>
> Reason for revert: VVL bug is fixed.
>
> Original change's description:
> > Vulkan: Suppress draw-time push constant VVL warnings.
> >
> >
> >
> > VUID-vkCmdDraw-None-02698
> >
> > VUID-vkCmdDrawIndexed-None-02698
> >
> > VUID-vkCmdDrawIndirect-None-02698
> >
> > VUID-vkCmdDrawIndirectCount-None-02698
> >
> > VUID-vkCmdDrawIndexedIndirect-None-02698
> >
> > VUID-vkCmdDrawIndexedIndirectCount-None-02698
> >
> > VUID-vkCmdDispatch-None-02698
> >
> >
> >
> > Bug: angleproject:5821
> > Change-Id: Ic8ca6178ce50b409ac8d256848654f43f91fae8e
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808854
> > Reviewed-by: Jamie Madill <jmadill@chromium.org>
> > Commit-Queue: Jamie Madill <jmadill@chromium.org>
>
> Bug: angleproject:5821
> Change-Id: I771e81a46893f2875605e472273f1388587e042e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831997
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:5821
Change-Id: I56ccb80eb76c3cedca2a40b8cc0223a879ab1edf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2842309
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
95935176
|
2021-03-26T17:38:21
|
|
Handle the compression of big pipeline cache.
Big pipeline cache will cost much time to compress. Regarding the
perfomance, handle the compression of big pipeline cache in this way:
1)Return when the pipeline cache data is larger than 10M.
2)Use worker thread to complete compression.
Bug: angleproject:4722
Change-Id: I62eb69d8c46729261f0502af01450ec301c258f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2788169
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b574643e
|
2021-04-19T12:47:05
|
|
D3D11: Skip blits if there is no intersection of dest areas
Blit11 would clip the destination rectangle with the destination size
but ignore the result. gl::ClipRectangle returns false when the
rectangles do not intersect at all, indicating the blit can be skipped.
This could lead to an out-of-bounds write to the GPU memory for the
destination texture.
Mark ClipRectangle as nodiscard to prevent future issues.
Bug: chromium:1199402
Change-Id: I260e82d0917b8aa7e7887f2c9f7ed4b1a03ba785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836786
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
39d8dde8
|
2021-04-19T15:02:02
|
|
Revert "Revert "Vulkan: Suppress draw-time push constant VVL warnings."
This reverts commit b027dfeb83d028ae72ed1957ba81e6c5dc3baffa.
Reason for revert: Breaking win-trace-rel b/c of missing VVL roll.
Original change's description:
> Revert "Vulkan: Suppress draw-time push constant VVL warnings.
> "
>
> This reverts commit f34b40dab0487bbabc37645918bed87048107e14.
>
> Reason for revert: VVL bug is fixed.
>
> Original change's description:
> > Vulkan: Suppress draw-time push constant VVL warnings.
> >
> >
> >
> > VUID-vkCmdDraw-None-02698
> >
> > VUID-vkCmdDrawIndexed-None-02698
> >
> > VUID-vkCmdDrawIndirect-None-02698
> >
> > VUID-vkCmdDrawIndirectCount-None-02698
> >
> > VUID-vkCmdDrawIndexedIndirect-None-02698
> >
> > VUID-vkCmdDrawIndexedIndirectCount-None-02698
> >
> > VUID-vkCmdDispatch-None-02698
> >
> >
> >
> > Bug: angleproject:5821
> > Change-Id: Ic8ca6178ce50b409ac8d256848654f43f91fae8e
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808854
> > Reviewed-by: Jamie Madill <jmadill@chromium.org>
> > Commit-Queue: Jamie Madill <jmadill@chromium.org>
>
> Bug: angleproject:5821
> Change-Id: I771e81a46893f2875605e472273f1388587e042e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831997
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:5821
Change-Id: If9f80d052736e40c4c6d3e9a1cd629205901ba49
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836285
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b027dfeb
|
2021-04-16T20:50:34
|
|
Revert "Vulkan: Suppress draw-time push constant VVL warnings.
"
This reverts commit f34b40dab0487bbabc37645918bed87048107e14.
Reason for revert: VVL bug is fixed.
Original change's description:
> Vulkan: Suppress draw-time push constant VVL warnings.
>
>
>
> VUID-vkCmdDraw-None-02698
>
> VUID-vkCmdDrawIndexed-None-02698
>
> VUID-vkCmdDrawIndirect-None-02698
>
> VUID-vkCmdDrawIndirectCount-None-02698
>
> VUID-vkCmdDrawIndexedIndirect-None-02698
>
> VUID-vkCmdDrawIndexedIndirectCount-None-02698
>
> VUID-vkCmdDispatch-None-02698
>
>
>
> Bug: angleproject:5821
> Change-Id: Ic8ca6178ce50b409ac8d256848654f43f91fae8e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2808854
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:5821
Change-Id: I771e81a46893f2875605e472273f1388587e042e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831997
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c750129e
|
2021-04-16T16:59:25
|
|
Vulkan: Remove inappropriate use of VK_NULL_HANDLE
A change in Vulkan-Headers changes the value of VK_NULL_HANDLE, exposing
an invalid usage in ANGLE, which is fixed in this change.
Bug: angleproject:5879
Change-Id: I136fdc9e707650a060eaee062c7cf8cf24d9e8b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2831998
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a37d9748
|
2021-04-13T14:52:31
|
|
Vulkan: Add support for FBO with unequal sized attachments
OpenGLES 3.0 allows FBO with unequal sized attachments. This CL removes
assertion that all attachment must have equal size from vulkan backend,
and uses common intersect area to create VkFramebuffer object.
Bug: b/181800403
Change-Id: Icbb12a26784b184ebd91740855672013f64b889d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2824760
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
14f8918c
|
2021-04-16T09:17:29
|
|
Migrate more scripts to python3
Test: python3 scripts/run_code_generation.py
Bug: angleproject:5707
Change-Id: I5abae69c1c6bf03cc418f10beaabc80288fa1c94
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2828979
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
0c77f3ad
|
2021-03-10T15:58:00
|
|
Vulkan: Implement shader buffers descriptor cache.
Implements a descriptor set cache for UBOs, SSBOs, and atomic counter
buffers. Storage Images and framebuffer fetch input attachments are
not yet included. Requires moving the buffer barrier handling into
ContextVk, similarly to how we handle the barriers for Textures.
The packed description key for the descriptors uses a "fast" vector
with a basic minimum size. For most cases of a few buffers this will
fit easily in stack memory, but for larger programs with many buffers
we fit this into heap memory. The key has a large upper bound due to
the high ES 3.2 requirements and the need to index several values such
as the offset and binding size.
We use dynamic offsets for uniform buffers when possible. This ensures
applications like Manhattan 3.1 that use sets of common buffers with
changing offsets hit the cache most of the time.
Because of resource limits we pick at compilation time whether to use
dynamic or static descriptor sets. Mostly this applies to tests that
use a large number of uniform buffers. A future implementation could
be smart and would recompile the program with heuristics to use a
minimal number of dynamic indices.
Reduces the number of descriptor set updates from ~300 -> ~30 per frame
in Manhattan 3.1 and in Asphalt 9 from 900+ to as low as 0 per frame.
Bug: angleproject:5736
Change-Id: I5c2a3881bec90d301dab15cc86c8a70e60674ad7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757515
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|