|
84613b97
|
2024-04-09T12:36:55
|
|
Vulkan: Suppress Undefined-Value-ShaderInputNotProduced
If the app doesn't write to an attachment from the shader, it'll get
undefined values.
Bug: angleproject:8401
Change-Id: I60f2bf510f0f0f9779f00dafbeee3b7364283bf4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440653
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
d55464ff
|
2024-04-04T14:13:02
|
|
Vulkan: Remove the supportsDepthClipEnable feature
This feature is unused since:
https://chromium-review.googlesource.com/c/angle/angle/+/4545084
Bug: angleproject:3970
Change-Id: I78acfda80d4ae04d1387a452e9f52a55a4298a4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426530
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
13829f20
|
2024-03-26T23:03:12
|
|
Vulkan: Optimize depth/stencil resolve with glBlitFramebuffer
Like color resolve, depth/stencil resolve is now also possibly done by
modifying the render pass and attaching a depth/stencil resolve
attachment.
Bug: angleproject:7551
Change-Id: I045e3875e24006d2473a55b6c3856dd768fe8b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5398004
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
76636ddb
|
2024-04-04T15:39:08
|
|
CL/VK: Update missing reflection ops & DS creation
Adding CLProgramVk routine to allocate DS.
Also adding reflection parsing support for
WGS IDs and PushConstantGlobalSize.
Additionally, we now check VK implementation
if non-semantic reflection data (in SPIR-V) is
supported. If not, we strip that data from binary
(via vk_feature check).
Bug: angleproject:8631
Change-Id: Ife02867c7c30b919abf663865adc92858e1bff8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421574
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
103c1b53
|
2024-03-29T14:37:23
|
|
Vulkan: Drop MSRTT emulation dependency on independentResolveNone
Usage of VK_RESOLVE_MODE_NONE was removed in [1], but dependency to this
property was accidentally added in [2].
[1]: https://chromium-review.googlesource.com/c/angle/angle/+/2743666
[2]: https://chromium-review.googlesource.com/c/angle/angle/+/3353895.
Bug: angleproject:4836
Change-Id: I25028b5d343686edd794acdac3714c4a6cb5fa17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5407073
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
4d317b52
|
2024-03-22T15:48:51
|
|
Vulkan: Add MSRTSS preferred usage for tex init
The image create flag related to multisampled render to single-
sampled was used when this feature flag was enabled. However, this
could lead to some platforms allocating extra memory for the image,
even if the image did not use this feature.
In this change, a new feature is added regarding whether to prefer this
flag from the start. If disabled, ANGLE will only use this bit for the
texture if it is actually bound to an MSRTT framebuffer object (through
FramebufferTexture2DMultisampleEXT()).
* Added a new feature: preferMSRTSSFlagByDefault
* If enabled, the MSRTSS is used for all image inits.
* (TextureVk::initImage())
* Otherwise, it will create the image without the flag at first.
* Added member to texture frontend to track if the texture has been
bound to an MSRTT framebuffer.
* mHasBeenBoundToMSRTTFramebuffer
* During TextureVk::syncState(), if the image without the MSRTSS bit
is bound to an MSRTT framebuffer, it is recreated using the
MSRTSS flag.
* Checked in respecifyImageStorageIfNecessary().
Bug: b/329911999
Bug: angleproject:8622
Change-Id: I5e7d43e3828ae272441d65b2be35d09b23b68f84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5402978
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
c71a67de
|
2024-03-27T15:50:00
|
|
Vulkan: Move pipeline cache graph dump to renderer
In preparation for moving some caches to the share group.
Bug: angleproject:6565
Bug: angleproject:8629
Change-Id: I1a06a18417502e499da0edb9abb0d510e3ad99ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5401513
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
|
|
9475ac40
|
2023-11-15T10:25:06
|
|
Vulkan: Make efficient MSAA resolve possible
Prior to this change, using a resolve attachment to implement resolve
through glBlitFramebuffer was done by temporarily modifying the source
FramebufferVk's framebuffer description. This caused a good deal of
complexity; enough to require the render pass to be immediately closed
after this optimization.
The downsides to this are:
- Only one attachment can be efficiently resolved
- There is no chance for the MSAA attachment to be invalidated
In this change, resolve attachments that are added because of
glBlitFramebuffer are stored in the command buffer, with the
FramebufferVk completely oblivious to them. When the render pass is
closed, either the FramebufferVk's original framebuffer object is used
(if no resolve attachments are added) or a temporary one is created to
include those resolve attachments.
With the above method, the render pass is able to accumulate many
resolve attachments as well as have its MSAA attachments be invalidated
before it is flushed.
For a FramebufferVk that is resolved in this way, there used to be two
framebuffers created each time and thrown away as the code alternated
between starting a render pass without a resolve attachment and then
closing with one. With this change, there is now one framebuffer
(without resolve attachments) that is cached in FramebufferVk (and is
not recreated every time), and only the framebuffer with resolve
attachments is recreated every time.
Ultimatley, when VK_KHR_dynamic_rendering is implemented in ANGLE, there
would be no framebuffers to create and destroy, and this change paves
the way for that support too.
WindowSurfaceVk framebuffers are still imagefull. Making them imageless
adds unnecessary complication with no benefit.
-----------------
To achieve efficient MSAA rendering on tiling hardware, applications
should do the following:
```
glBindFramebuffer(GL_FRAMEBUFFER, msaaFBO);
// Clear the framebuffer to avoid a load
// Or invalidate, if not needed to load:
// glInvalidateFramebuffer(GL_DRAW_FRAMEBUFFER, ...);
glClear(...);
// Draw calls
// Resolve into the single sampled framebuffer
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, resolveFBO);
glBlitFramebuffer(...);
// Immediately discard the contents of the MSAA buffer, to avoid store
glInvalidateFramebuffer(GL_READ_FRAMEBUFFER, ...);
```
The above would translate to the following Vulkan render pass:
- MSAA LOAD_OP_CLEAR/DONT_CARE
- MSAA STORE_OP_DONT_CARE
- Resolve LOAD_OP_DONT_CARE
- Resolve STORE_OP_STORE
This makes sure the MSAA data doesn't leave the tile memory and greatly
reduces bandwidth usage.
Once anglebug.com/4892 is fixed, this would also allow the MSAA image
to never be allocated either.
Bug: angleproject:7551
Bug: angleproject:8625
Change-Id: Ia9f4d20863d76a013d8495033f95c7b39f77e062
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5388492
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a53bd62a
|
2024-03-21T14:51:29
|
|
Disable MSRTSS on QCOM
Currently, some QCOM devices supporting MSRTSS allocate extra memory
for all images when this feature is enabled, even if those images do
not use this feature.
* Disabled supportsMultisampledRenderToSingleSampled on QCOM devices.
Bug: b/329911999
Change-Id: I3cfa4c4e7e3c8160ca240c492e5f29e982884f0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386331
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
ad013650
|
2024-03-22T03:42:44
|
|
Revert "Rename LinkSubTask -> PostLinkTask"
This reverts commit 00eb6edba074a22389b09990ab856adfd417dd64.
Reason for revert: Sub tasks are not actually post-link tasks for all
the other backends (other than Vulkan), but they are a real part of
the link job.
Original change's description:
> Rename LinkSubTask -> PostLinkTask
>
> This is a renaming change, no behavior changes are expected.
>
> Bug: angleproject:8297
> Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8297
Change-Id: Iaebf9d165d810344bfc524042206ca427d270034
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386432
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
00eb6edb
|
2024-03-20T06:49:38
|
|
Rename LinkSubTask -> PostLinkTask
This is a renaming change, no behavior changes are expected.
Bug: angleproject:8297
Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
efd41bd2
|
2024-03-15T13:25:03
|
|
Vulkan: Rename ResourceVk.* to vk_resource.*
This file adds helpers to namespace vk, so its name is changed for
consistency with other namespace vk files.
Bug: angleproject:8564
Change-Id: I6525e7609eb9385f2a3eecaa7c52b7417fda7f12
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5370108
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
914fe61b
|
2024-03-15T13:20:49
|
|
Vulkan: Rename RendererVk.* to vk_renderer.*
Done in a separate CL from the move to namespace vk to avoid possible
rebase-time confusion with the file name change.
Bug: angleproject:8564
Change-Id: Ibab79029834b88514d4466a7a4c076b1352bc450
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5370107
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|