|
c1ae67dc
|
2025-08-18T17:26:21
|
|
cl/vk: Introduce Int64 Atomic support
Checks for VK_KHR_shader_atomic_int64 and
enables/reports the following if supported:
cl_khr_int64_base_atomics
cl_khr_int64_extended_atomics
Bug: angleproject:447192709
Change-Id: I47102efd3e269d518558993f6068bfc4f9dd79b6
Signed-off-by: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6981099
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ea35293a
|
2025-04-14T15:52:02
|
|
CL/Vulkan: Dump commandstream on request
Dump the command stream to stdout when feature flag
`debug_cl_dump_command_stream` is enabled.
Bug: angleproject:446112158
Change-Id: I58ea7eec4c842aee382568c7f41c99a242d29680
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6975004
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
b276d1f8
|
2025-10-03T08:56:54
|
|
Vulkan: Add supportShaderPixelLocalStorageAngle feature
Don't expose GL_ANGLE_shader_pixel_local_storage extension for Samsung
Bug: angleproject:386749841
Change-Id: Ia22a6e8d8625db2abc7e7e9816ac34b7a7dec92c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7006000
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
6218bbd4
|
2025-09-26T12:20:39
|
|
Vulkan: Make min submit command count dynamic
* Turned the constant submit count threshold to a variable that can
be set for different devices independently.
* Added feature flag to enable forcing submission for certain GL
commands, such as Clear and Invalidate.
* If disabled, it would treat all commands the same and submit at
the count threshold without exception.
Bug: b/422507974
Change-Id: Ib13d36adfdcf75aa865dafadc279287f4a4bd1c7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6990531
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
50927761
|
2025-09-19T14:45:24
|
|
Vulkan: Add externallySynchronizePipelineCacheAccess feature
Acquire renderer's pipeline cache mutex IFF
externallySynchronizePipelineCacheAccess feature is enabled
Bug: angleproject:386749841
Bug: angleproject:445240187
Change-Id: I91804e2713944768a5379adc3113ce7632a17111
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6969910
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
7217890d
|
2025-06-17T11:51:08
|
|
CL/VK: Add SerializedExecution feature knob
Feature allows for each enqueue-able CL command
to submit and wait for fence (debugging aid).
Bug: angleproject:444491489
Change-Id: I16b7e74f2a321680a81ab3c8a18dd9534a64ce1a
Signed-off-by: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6941617
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c292f292
|
2025-09-10T14:34:14
|
|
Vulkan: Remove compressVertexData feature
This feature was added for performance reason. It was used years ago to
improve performance of lego legacy. That entire game dashboard feature
was disabled a few years ago. So this code path is no longer been used
now, and not been tested on bots as well. This CL deletes this feature
and related code path so that we don't just leave it bit rotten.
Bug: b/167404532
Bug: b/439073246
Change-Id: I384fc97021592da57d38e8c1771892071ae68a89
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6935271
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5c1ba222
|
2025-08-22T14:59:58
|
|
Vulkan: Add feature flag preferBGR565ToRGB565
* This flag will let certain platforms to prefer using BGR565 instead
of using RGB565 for better performance in a follow-up change.
Bug: b/409867243
Change-Id: If89eea1e801ca9d1c10021213862e967231a7343
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6876528
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
acb59de1
|
2024-10-26T13:13:34
|
|
Vulkan: Add VK_KHR_buffer_device_address feature
Add to check VK_KHR_buffer_device_address is supported to query a
64-bit buffer device address value for a buffer, which can be used to
access the buffer memory via the PhysicalStorageBuffer
Bug: angleproject:442950569
Change-Id: Ic86f448c1cb5cef40757406d0ce6259838f77fdb
Signed-off-by: hoonee.cho <hoonee.cho@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916339
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fee5826f
|
2025-09-05T11:23:23
|
|
Vulkan: Enable VK_KHR_unified_image_layouts
Functionality of the extension is not used by this change.
Bug: angleproject:422982681
Change-Id: I68c8b93e69eb47b1d4287edad105514edd36dfcd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918517
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
8ef76b6a
|
2025-08-04T12:34:17
|
|
CL/Vulkan: cl_khr_external_memory extension (pt.2)
- Make this extension visible if Vulkan implementation support
features supportsExternalMemoryFd and/or
supportsExternalMemoryDmaBuf
- Implemented APIs clEnqueueAcquireExternalMemObjectsKHR and
clEnqueueReleaseExternalMemObjectsKHR
- Updated clCreateBufferWithProperties to handle external memory
file descriptor.
Bug: angleproject:378017028
Change-Id: I1751982c8e9b2cd07b7e251cc54db5dcd1bcda20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6843980
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1f83d739
|
2025-08-01T16:59:11
|
|
Expose VK_EXT_global_priority and VK_EXT_global_priority_query
To implement EGL_NV_context_priority_realtime,
VK_EXT_global_priority and VK_EXT_global_priority_query
should be exposed. With these extensions,
we can query supported global priority and set
global priority for the Vulkan queue.
Bug: angleproject:397474813
Change-Id: I83f9f19d46f3c81b02246aae2892f7a9c1a09d1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6857671
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
25f5e2cf
|
2025-08-13T17:03:19
|
|
Vulkan: Add support for built-in gl_PrimitiveShadingRateEXT
Add support for built-in gl_PrimitiveShadingRateEXT and relative const
value.
Bug: angleproject:397255625
Change-Id: I25d51f5805697e137b232175ee790808c45850b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845515
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9034e29b
|
2025-08-14T13:25:39
|
|
Vulkan: add a feature flag controlling float uniforms 16-bit transform
Add a feature flag that will guard whether we want to transform
mediump / lowp float uniforms from 32-bit to 16-bit in SpirV.
The feature flag is enabled when VK_KHR_16bit_storage extension is
supported, and uniformAndStorageBuffer16BitAccess vulkan feature is
supported.
The feature flag is initialized to false in this change. It will be
turned on in a later change when it is being used.
Bug: angleproject:405795981
Change-Id: I37c77270fbd391cc97f58890065b66faf77766c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6852395
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
7ad67712
|
2025-08-13T16:33:03
|
|
CL/Vulkan: Enable cl_khr_integer_dot_product extension
- Enabled extension string and corresponding opencl_c features
- Updated packed_cl_enums.json with three new enums
- Enabled support for this extension in function clGetDeviceInfo
- Add support for CL_DEVICE_OPENCL_C_FEATURES API query through
clGetDeviceInfo corresponding integer_dot_product extension
- Updated vk_features.json with new ANGLE Feature
supports_shader_integer_dot_product
- The changes in autogen files are generated by running the
run_code_generation.py script
Tests-Passing:
ocl_cts: test_integer_ops integer_dot_product
ocl_cts: test_compiler features_macro
VK-GL-CTS:dEQP-VK.spirv_assembly.instruction.compute.opsdotkhr.*
dEQP-VK.spirv_assembly.instruction.compute.opudotkhr.*
dEQP-VK.spirv_assembly.instruction.compute.opsudotkhr.*
dEQP-VK.spirv_assembly.instruction.compute.opsdotaccsatkhr.*
dEQP-VK.spirv_assembly.instruction.compute.opudotaccsatkhr.*
dEQP-VK.spirv_assembly.instruction.compute.opsudotaccsatkhr.*
Bug: angleproject:433980939
Change-Id: Iae7a7753d0556beeb85c254c61a37a0d047df058
Signed-off-by: Hareesh Karada <hareesh.k@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785089
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cd969c3e
|
2025-07-28T16:27:12
|
|
Vulkan: Disable clipCullDistance ext if GS/TS
The extension GL_EXT_clip_cull_distance also interacts with geometry
and tessellation shaders. These features are currently in development.
* Added temporary flag: supportsClipCullDistanceInGSAndTS
* Currently disabled by default
* clipCullDistanceEXT can only be enabled if this feature is enabled,
or if the device does not support geometry or tessellation shaders.
* After the features become available, this flag can be removed.
Bug: angleproject:42264006
Bug: b/415288635
Change-Id: Iac5c672fd980710519407c482bc95d2b0019aea2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6795025
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
03356f06
|
2025-07-10T19:21:04
|
|
Vulkan: Skip VK_KHR_maintenance9 warning
A warning has been added about behavior that will
change if VK_KHR_maintenance9 is enabled.
Since we can't make this change until drivers support
the feature, let's add warning that will fire when we
do decide to turn it on.
This CL:
- Adds a feature for maintenance9
- Adds a VVL skip if isn't enabled
- Updates our skip code to check for message IDs
Test: Traces
Bug: angleproject:429339330
Change-Id: I5763cbc5f343ef165ff8810b9b60b8c809075b8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6724905
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
c39f4a5c
|
2025-06-05T15:35:06
|
|
Vulkan: Update border color assignment for stencil
In texture border clamp, if the border color is assigned together
stencil mode (both using glTexParameter()), its red component is used
to set up a border color to be used in each backend:
* (Set up in AdjustBorderColor())
In the Vulkan backend, this is used when updating SamplerDesc, which
is then used later to set up the custom border color:
* (VkSamplerCustomBorderColorCreateInfoEXT)
According to the spec, in case of undefined format, integer border
color, and stencil image, the implementation is required to use either
the first or the second component of the custom color, although it is
recommended to use the first. However, at the moment, only the first
component is being populated, while using the second component is also
valid.
* Added feature: usesSecondComponentForStencilBorderColor
* Added bit to SamplerDesc: mUsesSecondComponentForStencil
* It is set based on the feature flag above and the texture format.
* When setting the custom border color info, the second component will
be used based on the above flag.
* Added test suites to test this on ES31 and ES32:
TextureBorderClampTestES3*.CustomBorderColorWithStencil*
* Updated capture params for glTexParameterIuivEXT().
* Suppressed the ES32 version for the following:
* P4
* Linux/NVIDIA (due to out-of-date driver)
Bug: b/390710636
Change-Id: Ie50c19e8ea66da40dc8b8db49d7e622a582637a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6626416
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
ef29d42e
|
2025-05-22T15:52:49
|
|
Support ASTC decode mode extensions in ANGLE
Added support for GL_EXT_texture_compression_astc_decode_mode and
GL_EXT_texture_compression_astc_decode_mode_rgb9e5 in ANGLE. Also added
corresponding end-to-end tests for ASTC decode mode queries, including
ASTC decode mode queries and rendering with ASTC texture formats with
different decode modes on GL_TEXTURE_2D works.
Bug: angleproject:419403188
Change-Id: I0f2dced8468c4e25597740d1de346b2f699bb81e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6575285
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
16b2bf5e
|
2025-05-06T16:23:24
|
|
Vulkan: Only expose ASTC HDR if 3D textures supported
Not all hardware supports ASTC HDR for 3D textures.
This CL adds a check for each ASTC HDR format, querying the driver
for 3D support, and tracking it as a feature. We use that feature
when deciding to expose GL_KHR_texture_compression_astc_hdr.
Test: dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba
Bug: b/407634958, b/416095435
Change-Id: Iaa6f26e247c7e6c7451f3d4eb8dd7175509bf45f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6515816
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
16e0dfd9
|
2025-03-20T10:59:26
|
|
Vulkan: Add feature flag to recycle VkEvent
This CL adds a feature flag to enable/disable the VkEvent recycling.
Given ARM prefers taking CPU overhead of creating and destroying VkEvent
when last reference count to VkEvent goes away instead of the extra GPU
overhead comes with vkCmdResetEvents, VkEvent recycling is disabled on
ARM.
Bug: angleproject:409441956
Change-Id: I288be6f7cfcbc4dd9c4701d20fba44349f25befc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6376784
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a3b20796
|
2025-04-25T13:12:08
|
|
Vulkan: Add flag to prefer renderer pipeline cache
* Added the following feature: preferGlobalPipelineCache
* The renderer's pipeline cache will be used to create pipelines,
including for warm-up.
* mPipelineCache in the program is not saved when this flag is
enabled.
* Currently enabled for NVIDIA and AMD.
* Impact on captured trace (w/ compiling inactive shaders)
* Decrease in peak system memory usage on Windows/NVIDIA:
* ~7600 MB -> ~3900 MB
* Decrease in peak RES memory usage on Linux/NVIDIA:
* ~7100 MB -> ~3600 MB
Bug: b/411442610
Change-Id: I04929569f0f8d59a77c52505072faa0244ef1393
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6495155
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d392eeae
|
2025-04-22T10:54:13
|
|
Vulkan: Force host-image-copy for LUMA textures on ARM
Bug: angleproject:42266771
Change-Id: I79a8fe14ba389195d5846261752be847bc13bcf4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6479371
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f355e2b3
|
2025-04-15T18:58:25
|
|
Vulkan: Remove preferDriverUniformOverSpecConst
This was practically true for every vendor on Android (where rotation
matters). For Qualcomm, it was also true due to a bug in version
checking and didn't seem to be causing any concerns. Where pre-rotation
is supported, it is better to enable this feature to avoid excessive
pipeline creation.
This change removes the feature and makes sure ANGLE always uses
uniforms for rotation instead of spec consts. While technically this
may have an adverse effect on platforms that never need pre-rotation,
the ability is retained for all vendors since pre-rotation is finding
its way into more platforms and would likely eventually be needed
everywhere anyway.
Bug: angleproject:42265878
Bug: angleproject:42262166
Change-Id: I4b64c04da46db08cfdd44b60789b66d93d8e8b17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6459025
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
f798b0d2
|
2025-04-04T08:17:57
|
|
Vulkan: Remove enablePreRotateSurfaces feature
Removed to simplify the code and to avoid the problem for which
`presentSubOptimalReturnedOnTransformChange` feature was added.
Platforms without the per-rotation support always have
`VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR` as the `currentTransform`, so
the code will perform the same as when the feature was disabled.
Add `warmUpPreRotatePipelineVariations` to explicitly control
per-rotation pipeline warm up.
Bug: angleproject:42262166
Change-Id: I44f6c221c11105f01f62f62622987b1955bc58aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6433586
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
b77f8af7
|
2025-04-02T19:01:48
|
|
Vulkan: Ignore SUBOPTIMAL on Android without pre-rotate
Android returns `VK_SUBOPTIMAL_KHR` when window orientation changes,
while ignores size changes. When "enablePreRotateSurfaces" is disabled,
each present will return `VK_SUBOPTIMAL_KHR` if `currentTransform` is
not `VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR`, causing swapchain recreate
on each swap. This behavior makes disabling "enablePreRotateSurfaces" on
Android worse than suboptimal.
New "presentSubOptimalReturnedOnTransformChange" feature is currently
enabled only on Android for the reason described above. It may be
enabled for other platforms in the future if required.
Change also improves error handling, by moving `deferAcquireNextImage()`
call right after the `queuePresent()`, before any other call that may
fail. This will avoid repeated present of the same image if something
fails after successful `queuePresent()` call.
The `checkForOutOfDateSwapchain()` and `computePresentOutOfDate()` was
combined into a single method to improve error handling and to simplify
the code.
Bug: angleproject:397848903
Bug: angleproject:42266082
Bug: angleproject:42262166
Change-Id: I7ba2389ad2ddafc0c77c3068cd85ac9b9251ccdd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6424753
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
bbf92d12
|
2025-03-21T12:43:14
|
|
Vulkan: Add workaround flag for extra submit fence
This change is a workaround for some devices exhibiting a
device-lost error related to the fence usage in the command
batches when working with EGL sync objects, such as a cycle
similar to below:
- <Some GL work>
- eglCreateSyncKHR()
- glFlush()
- eglDupNativeFenceFDANDROID()
- eglDestroySyncKHR()
- <More GL work>
(The exact point of error and the reason for the device-lost
remain unknown.)
This change is meant to mitigate such errors on those devices if
needed. However, for the rest, the feature will remain disabled.
* Added a new feature flag: enableExtraSubmitFence
* Modified the usage of mFence in CommandBatch
* It is also used when enableExtraSubmitFence is enabled, even if
there is an external fence.
* When there is an external fence, this object is used to create
an empty submission after the primary commands are submitted
using the external fence.
* Added the config to enable EnableExtraSubmitFence for the following
suite: EGLSyncTest
Bug: b/384477641
Change-Id: I05f8bdcc804967c4984416af802326d22afd7a46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6378778
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8cf89716
|
2025-03-14T20:17:07
|
|
Vulkan: Remove perFrameWindowSizeQuery feature
Feature was enabled for all platforms in order for surface to be resized
before acquire next image (not only after swap). Remove it, as if it's
always enabled to simplify the code.
Bug: angleproject:397848903
Bug: angleproject:42262287
Bug: angleproject:42262286
Bug: angleproject:40096601
Change-Id: I768772e30f5f38f68992e5b82c84430732aa77d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6354166
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
081934f6
|
2025-03-12T15:22:31
|
|
Vulkan: Add avoidInvisibleWindowSwapchainRecreate feature
There is a bug on some NVIDIA drivers on Linux X11 when
`vkAcquireNextImageKHR()` constantly returns `VK_ERROR_OUT_OF_DATE_KHR`
if recreate the swapchain while window is not visible.
If not recreate the swapchain after window resize - nothing happens,
acquire and present works without errors. But if recreate the swpahchain
to the `VkSurfaceCapabilitiesKHR::currentExtent` the next
`vkAcquireNextImageKHR()` will return `VK_ERROR_OUT_OF_DATE_KHR`. ANGLE
will retry to recreate the swapchain one more time and fail the call.
Enabling the "avoidInvisibleWindowSwapchainRecreate" feature will avoid
swapchain recreation when window size changes while it is not visible.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.ResizeInvisibleWindow/*
Bug: angleproject:397848903
Bug: angleproject:42264022
Bug: angleproject:42263074
Change-Id: I48588bf467d15c0e84b923092e06a42c22084dcc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6348739
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
e339f91c
|
2025-03-21T10:22:59
|
|
Vulkan: Split asyncCommandBufferResetAndGarbageCleanup into two
Right now this one feature flag controls garbage clean up and command
buffer reset. If this is enabled, we are seeing command buffer reset
some times runs on small core and some times gets blocked by mutex lock
inside vulkan driver. This could take quite long while main rendering
thread is blocked by ANGLE's CommandPoolAccess lock. This CL splits this
feature flag into two separate feature flag: asyncGarbageCleanup
controls garbage clean up in the async thread or not.
asyncCommandBufferReset controls commandBuffer.reset in the async thread
or not.
This CL also disables commandBuffer.reset in async thread only on ARM
given there is no data shows other GPUs suffer form the same problem.
Bug: angleproject:378718508
Change-Id: Ice87b5b91568a0a95e0064da2b70243516ff6753
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6381893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ac242c1a
|
2025-03-20T11:18:45
|
|
Vulkan: Fix the feature flag typo
Bug: b/333987915
Change-Id: Iea21592532352d95c69c0cf8dfcad96b58563ec5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6377544
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
|
|
6bd7a518
|
2025-03-19T13:35:48
|
|
Vulkan: Allow pipelineStatisticsQuery substitute PGO
Some devices are missing VK_EXT_primitives_generated_query
extension and primitivesGeneratedQuery (PGO) feature, which are
required for GLES3.2 extensions geometryShaderEXT and
tessellationShaderEXT. On such devices, when app requests to create
a GLES 3.2 context, the eglCreateContext call will fail due to not
able to support GLES 3.2.
We add a new feature flag
allowPipelineStaticsForPrimitivesGeneratedQuery,
and enable it on devices where we can fallback to using
pipelineStatisticsQuery (PSQ) as an approximation for
VK_EXT_primitives_generated_query, to broaden support for GLES 3.2
contexts. This is an opt-in feature for vendors that can functionally
substitute PGQ with PSQ.
Expose geometryShaderEXT and tessellationShaderEXT
extensions if allowPipelineStaticsForPrimitivesGeneratedQuery feature
is enabled.
Bug: b/333987915
Change-Id: I9f0affbc3cc383ed6c50bcfc5d4d6f7f8a708aaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6362627
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
e6a27504
|
2025-03-07T20:14:50
|
|
Vulkan: Swapchain recreate workaround for shared present mode
On Android, `vkCreateSwapchainKHR` may return
`VK_ERROR_NATIVE_WINDOW_IN_USE_KHR` if use `mLastSwapchain` as an
`oldSwapchain` when in shared present mode. This happens on three
different devices: SM-G996B (Mali-G78), SM-S921B (Xclipse 940), SM-S921U
(Adreno 940).
Bug: angleproject:397848903
Bug: angleproject:42262606
Change-Id: I1541c06c254f3e8231b165fb0c53eff5d810e8bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6329488
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5b343e8f
|
2025-03-11T11:35:08
|
|
Vulkan: Remove support for Stadia
Bug: angleproject:42262714
Change-Id: Icae5fe828fe4e0bcd287d297df1bc586708ef86e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6344390
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
ae567733
|
2025-02-26T19:09:14
|
|
Vulkan: Make use of VK_EXT_device_fault if exists
This Vulkan extension, if available, can provide further details
about the device in case of VK_ERROR_DEVICE_LOST.
* Added the following ANGLE feature: supportsDeviceFault
* It shows whether the extension VK_EXT_device_fault is supported
and that the deviceFault bit is enabled on the physical device.
* Added the Vulkan entry point for the following function:
* vkGetDeviceFaultInfoEXT
* Added the following to the renderer:
* mFaultFeatures (device feature)
* retrieveDeviceLostDetails(); to log information regarding the
following if the appropriate support is available:
* Address faults
* Vendor-specific faults
* Vendor binary dump (logged in hex format)
* Added RetrieveDeviceLostInfoFromDevice() to vk_renderer.cpp
to be used in Renderer::retrieveDeviceLostDetails().
* Updated ContextVk::handleError() to try to retrieve more info in
case of DEVICE_LOST.
Bug: b/399478440
Change-Id: If8d8e04001dabbe775c023f9922c44ef2205317e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6305888
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bd8bc105
|
2025-02-19T18:08:32
|
|
vulkan: disable pipeline cache data serialization for nvidia device.
we still see the big cache data issue after driver version 520.
rename hasEffectivePipelineCacheSerialization to
skipPipelineCacheSerialization.
Bug: b/358380399
Change-Id: Idd8354f95c3eb4c2e58678a4cf50c8b6af20f371
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6284126
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Hailin Zhang <hailinzhang@google.com>
|
|
65343c4c
|
2025-02-27T11:23:04
|
|
Vulkan: Improve ConvertImageLayoutToVkImageLayout()
This CL removes supportsMixedReadWriteDepthStencilLayouts feature flag.
This feature flag was introduced when ANGLE only requires vulkan 1.0.
But now we require vulkan 1.1 and this is part of vulkan 1.1 core spec.
So it is no longer needed and wasting CPU cycles to check this every
time ConvertImageLayoutToVkImageLayout() is called.
With supportsMixedReadWriteDepthStencilLayouts removed, convert from
ImageLayout to VkImageLayout no longer needs renderer parameter. The
layout information in kImageMemoryBarrierData is never modified by
renderer at run time. So the renerer arguments has been removed in a lot
of places, avoids another pointer de-reference.
Bug: b/384839847
Change-Id: I5a89a890c0c0a1f99d2fdc1b2a85baf7de5c28bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6310839
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f974ffa8
|
2025-01-27T11:06:30
|
|
Vulkan: Add stubs for expose VK_KHR_swapchain_mutable_format
Bug: angleproject:386688871
Change-Id: I77a45e342ee46f65c4f2947071c713f914a937a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6196939
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e330d959
|
2024-04-09T15:13:48
|
|
CL/Vulkan: Add native builtins to clspv compiler
Add a set of native builtins that are known to perform better for
Samsung devices.
A feature condition `uses_native_builtin_cl_kernel` is setup in
`vk_featurs.json` for control of the selection. The following files are
autogenerated
- FeaturesVk_autogen.h
- angle_features_autogen.cpp
- angle_features_autogen.h
Bug: angleproject:361717757
Change-Id: I10ffad0cbf1d4c2e9bfeea768311d90b0f65af2d
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6092036
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8c317940
|
2025-01-16T17:51:12
|
|
Vulkan: Add feature flag to use VkEvent for buffer barriers
Bug: angleproject:360274928
Change-Id: Ie6e48a0a57c016571a1e94c0105a231c749c76f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6180394
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
73e226cb
|
2024-10-17T16:37:52
|
|
Vulkan: Add check for uniform buffer standard layout feature
Add to check uniform buffer standard layout is supported.
Bug: angleproject:387306731
Change-Id: I543c46a6b504a4df7e9937365c9b28e6328f0619
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6137319
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
59162e2e
|
2024-12-30T12:22:10
|
|
Vulkan: Update a few features and extensions for Samsung
Enable
disableProgramCaching
Disable
rgbxInternalFormatANGLE
clipDistanceAPPLE
cacheCompiledShader
preferMonolithicPipelinesOverLibraries
Bug: angleproject:386749841
Change-Id: Iea8033e2999c65b8715c6069d2096a709f78f438
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6133540
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
c75bd915
|
2024-12-10T23:01:44
|
|
Vulkan: Remove asyncCommandQueue
It's been years and it never showed an advantage. In the meantime,
performance without this feature seems close to native drivers (i.e. the
feature has lost its appeal) and it's frequently a source of
complication and bugs.
Bug: angleproject:42262955
Bug: angleproject:42265241
Bug: angleproject:42265934
Bug: angleproject:42265368
Bug: angleproject:42265738
Bug: angleproject:42266015
Bug: angleproject:377503738
Bug: angleproject:42265678
Bug: angleproject:173004081
Change-Id: Id8d7588fdbc397c28c1dd18aafa1f64cbe77806f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6084760
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
95756ae2
|
2024-12-04T15:47:19
|
|
Expose VK_EXT_image_compression_control_swapchain
To implement EGL_EXT_surface_compression,
VK_EXT_image_compression_control_swapchain should be exposed.
With this extension, we can put VkImageCompressionControlEXT
to the pNext of VkSwapchainCreateInfoKHR
Bug: angleproject:375496226
Change-Id: I3f62040be3ba3e5cc051164cb9ace1934e61dead
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073353
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f51170b3
|
2024-11-21T16:30:40
|
|
Enable GL_KHR_texture_compression_astc_hdr
Vulkan supports GL_KHR_texture_compression_astc_hdr,
so this extension can be enabled in Angle.
Bug: angleproject:379186304
Change-Id: I438a120c3f884a7eefcd883ad71abf68f81cb473
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038457
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9eab301c
|
2024-11-12T17:24:57
|
|
Enable GL_KHR_texture_compression_astc_sliced_3d
ARM supports GL_KHR_texture_compression_astc_sliced_3d,
so this extension can be enabled in Angle.
Bug: angleproject:378507964
Change-Id: I545ac57b4d6065a9ef99a7884555da47a1d50261
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6014004
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
29855942
|
2024-11-06T16:01:28
|
|
Vulkan: Add stubs for expose VK_EXT_image_compression_control
Bug: angleproject:352364583
Change-Id: Ia8292eee6620db6d0c4b0c6162de95583c1e416d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5998011
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
7fea539c
|
2024-10-23T11:40:51
|
|
Vulkan: Remove extra non-conformant flag checks
It may be possible to remove the flag check and simply rely on the
checks performed in CanSupportGLES32() to determine support for ES 3.2.
The non-conformant flag can remain utilized for certain features until
the relevant issues are resolved and this flag is no longer needed.
* Removed the checks from getMaxConformantESVersion().
* Removed the flag check in Renderer::getMaxSupportedESVersion().
* Added exception to the blend extension when using the non-conformant
flag for Win/Intel.
* Skipped the related tests on this platform that now fail.
* Added a new feature flag to force-enable ES 3.2 on certain platforms
for testing.
* exposeES32ForTesting
* If the bots are updated to support ES 3.2, it can be removed from
using this flag.
* Skipped some VVL errors when the flag is enabled.
* Skipped end2end ES 3.2 tests on SwS.
* Skipped some dEQP tests on P4 and SwS that would use ES 3.2 features
that are not available on those platforms.
Bug: b/374841339
Bug: b/376899587
Change-Id: Ifd405457ab8bf2076eb8fb5c92c5316f4d520595
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5958147
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
a0586d6e
|
2024-10-26T00:32:27
|
|
Remove feature description / condition strings
These strings show up in chrome://gpu so they can marginally be useful,
but are otherwise dead weight for most uses of ANGLE / users of ANGLE.
While slightly less convenient, the feature name can always be linked
back to the source code if needed so the presence of such metadata is
not necessary either.
This shaves 40KB from the binary size of ANGLE when built with Vulkan
only on Android.
Bug: chromium:371512561
Change-Id: I3959961bb7de95cc60a85130d0ff38a7fd533fb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5968453
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9a4c7495
|
2024-10-15T13:05:28
|
|
Vulkan: Add feature flag to enable descriptorSet cache
So that we can disable it to compare the performance difference.
Bug: angleproject:372268711
Change-Id: I02da254e5d58815741080634a2dd005617aa7432
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5936135
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
ae5c3b96
|
2024-10-08T17:02:21
|
|
Boilerplate for GL_ARM_shader_framebuffer_fetch_depth_stencil
Bug: angleproject:352364582
Change-Id: I94c670db5546564a6f60bb513a6d7f3f5bd5778c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916771
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
f5f419ec
|
2024-09-04T20:22:20
|
|
Vulkan: Add verify-restore in CompressAndStorePipelineCacheVk()
Change fixes following problem:
When blob cache is full, but still allows to store the current
pipeline cache data, storing next chunk may trigger eviction of
already stored items. Depending on the blob cache implementation,
eviction process may choose to evict chunks from the current pipeline
cache data. As the result: blob cache will not contain all chunks.
Solution:
The `StorePipelineCacheVkChunks()` function now check what chunks
exist in the blob cache (if `lastNumStoredChunks` parameter is positive)
and restores any missing chunks if their number is less than
`lastNumStoredChunks`.
First call to `StorePipelineCacheVkChunks()` passes zero (0) to the
`lastNumStoredChunks`, which will skip the check and store all chunks
unconditionally.
If "verifyPipelineCacheInBlobCache" feature is enabled, the
`StorePipelineCacheVkChunks()` will be called again to restore possibly
missing chunks.
If "hasBlobCacheThatEvictsOldItemsFirst" feature is disabled,
the function will be called repeatedly in a loop (opposed to only once),
until all chunks are present or until number of missing chunk stops
decreasing.
Bug: angleproject:4722
Change-Id: Ibbbdb2f878d6aafd7ab5586fc654e2b9be900a9a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5837042
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
8469debb
|
2024-09-04T20:04:10
|
|
Vulkan: Add dual slots in CompressAndStorePipelineCacheVk()
Change fixes following problem:
Currently, each call to `CompressAndStorePipelineCacheVk()` stores
chunks in order, starting from 0. This overrides previously stored
chunks. In case of app termination (kill) in the middle of this
process, the entire cache data will be corrupted, since it will
partially contain chunks from the new and old caches.
Solution:
In order to fix this problem, this change introduces `slotIndex` into
the `chunkCacheHash` calculation. Slot index is managed by
`vk::Renderer::getNextPipelineCacheBlobCacheSlotIndex()` method, which
will alternate between 0 and 1 when "useDualPipelineBlobCacheSlots"
feature is enabled, and always 0 otherwise.
Additionally, chunk storing order is reversed: last chunk is stored
first and the first (0 chunk) - last. This is done because 0 chunk is
the first that is loaded in `GetAndDecompressPipelineCacheVk()` and used
as indication that there is data in the cache. Writing it last, ensures
that other chunks will be also available.
When "useDualPipelineBlobCacheSlots" is enabled, each call to
`CompressAndStorePipelineCacheVk()` will use slot index opposed to the
slot that is stored in the cache, avoiding damaging existing data. After
writing all chunks for a brief moment there may be 2 instances of the
data. However, data for the previous slot will be immediately erased
(by writing 1/0-sized blobs) starting from the 0 chunk.
To control if erasing of old pipeline cache data will be erased by using
0-sized or 1-sized blobs blobs, added
`useEmptyBlobsToEraseOldPipelineCacheFromBlobCache` feature.
The `GetAndDecompressPipelineCacheVk()` function will iterate over each
available slot index checking only 0 chunk until data is found.
In case of the OpenCL API, features will always have following values:
- "useDualPipelineBlobCacheSlots" -> false
- "useEmptyBlobsToEraseOldPipelineCacheFromBlobCache" -> true
Note: this solution requires 2X pipeline cache size space in the blob
cache to work as expected, otherwise it will exacerbate other problem:
When blob cache is full, but still allows to store the current
pipeline cache data, storing next chunk may trigger eviction of
already stored items. Depending on the blob cache implementation,
eviction process may choose to evict chunks from the current pipeline
cache data. As the result: blob cache will not contain all chunks.
The above problem will be addressed in the follow up CL.
Bug: angleproject:4722
Change-Id: I2920bc3d89263280cdfe0466446fca26415e2b25
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756576
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
dbdc9551
|
2024-09-16T10:19:47
|
|
Vulkan: Let asyncCommandBufferReset control garbage cleanup
So that people can toggle the flag to compare perf/power difference with
async thread doing garbage clean up AND command buffer reset. This also
renames feature flag asyncCommandBufferReset to
asyncCommandBufferResetAndGarbageCleanup to reflect the implementation.
Bug: b/255411748
Change-Id: Id459e6f4dc81ec76b6c0c2dba0db46041ea6ae8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5867389
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8c12874c
|
2024-09-12T11:26:29
|
|
vulkan: add double buffer swapchain for fifo mode.
Double buffer swapchain usually drop the performance.
But at B* the default fps cap for silver device still at 30fps.
This change is for reduce latency.
Bug: b/311022968
Change-Id: Ida4044f439bbe3f235d53f5d1d2f945533cbb094
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5858255
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
79729f7c
|
2024-08-27T17:13:57
|
|
Reapply "Vulkan: Expose float control properties as angle features"
This reverts commit 5a8eab96c6b7b99b8568feb902b8b85e2df7e19a.
This relands the commit 027cbe1a071f41a09d596c4baa243a0abc3d1a86
with the below changes
- add back needed suppressions that were removed erroneously
```
// https://anglebug.com/361600662
"VUID-RuntimeSpirv-OpEntryPoint-08743",
"VUID-RuntimeSpirv-OpEntryPoint-07754",
"VUID-RuntimeSpirv-maintenance4-06817",
```
Bug: angleproject:360031000
Change-Id: I74ed80b459466bdd8ae638ff875677b089aaa360
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5818733
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5a8eab96
|
2024-08-27T10:07:26
|
|
Revert "Vulkan: Expose float control properties as angle features"
This reverts commit 027cbe1a071f41a09d596c4baa243a0abc3d1a86.
Reason for revert: removes needed suppressions, breaking bots:
https://ci.chromium.org/ui/p/angle/builders/ci/win-exp-test/569/overview
https://ci.chromium.org/ui/p/angle/builders/ci/linux-exp-test/810/overview
https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-s22-test/1060/overview
Original change's description:
> Vulkan: Expose float control properties as angle features
>
> The different fp configuration that a vulkan backend supports are
> exposed through `VkPhysicalDeviceFloatControlsProperties`. Expose these
> as angle features that api's implementations can query.
>
> The autogen files are changes as reported by running `python3
> scripts/run_code_generation.py` script.
>
> Bug: angleproject:360031000
> Change-Id: I038cbf2c9e2b10916697994782ef73b35a1caf12
> Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5798053
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
Bug: angleproject:360031000
Change-Id: I88c0a083725320b5e1a8302a50f67d41cbf5c089
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5816829
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
027cbe1a
|
2024-08-13T17:27:27
|
|
Vulkan: Expose float control properties as angle features
The different fp configuration that a vulkan backend supports are
exposed through `VkPhysicalDeviceFloatControlsProperties`. Expose these
as angle features that api's implementations can query.
The autogen files are changes as reported by running `python3
scripts/run_code_generation.py` script.
Bug: angleproject:360031000
Change-Id: I038cbf2c9e2b10916697994782ef73b35a1caf12
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5798053
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
579a5855
|
2024-08-13T11:39:54
|
|
Vulkan: Add query for 64bit fp support feature check
Add a feature check for shaderFloat64 support. If present expose the
corresponding feature check.
The following files are updated by running the autogen script -
`run_auto_code_generation.py`
- include/platform/autogen/FeaturesVk_autogen.h
- util/autogen/angle_features_autogen.cpp
- util/autogen/angle_features_autogen.h
Bug: angleproject:360031000
Change-Id: If2a11190729550ad5b84714e0a3aa3b81956c66a
signed-off-by: gowtham tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789896
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e90cd0c4
|
2024-08-12T17:07:47
|
|
Vulkan: Add check for int8 extension support
Vulkan backend currently has a check for float16 part in
VK_KHR_shader_float16_int8 extension. Add the int8 support as well.
The changes in below files are generated through
`scripts/run_code_generation.py` script
- include/platform/autogen/FeaturesVk_autogen.h
- util/autogen/angle_features_autogen.cpp
- util/autogen/angle_features_autogen.h
Bug: angleproject:360031000
Change-Id: I8811779299e3d24b4536d1871e1eadcbb87432c2
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5792021
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
22ed9877
|
2024-03-07T15:52:13
|
|
Vulkan: Generate fragment shading rates with compute
Generating fragment shading rates on the CPU could cause avoidable
stalls or increased latencies due to host<->device synchronization.
Instead generate the rates using a compute shader.
Optimize foveated rendering by treating a foveated draw with focal
points whose gainX or gainY is 0 as if it were an un-foveated draw
Bug: angleproject:42266906
Change-Id: If8c5504087997666c7d0c1cae8dcc5fab847187e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5754322
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
65f08d08
|
2024-07-26T22:14:49
|
|
Vulkan: Work around driver bug with nested switch
Bug: chromium:350528343
Change-Id: Ie7bd58934ccb2b8f06f6ad6a8c3bf38e81b84969
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5744620
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
24322b7d
|
2024-06-28T20:10:34
|
|
Vulkan: feature for cached non-coherent for dyn/stream buffers
On platforms lacking cached coherent memory, ANGLE falls back to
non-cached coherent memory for dynamic/stream buffers. This impacts
CPU readback performance.
Add VK feature preferCachedNoncoherentForDynamicStreamBufferUsage. When
enabled, ANGLE prioritizes cached non-coherent memory for these
buffers.
Enable this feature for Intel Meteorlake SOCs.
Bug: b/347601787
Change-Id: If62af9f3df57c0bcebf18af747cac56e45f93ea7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5667457
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
05801537
|
2024-06-13T13:35:05
|
|
Vulkan: Add feature for coherent blend advanced op
This change will add features that will be used in
the follow-up CL.
* Added the following feature to the Vulkan backend:
* supports_blend_operation_advanced_coherent
* Added the following feature to the renderer:
* mBlendOperationAdvancedFeatures
* It will be used to query advancedBlendCoherentOperations
from the physical device.
Bug: angleproject:42262258
Change-Id: I2949002d053700e89d92358d6e7c80c714ea36ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5634380
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
d193d51b
|
2024-06-17T22:46:08
|
|
Replace issue ids post migration to new issue tracker
This change replaces anglebug.com/NNNN links.
Bug: None
Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6ac37446
|
2024-06-17T15:38:09
|
|
Vulkan: Add feature for VK_KHR_maintenance5
This extension expands the pipeline flag bits, one of which is needed
for VK_EXT_legacy_dithering v2 for dynamic rendering.
Bug: angleproject:42267038
Change-Id: I45f2c47fbd016f60c3e52fda80d148d9f147bd71
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637154
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
65f8dc8e
|
2024-06-12T17:01:54
|
|
Vulkan: Remove traces of VK_MSRTSS_GOOGLEX
Devices that shipped this unreleased extension should have long been
updated to VK_MSRTSS_EXT
Bug: angleproject:4836
Change-Id: I23736ebf28afd4a6f3b5b0d5a6417b3e7564c293
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5627575
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
15c182f9
|
2024-06-11T09:47:07
|
|
Vulkan: remove deferFlushUntilEndRenderPass feature, always on
This only applies to Qualcomm chipsets, the feature was already enabled
for all other devices.
It was previously causing a manhattan 3.0 perf regression on some
Qualcomm devices, but my tests on S24 both with ANGLE trace manhattan_31
and running gfxbench manually do not show any obvious regression. It was
also not expected that this would result in a regression. As we do not
aim to improve perf on older devices, removing the feature altogether
so that defers are always enabled.
This change resulted in a change in gold images on these traces
on pixel 4 bots:
pokemon_masters_ex - text was missing and now is rendered
street_fighter_iv_ce_frame86 - shadow was missing and now is rendered
So it looks like the feature may have been working incorrectly.
Bug: b/346378481
Change-Id: I2b0d15b89e11c67dea7c316a42bc807441c43b0a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5622115
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
c519a4a6
|
2024-06-10T15:56:36
|
|
Vulkan: Add dynamic rendering features
Bug: angleproject:42267038
Change-Id: Ic2cdc277f6bb1bb3ce273a866bdb2ce6f5930355
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5617653
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
7d65c945
|
2024-06-06T09:01:40
|
|
Vulkan: Limit SSBO max size to 256MB on older Mali GPUs
Bug: angleproject:345244067
Change-Id: I18ff10198fc3db3a82a0897319fba5fb200a2a05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5603109
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6aad8a89
|
2024-05-31T14:46:28
|
|
Vulkan: Remove combineAllShadersInPipelineLibrary
If we have VK_NULL_HANDLE as the descriptor set layout handle for both
pre-rasterization and fragment shader subset pipelines
we run into VVL - VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681
Need to work around this by having the renderer store a placeholder
descriptor set layout handle for an empty DescriptorSetLayoutDesc
that can be reused across all contexts
Bug: angleproject:8677
Tests: EGLMultiContextTest.NonSharedContextsReuseDescritorSetLayoutHandle*
Change-Id: I22e7f39c497d7f668afe7cb26690f6a9de49831b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5587990
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9620d4d3
|
2024-05-23T16:12:52
|
|
Vulkan: Emit SPIR-V 1.4 where available
In preparation for optimizations possible for SPIR-V 1.4. This change
makes ANGLE output SPIR-V 1.4 if supported, and SPIR-V 1.3 otherwise.
It handles the following differences between the two versions:
- OpEntryPoint in SPIR-V 1.4 includes all global variables, as opposed
to SPIR-V 1.3 where only the Input and Output variables are listed
- Storage buffers use a dedicated storage class in SPIR-V 1.4
Bug: angleproject:342316794
Change-Id: I157ed46449ff2d0f14d284b883b4ddc1b4b46fd1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5565224
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e29d643e
|
2024-05-07T13:40:18
|
|
Vulkan: Fix missing per-present-mode query
... if VK_EXT_surface_maintenance1 is supported but
VK_EXT_swapchain_maintenance1 isn't. The code mistakenly made the
appropriate query conditional to the presence of swapchain_maint1
instead of surface_maint1. On devices where surface_maint1 was
available but swapchain_maint1 wasn't, this caused a VVL error that is
now fixed.
Bug: angleproject:8680
Change-Id: Ide9a87f0e50887572f693d741d5476361320ea19
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5522756
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
950afec4
|
2024-04-30T09:38:43
|
|
Vulkan: Add VK_KHR_synchronization2 feature flag
This CL adds VK_KHR_synchronization2 feature flag and enables the
feature if exists.
Bug: b/336844257
Change-Id: I201768e32c997125472c6a005c4635141441451e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5499379
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
4929e1df
|
2024-04-24T14:09:59
|
|
Vulkan: Add feature flag for using event for image barrier
This is preparation CL that adds a feature flag for using VkEvent for
image barriers.
Bug: b/336844257
Change-Id: I01a7d779e16e2c259ddd05dca7338b3b18c30ba7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5484708
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
acb8b33f
|
2024-04-16T14:08:34
|
|
Vulkan: Enable 8/16 bit storage buffer extensions
The support for 8bit and 16bit storage buffers are exposed via
VK_KHR_{8,16}bit_storage vulkan extensions. Add checks for these
extensions and enable them if present.
The changes in FeaturesVk_autogen.h in the change are generated by
running the run_code_generation.py script.
Bug: angleproject:8676
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Change-Id: Idcda416e3eb6a735e021cd5bb0a182af341e9a16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5491781
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b74de557
|
2024-04-24T14:35:17
|
|
Vulkan: Add a feature related to shader subsets
On vendors that support VK_EXT_graphics_pipeline_library the shaders
subset of the pipeline can either be combined into a single pipeline
or can be decoupled into separate pipelines. Upcoming optimizations
require the ability to distinguish between the two options.
Add a feature declaring support for only the combined variant.
Bug: angleproject:8601
Change-Id: I44fb828d972ca6ebba5549819ce8e41645683e14
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5484673
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2905a6a6
|
2024-04-19T15:09:41
|
|
Vulkan: Fix read pixel to cached non-coherent memory
The bug here is that when we use cached non-coherent memory for image
read, we must wait until DMA to finish before calling invalidate().
Otherwise CPU pre-fetching might end up populate the cache line again
with old data between invalidate and DMA and causes CPU reads get the
stale data from cache. This CL moves invalidate() call after we wait for
copy to finish and removes requireCachedBitForStagingBuffer feature
flag.
Bug: b/335937565
Bug: b/315836169
Bug: b/324953979
Change-Id: Ie8a1854e17a5fe9c534c5102b2e0d51bd35c131a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5468597
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Cody Northrop <cnorthrop@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>
|
|
dc643d9b
|
2024-04-01T15:59:46
|
|
Vulkan: add feature control for client buffer merge
add feature control for client attribute buffer
merge. default is off to reduce memeory usage for
some application.
Bug: b/328301788
Change-Id: I5bfd39fb1ea656ebb29bd2dc21726b60bbc1a8d2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410942
Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@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>
|
|
21d124c4
|
2024-03-16T10:06:02
|
|
Vulkan: Remove support for pipeline cache control
For current and upcoming uses for pipeline caches the benefits of having
an externally synchronized pipeline cache is minimal at best. Remove
support for that and have all caches be internally synchronized by the
Vulkan driver.
Bug: angleproject:8601
Change-Id: Ic5d9740934641f61b527094aa301e27302b02a57
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5375102
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9bae5859
|
2024-03-13T10:55:18
|
|
Vulkan: Add blend factors to allow dithering to work
Previously, we had
- src: GL_SRC_ALPHA, dst: GL_ONE_MINUS_SRC_ALPHA
Now, this adds
- src: GL_ONE, dst: GL_ONE_MINUS_SRC_ALPHA
This showed up in app "com.inertiasoftware.justjigsaws".
Bug: b/328837151
Change-Id: I88208b1ed4dd050283d8d02cf31ccdcb3d02a444
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5369638
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0ed0de4f
|
2024-01-18T10:47:50
|
|
OpenCL/Vulkan: Add initial program build support
Introducing both clspv compiler lib integration,
and clBuildProgram support.
Internally we also add buildInternal() routine
to abstract compile, link, and build phases.
Output SPIR-V is also parsed internally via
parseReflection() so that we can extract
needed reflection information for CL runtime.
Bug: angleproject:8549
Change-Id: If0563f4bea7ed0e04a13ea7a46c125c811d9c2a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5303564
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cdf6220c
|
2024-02-25T05:12:21
|
|
Reland "Vulkan: Feature addition for QCOM foveated rendering extensions"
This is a reland of commit 72cf9915f561ca6ca72fa4b6c84c36bba815bf29
In the reland, cache the sample counts as VkSampleCountFlags type
and clamp framebufferColorSampleCounts with kSupportedSampleCounts
Also evaluate supportsImagelessFramebuffer feature before evaluating
supportsFoveatedRendering
Original change's description:
> Vulkan: Feature addition for QCOM foveated rendering extensions
>
> Add a new vulkan feature gating support for QCOM foveated rendering
> extensions and cache shading rates and sample counts of Vulkan ICD.
>
> Bug: angleproject:8484
> Change-Id: Id2925541098a605749f93ad5a54c885f4a4a2c66
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5322317
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8484
Change-Id: Ie831d27ecc0e1429a3fe365d7728f264496e234c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5328188
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a627dd89
|
2024-02-27T19:00:07
|
|
Revert "Vulkan: Feature addition for QCOM foveated rendering extensions"
This reverts commit 72cf9915f561ca6ca72fa4b6c84c36bba815bf29.
Reason for revert: Causing crashes on Win/NVIDIA
crbug.com/327027614
Original change's description:
> Vulkan: Feature addition for QCOM foveated rendering extensions
>
> Add a new vulkan feature gating support for QCOM foveated rendering
> extensions and cache shading rates and sample counts of Vulkan ICD.
>
> Bug: angleproject:8484
> Change-Id: Id2925541098a605749f93ad5a54c885f4a4a2c66
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5322317
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8484
Change-Id: I45764d8119388fa2edb3e08825957fbc811b31a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5328729
Auto-Submit: Brian Sheedy <bsheedy@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
72cf9915
|
2024-02-25T05:12:21
|
|
Vulkan: Feature addition for QCOM foveated rendering extensions
Add a new vulkan feature gating support for QCOM foveated rendering
extensions and cache shading rates and sample counts of Vulkan ICD.
Bug: angleproject:8484
Change-Id: Id2925541098a605749f93ad5a54c885f4a4a2c66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5322317
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e04b7c73
|
2024-02-17T10:42:56
|
|
Vulkan: Expand feature to enable sample usage for all AHBs
Rename forceSampleUsageForImageWithExternalFormat to
forceSampleUsageForAhbBackedImages and expand scope to force enable
VK_IMAGE_USAGE_SAMPLED_BIT usage flag for all AHB images irrespective
of the AHB usage requested by the app.
Bug: b/155487768
Change-Id: I81cc4b705339b6ff00d187faf37f66d1be1a2c8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5304997
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3fdf576a
|
2024-01-26T14:37:42
|
|
Vulkan: Workaround Nvidia driver bug with OpSelect
Bug: angleproject:8503
Change-Id: I4bd2580056df3d970a1316d0dbeaaad7590aa947
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5237873
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
341906d5
|
2024-01-22T10:19:25
|
|
Vulkan: Never delay device and queue selection
Previously, when multiple queue families where eligible, ANGLE delayed
the decision on which queue family to use and delayed device creation
until a window surface was created.
This assumption was never correct. The application may start rendering
to pbuffers or using EGL_KHR_surfaceless_context long before it creates
a window surface. So a queue may need to be chosen regardless of its
surface present capabilities. Once done, ANGLE has no mechanism to
change that queue should a window surface require a different queue.
This change drops the pretense to support multiple queue families
properly and makes ANGLE always choose the first graphics queue family
it encounters. So far, only MoltenVk seems to expose multiple graphics
queue families, and choosing the first one ultimately correct for the
purposes of presenting to a MacOS surface.
Bug: angleproject:8478
Change-Id: I8efbfe0c8036be5f9cee01eb657f83f85a4864fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5225081
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
295eece6
|
2023-12-26T17:28:04
|
|
Vulkan: Add feature to force enable sample usage
Add a feature that would force enable the
VK_IMAGE_USAGE_SAMPLED_BIT usage flag for an image with
external format, irrespective of the requested AHB usage.
Bug: b/155487768
Change-Id: Ie46012d6f905317cd42a69768b4d35b44db474c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5153131
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
40f4de8f
|
2023-12-15T10:17:32
|
|
Vulkan: Ensure we use cached memory for readPixels stagingBuffer
Previous CL crrev.com/c/5112759 does not solve the performance issue for
ChromeOS. The reason is that on more recent intel GPU, there is no
hostVisibleCachedCoherent heap. When we allocate staging buffer, we
specify CachedCoherent as the preferredFlags instead of requiredFlags.
This means we still end up getting UncachedCoherent since VMA tries to
respect coherent bits as first priority. This CL Changes CachedCoherent
to CachedPreferCoherent, and made Cached as required bit, thus ensures
the memory allocated is cached. Since coherent bit may not be honored,
thus we have to call invalidate/flush (which underline implementation
will check the bit and early out if no need).
Somehow on ARM GPU using cachedNonCoherent staging buffer causing many
test failures, even though we do call invalidate() after allocation, and
tests pass on all other GPUs. It almost indicates ARM driver have a bug
with invalidate() that it is not doing expected. But before I can be
sure and fixed, I added feature bit to keep ARM the old behavior, which
uses UnCached memory for readPixels which should suffer the performance
as well.
Bug: b/315836169
Bug: b/310701311
Change-Id: I1eec6105ce74275faa893b0206be8470f0cde72f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5122318
Commit-Queue: Charlie Lao <cclao@google.com>
Auto-Submit: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3439e421
|
2023-12-15T11:37:53
|
|
Vulkan: Remove AHB workaround for camera app
This is now fixed in camera app main branch. The workaround is removed
here.
Bug: b/239181279
Change-Id: I782baf7a42a8c9a897f1947d8b2f6feba606ce29
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5126931
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fb6b960c
|
2023-11-27T14:24:28
|
|
Remove GL_CHROMIUM_texture_filtering_hint
This was using an unregistered Vulkan extension to set the precision of
SwiftShader's internal filtering for the sake of Chrome. That's baked
in at build instead.
Bug: angleproject:8349
Bug: chromium:726075
Change-Id: I12849d2d29d99626f22a92ee9d74366f78658476
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063344
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3680a5dc
|
2023-11-17T13:51:07
|
|
Vulkan: Let program warmup continue passed link
The warmup task does not actually affect the link results, so there is
no reason to wait for it when the application queries the link status.
This change allows the warm up task to continue in parallel until the
program is used at draw time. This allows the warm up to be more
efficient when the link itself is not parallelized.
For applications that create programs in the middle of every frame, it's
still likely best to disable warm up (as the following immediate draw
will already effectively do the warm up).
Note that currently the warm up code in the Vulkan backend is not
completely thread-safe, and so the program still blocks on that task
before the first draw can happen (or the program is modified in any
way).
Bug: angleproject:8417
Change-Id: I0877fef39a0585c3279e32699ce817d4643d7cd6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5037538
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d842f3db
|
2023-11-29T06:53:58
|
|
Vulkan: add a disableSeparateShaderObjects feature
Dota Underlords uses one PPO and keeps swapping the attached program.
Though we get cache hit, the hundreds pipeline creation calls still
amount to non-trivial CPU overhead via ANGLE. The use of SSO has been
disabled by the app in certain cases, and this feature is added to
support entirely disabling SSO in ANGLE on all Vulkan backend impls.
Bug: b/309028728
Test: Dota Underlords easily hits target FPS on ANV and RADV
Change-Id: I54532975237218563b8750f1878a83e386fe776d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5073414
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
12cc04d0
|
2023-11-07T10:26:18
|
|
Vulkan: Workaround camera AHB's layerCount being random value
We are seeing AHB used by google's camera app has random value in the
layerCount. In my reproduced case, it is 0, which translates to
layerCount in the VkImage. Sometimes I am also seeing a huge number in
the layerCount as well. This causes problem in ARM driver that end up
with assertion and other problems that end up with crash later. We need
to root cause the underlying bug which is tracked by b/239181279. But
before we have an actual fix in AHB creation code, this CL forces
com.google.android.GoogleCamera AHB's layerCount to be 1 as a temporary
app specific bug workaround so that we can move forward to get camera
app up running with ANGLE.
Bug: b/309480316
Bug: b/239181279
Change-Id: I219f6f89863a2cb8dee6c5efb0812389272373ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5010082
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
cfc40d2b
|
2023-07-19T17:47:13
|
|
Vulkan: Adjust clear color precision for GL_RGB5_A1 FBO
When clear color has more precision than the framebuffer
format can hold, dithering is automatically applied on
some hardware.
This issue causes below dEQP tests to fail when the FBO
color attachment format is RGB5_A1:
KHR-GLES31.core.draw_buffers_indexed.color_masks
KHR-GLES32.core.draw_buffers_indexed.color_masks
Adjust the clear color precision for RGB5_A1 format to
workaround the issue.
We can remove this workaround once the vulkan driver
fixes the auto-dithering problem.
Bug: b/292282210
Change-Id: Ic3ffebd2d20c8782612619a60d1ec2cc6d613c22
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4937472
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|