|
1df3b59f
|
2024-10-30T16:40:51
|
|
CL/VK: PrintfBufferPointerPushConstant support
Bug: angleproject:442950569
Change-Id: I64edba5a04c2f1f2d3eb7bb34e6629f12269a69c
Signed-off-by: hoonee.cho <hoonee.cho@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916342
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
55063f5e
|
2024-11-06T09:26:38
|
|
CL/VK: ArgumentPointerPushConstant support
- use physical storage buffers instead of storage buffers
- add CLSPV compile options "-arch=spir64 -physical-storage-buffers "
- fix NonSemanticClspvReflectionArgumentPointerPushConstant logics
Bug: angleproject:442950569
Change-Id: I76a8c3fa6ea87c153022a5976f2914bd62cdfcf1
Signed-off-by: hoonee.cho <hoonee.cho@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916341
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
166c9e23
|
2025-09-05T12:52:38
|
|
Vulkan: Separate barrier data into its file
vk::Renderer includes a modified copy of kImageMemoryBarrierData. When
using VK_KHR_unified_image_layouts, even more of this data is modified
based on device features. Leaving kImageMemoryBarrierData in
vk_helpers.cpp runs the risk that it's accessed directly instead of
using the copy in vk::Renderer.
Bug: angleproject:422982681
Change-Id: I7e288ef0ac519c53842214fe934ba7b2474e1f9c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6927350
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7d1e4e16
|
2025-09-08T12:14:57
|
|
Manual Roll vulkan-deps from 5107e9eef1bc to af8c2ea541d3
https://chromium.googlesource.com/vulkan-deps.git/+log/5107e9eef1bc..af8c2ea541d3
Also rolling transitive DEPS:
https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/f6940d2b8a9dc6de805c48eb3e8bafd65118b25c..337fdb6a284fe7f7e374a14271f8e20e579f3263
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/dc22b23433ab3a390b4c75710836691fdb6f11f4..af5376ef7061716a95ab2bc321aeae4f77958a28
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 angle-team@google.com,yuxinhu@google.com on the revert to
ensure that a human
is aware of the problem.
To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: angleproject:443133082
Tbr: yuxinhu@google.com
Change-Id: I577cc5555b99aa1f903313a83d96ed755634dd79
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923245
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
ebf29178
|
2025-09-05T12:15:23
|
|
Vulkan: Rename ImageLayout to ImageAccess
This enum really describes how the image is accessed, including what
VkImageLayout it should be in for that access.
With VK_KHR_unified_image_layouts, it makes little sense to call this
enum ImageLayout anymore, given how almost all of them will have
VK_IMAGE_LAYOUT_GENERAL.
Bug: angleproject:422982681
Change-Id: Id0ea107d339457e90b7a167292b75211eb42f803
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918518
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
e9a30817
|
2024-10-28T14:54:38
|
|
Vulkan: Support vulkan physical addr in vk_helpers
- Add extraAllocationInfo for physical addressing
in AllocateBufferMemory/AllocateImageMemory
- Add getDeviceAddress which calls vkGetBufferDeviceAddressKHR
API to get device address
In CL, All the physical addressing supports are enabled when the
runtime flag "supportsPhysicalAddressing" is set.
Bug: angleproject:442950569
Change-Id: I1658062b3f031b3d55923937947cece0c1b67d67
Signed-off-by: hoonee.cho <hoonee.cho@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916340
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
26926a8b
|
2025-09-08T13:07:49
|
|
Vulkan: Rename CommandBufferAccess to CommandResources
CommandBufferAccess was named as such to indicate "what the command
buffer is going to access". The new name indicates "what resources are
the following command going to use".
The rename is happening to reduce usages of "access", in preparation for
introducing another "access" which can be confused with this.
Bug: angleproject:422982681
Change-Id: Ib072cde8533515ba76734b6426b4d673cb07cc45
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923331
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0042de5f
|
2025-09-08T12:04:33
|
|
Vulkan: Rename ImageAccess to ImageFormatSupport
`ImageAccess` to be used for other purposes. Variable name `access` was
also identical to variables of `CommandBufferAccess`.
Bug: angleproject:422982681
Change-Id: I69b4d2bd773f1c5ff0fb15c7b611efd1f736061d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923330
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2207a0a2
|
2025-09-04T17:32:12
|
|
Remove multisampledRenderToTextureEXT from D3D
Partial implemented was never completed, nor utilized for XR
scenarios.
CL removes the implementation
Bug: chromium:443111620
Bug: angleproject:433462527
Bug: angleproject:42261786
Bug: angleproject:42263509
Bug: angleproject:42263677
Change-Id: If95581d5f9b0e43be96ef6913fe73f547e0b5501
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6915970
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.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>
|
|
dbbae298
|
2025-09-05T12:39:01
|
|
Vulkan: Remove debug name from ImageMemoryBarrierData
It was always there, but never became useful.
Bug: angleproject:422982681
Change-Id: I409c061b07840a1cc9b85220fcbe792944358dba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6919463
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
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>
|
|
cb6b73d2
|
2025-09-05T10:37:28
|
|
Temporarily disable FP16 float uniform transform feature
Some webgl_conformance_vulkan_passthrough_tests are failing with the
shaders generating 16-bit for lower precision uniforms. Temporarily
disable the feature while investigating the root cause.
Bug: chromium:443182226
Bug: chromium:443182234
Bug: angleproject:405795981
Change-Id: I62850f5dc979912a0605edb1aea5b74774b4421d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6918101
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
fecb02db
|
2025-08-28T12:08:34
|
|
Vulkan: Reduce onVertexBufferChange/onVertexAttributeChange
When we loop each attribute we end up calling onVertexBufferChange or
onVertexAttributeChange. For most drivers
supportsVertexInputDynamicState is enabled. This means we are repeatedly
check feature bit and set DIRTY_BIT_VERTEX_BUFFERS repeatedly for each
dirty attributes. This CL moves these calls out of attribIndex for loop.
ContextVk::onVertexArrayChange() now get called directly from
VertexArrayVk::syncState() so that we only go through most logic only
once if supportsVertexInputDynamicState is enabled.
Bug: b/439073246
Change-Id: Ib1316560ef686222e72b4d7ad32c63b043dfbaa5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896934
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8bae2565
|
2025-08-22T14:38:23
|
|
Vulkan: Improve VertexArrayVk::syncState
VertexArrayVk::syncState often time shows up the biggest single API in
simpleperf. For example, in tower_of_fantasy it is 7.9% of all CPU time
in libANGLE. This function also uses macros which made it hard to debug.
This CL removes the usage of macros which makes code much easier to
handle. The other real problem is that we are repeatedly calling
syncDirtyAttrib() function for disabled attributes. This CL breaks the
dirty bits into bindingDirtyBits and bufferDataDiryBits and
attribDirtyBits. Only attribDirtyBits will end up doing the actual state
sync. All other dirty bits will just turn them into attribDirtyBits.
Also disabled attributes will be looped separately. This simplification
makes it impossible to have duplicate state syncs since we only call
sync*Attrib at the end of function. By splitting syncDirtyAttrib into
syncDirtyEnabledAttrib/syncDirtyDIsabledAttrib/syncNeedsConversionAttrib,
we also moved the if check from syncDirtyAttrib (which is called within
for loop) to syncState.
With this CL, simpleperf shows this function has reduced from 7.9% to
5.9%.
Bug: b/439073246
Change-Id: I99b5ff0b34a5992e31541d2e9cd81ff5c9dda716
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6876527
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
1c275402
|
2025-09-04T12:38:29
|
|
Roll vulkan-deps from 8415cc875465 to 5107e9eef1bc (8 revisions)
* Skipped some WRITE-AFTER-READ hazards related to the following:
* vkCmdDraw() -> vkCmdCopyImageToBuffer()
* vkCmdDrawIndexed() -> vkCmdCopyImageToBuffer()
https://chromium.googlesource.com/vulkan-deps.git/+log/8415cc875465..5107e9eef1bc
Also rolling transitive DEPS:
https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/3289b1d61b69a6c66c4b7cd2c6d3ab2a6df031e5..9d764997360b202d2ba7aaad9a401e57d8df56b3
https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/345804025b4cd32ff6e1959cc6c0280927c2e9dd..055b25c02fa80cdcca77fcf94ab64a02f02d9199
https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/44cf554790020ee44355dde75f0aff79141cab3c..f6940d2b8a9dc6de805c48eb3e8bafd65118b25c
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries/+log/a528f95dc2f92bdd83c0c32efe2d13c806428c9d..34edde1191548c51cf4958f2dc6772bf7f76c8cd
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/54e4c34d401b5b4c5abc5dd04804f7b02a8bc0c0..dc22b23433ab3a390b4c75710836691fdb6f11f4
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 abdolrashidi@google.com,angle-team@google.com on the revert to
ensure that a human
is aware of the problem.
To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: angleproject:443095908
Tbr: abdolrashidi@google.com
Change-Id: I305b9dc0089ac58be610b99cbf61112c33a03d7d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6916334
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
c1cdc2b5
|
2025-08-22T15:23:58
|
|
Transform SPIRV to use 16-bit float for lower precision uniforms
This change adds a ShCompileOption flag transformFloatUniformTo16Bits.
The flag is turned on in vulkan backends where VK_KHR_16bit_storage
extension is supported, and uniformAndStorageBuffer16BitAccess feature
is supported. When the compiler flag is turned on, in the generated
SPIRV, float data types in mediump and lowp uniforms are transformed
from 32-bit to 16-bit. The 16-bit float uniform data is converted to
32-bit with OpFConvert instruction upon loading in SPIRV, this is to
minimize the changes in OutputSPIRV.cpp. The converted variable is
decorated with RelaxedPrecision, so that SPIRV compiler should be able
to treat the converted variable as 16 bits, and the hardware can
still benefit from reduced precision floats.
The frontend is also notified such SPIRV shader changes by setting
the isFloat16 bit in CollectVariables() step, and the frontend will
transform float uniform data from 32-bit to 16-bit before storing the
data into memory. That way, the uniform data that SPIRV shader reads
matches with the uniform data type transformed in the SPIRV shader.
This change also updates some test code to allow relative 2^-10
precision wiggle room for mediump uniform floats. This is valid
according to spec:
https://developer.arm.com/documentation/102502/0101/Shader-precision
Bug: angleproject:405795981
Bug: angleproject:440941211
Change-Id: I05db7f5ef744df513fbad87cfed8aa173890ec26
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6851560
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
6888dfb1
|
2025-09-03T13:40:33
|
|
Vulkan: Fix missing vkGetImageSubresourceLayout2EXT
... with angle_shared_libvulkan=false
Bug: angleproject:352364583
Change-Id: I6c81aefc6b074d45103a514ddd6d55192c2f660b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6912583
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
778969f2
|
2025-08-28T15:54:35
|
|
[WebGPU] Fix ImageHelper::flushSingleLevelUpdates
This change modifies ImageHelper:flushSingleLevelUpdates to
only send a flush command to the context once, instead of in each
iteration of the loop if there are multiple texture uploads.
This also means that the last texture upload is guaranteed to be
flushed, as otherwise that texture could be staged in the queue,
but a different command could redefine texture levels which
would delete the underlying texture handle but not the command
queued for that texture.
Bug: angleproject:438268609
Change-Id: I2d49b15fc921829175e99bdb550dddbd81179061
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885223
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
|
|
b449a24a
|
2025-08-28T14:23:00
|
|
GL: Disable BaseVertex and BaseInstance extensions on Linux
This is a speculative fix for some rendering issues seen on Linux.
Client data also appears to be broken when using BaseVertex functions,
this will disable the functions until those issues are fixed.
Re-add the check for GL_ARB_base_instance, this was likely not the
culprit.
Bug: chromium:427956856, angleproject:431097618
Change-Id: If48121d3c4819a46091de4360a2159b9bf14313e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6897307
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a3505ae6
|
2025-08-28T13:47:05
|
|
Prefer non-WARP device for angle_end2end_tests
When we have both WARP and a real GPU, but WARP comes first,
angle_end2end_tests always shows the active GPU is 0, and always uses
WARP for tests. This CL prefer the non-WARP device instead.
Bug: angleproject:441816895
Change-Id: I787b25f9ff6ad0a98e5fbc445b580b897bd52033
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896220
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
2d28e33f
|
2025-08-28T23:50:51
|
|
Avoid some large copies in range-based for-loops
Avoid copies as detected some time ago by a clang compiler plugin,
typically this indicates a missing & in the range-based for-loop.
-- For the vector initialize code, see https://godbolt.org/z/4PWseve5P
as to why I think a copy-assign is more efficient than a copy-
construct followed by a move-assign.
Bug: b/415953694
Change-Id: I2cf9f713277d811127834235507ee075c4a72956
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6898417
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Tom Sepez <tsepez@chromium.org>
|
|
1e3e4eb7
|
2025-08-30T17:25:20
|
|
FrameCapture: Don't issue Begin/End for Timestamp queries
Timestamp queries are issued with glQueryCounterEXT rather
than glBeginQuery/glEndQuery. This CL updates how we generate
timestamp queries in MEC.
Before this, we were getting the following errors:
API, Error, High: Error:glBeginQuery::<target> is not an accepted value
API, Error, High: Error:glEndQuery::<target> is not an accepted value
Test: Minecraft Vibrant Visuals trace
Bug: b/442154222
Change-Id: Ib6dc01c3b57afcbebfdefa38e6abc883564ea6bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6903038
Reviewed-by: Mark Łobodziński <mark@lunarg.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
|
|
3d08d885
|
2025-08-27T23:27:51
|
|
Log sanitized message in InfoLog::appendSanitized().
Currently, after producing a sanitized version, the unsanitized
string is logged.
-- convert away from char* arguments while at it.
Bug: b/441583909
Change-Id: I9ee91d303df6c5b874fd1971347b9db3ba03f51c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6893268
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6f0337a0
|
2025-08-28T23:13:22
|
|
Avoid some needless c_str() calls.
Remove conversions from string -> char* -> string, as detected some
time ago by a clang compiler plugin. Typically, this occurs when
passing a c_str() result to a function that expects a string argument.
Bug: b/412730353
Change-Id: I1d9c83e9ed5c4900eec266e71f534661f0f3d4d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896657
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
28682948
|
2025-08-14T15:20:16
|
|
Update setFloat and getFloat APIs to handle 16-32 bit transformations
This change checks that if linkedUniform.isFloat16() is true, then
transform 32-bit float to 16-bit half float before writing the data
to memory, and transform 16-bit half float to 32-bit float after
reading the data from memory. Given that we did not change buffer
layout, and the spirv requirement with matrix component alignment,
we have to copy transformed data row by row / col by col, or element
by element.
This change is no op, as none of the linkedUniform.isFloat() bit is set
to true. The change will take effect in the future change when we add
the compiler code that set linkedUniform.isFloat() to true.
Bug: angleproject:405795981
Change-Id: I72b74eb340dae723501038875c3706ad2c1cc3f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6851558
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
e64b1e54
|
2025-08-29T15:51:30
|
|
FrameCapture: Restore end of trace capture log
The log was accidentally removed by:
Add long ANGLE traces feature
https://crrev.com/c/angle/angle/+/6476924
That was originally added in:
FrameCapture: log end of trace capture
https://crrev.com/c/angle/angle/+/5557966
Bug: angleproject:343190307
Bug: angleproject:425728227
Change-Id: I68125981a3841c3d5e25aeaab3d792b8b047182a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6898285
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
4983b4c9
|
2025-05-14T13:54:47
|
|
CL/VK: Track both read/write usages of mem objects
Track both the read and write usages when determining the need for
barrier insertion.
Bug: angleproject:441240590
Change-Id: I2a70905dbadd9bdba6fe6b83dd980963b6380a79
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885851
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ce158355
|
2025-05-06T17:11:33
|
|
CL/VK: Add isReadOnly() query for CLKernelArgument
A new helper function `isReadOnly()` is added to CLKernelArgument. This
makes the determination of memory dependencies more flexible.
As a result, updated the `addMemoryDependencies` function to take in the
write usage boolean.
Bug: angleproject:441240590
Change-Id: I8826f88b7ff84ee7c689a68df4c5121ee9f12619
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885850
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
2a44be85
|
2025-05-28T15:17:33
|
|
CL/VK: Update the HostTransferConfig to supported configs
Setup HostTransferConfig constructors to enable only supported
configurations.
Bug: angleproject:441471275
Tests-Passing:
- ocl_cts.test_mem_host_flags
- ocl_cts.test_basic readwritebufferrect
- ocl_cts.test_buffers
- ocl_cts.test_allocations
Change-Id: I19afab8f66d2b025b532b42de161557b9dfbf563
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6892626
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
0efe1a44
|
2025-05-16T16:23:10
|
|
CL/VK: Use UHP buffers for host transfer config
We setup staging copy command for host side enqueue commands - eg.
enqueueWriteBuffer. Setting CL_MEM_USE_HOST_POINTER (UHP) buffers as
defaults for these staging ops so that zero-copy can be leveraged if
supported.
Bug: angleproject:441471275
Tests-Passing:
- ocl_cts.test_buffers
- ocl_cts.test_allocations
- ocl_cts.test_mem_host_flags
- ocl_cts.test_basic bufferreadwriterect
Change-Id: Ifc584652b513f0ed0633a8d0383b244f53d57363
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6892625
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cf28f60d
|
2025-08-26T19:25:22
|
|
Avoid c-style string arguments to writeFile().
Demonstrate how std::string_views can be used to make code simpler
and safer, since all the callers already have std::strings.
Bug: b/436880895
Change-Id: I0f9d4d95925e684c83eb10c2a1fbab22df55c2d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6886033
Auto-Submit: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e842b5f8
|
2025-05-06T14:38:27
|
|
CL/Vulkan: Zero-copy support added for CL Buffers
- Used VK_EXT_external_memory_host and VK_KHR_external_memory extensions
- Added interfaces to CLBufferVk class for validating zero-copy ability
- Added logic in CLBufferVk::create to use zero-copy if eligible
- Added new HostExternalMemory class to provide utility functions
- Added VkPhysicalDeviceExternalMemoryHostPropertiesEXT for querying
Tests-Passing (having usage of CL_MEM_USE_HOST_PTR):
- ocl_cts.test_api
- ocl_cts.test_basic
- ocl_cts.test_buffers
- ocl_cts.test_mem_host_flags
Bug: angleproject:441471275
Change-Id: I296e709a4f67911dcd6d0ae89750e8e0262625f4
Signed-off-by: Shyam Manohar <s.manohar@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6892624
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
a4e0bacc
|
2025-08-28T16:41:09
|
|
Avoid dangling pointer in Context11::popGroupMarker().
Fortunately, the pointee is unused, but move the string from the
marker stack before destroying it during a pop() of the stack, so
that its c_str() may live through a call to endEvent().
-- Do the same for Context9::popGroupMarker().
Bug: b/441729484
Change-Id: Id05aa92529ecc8938282273e68d95ac51966d229
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6896927
Auto-Submit: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1ed999ea
|
2025-08-25T16:02:01
|
|
Vulkan: Move sampler cache to share group
The sampler cache (and the adjacent yuv-conversion-info cache) were in
vk::Renderer, but they were not thread safe.
Bug: angleproject:440364873
Change-Id: I2dc034f2db400f680ca91a9fde509d90f90c957e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6870736
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
cdf428a2
|
2025-04-01T10:24:08
|
|
CL/VK: Update Samsung preferred/native vec widths
Update CL_DEVICE_PREFERRED_VECTOR_WIDTH_* and
CL_DEVICE_NATIVE_VECTOR_WIDTH_* for Samsung.
The values may vary depending on the vendor.
Updating only the values for SAMSUNG here.
Bug: angleproject:406022413
Change-Id: Iad575298a11cfb41e620ab9cfd5f970eb6ea0b55
Signed-off-by: jh.eun <jh.eun@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6386421
Reviewed-by: Austin Annestrand <a.annestrand@samsung.com>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a02670d6
|
2025-08-26T20:41:16
|
|
Move unsafe buffers inside header guard macros
While this is exactly opposite of what Chromium has chosen to do,
there is an issue with clang-format trying to indent preprocessor
directives four spaces relative to include guard. This is because
Angle's .clang-format file specifies IndentPPDirectives: AfterHash
but Chromium's does not. The current placement is sufficient to
throw off clang-format's guard detection since the guard macro no
longer covers the entire file.
Bug: b/436880895
Change-Id: Ic6b99c8cef6213939cdf9b42af8730e1eb423065
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885892
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
25390156
|
2025-08-21T00:13:19
|
|
Suppress unsafe buffers on a file-by-file basis in src/ [1 of N]
In this CL, we suppress many files but stop short of actually
enabling the warning by not removing the line from the
unsafe_buffers_paths.txt file. That will happen in a follow-on
CL, along with resolving any stragglers missed here.
This is mostly a manual change so as to familiarize myself with
the kinds of issues faced by the Angle codebase when applying buffer
safety warnings.
-- Re-generate affected hashes.
-- Clang-format applied to all changed files.
-- Add a few missing .reserve() calls to vectors as noticed.
-- Fix some mismatches between file names and header comments.
-- Be more consistent with header comment format (blank lines and
trailing //-only lines when a filename comment adjoins license
boilerplate).
Bug: b/436880895
Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
616a341b
|
2025-08-26T13:56:40
|
|
Vulkan: Set EGL_NATIVE_VISUAL_ID for EGL_KHR_platform_gbm
Spec requires EGLConfig on GBM platform to report a GBM color format in
EGL_NATIVE_VISUAL_ID. Previously this field was left unset. This change
ensures compliance by assigning the appropriate GBM color format.
Bug: angleproject:7829
Change-Id: I6c5a23374824c444e0de0b6592ea31eb855722e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6882716
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
611f9ac0
|
2025-08-20T16:10:13
|
|
Lower the cap of max element index
Currently, ANGLE follows vulkan spec and returns UINT_MAX -1
for GL_MAX_ELEMENT_INDEX. However, ANGLE stores vertex index
in int, so even if we use index a little less than the limit,
ANGLE would still catch the overflow error. Modify the cap to
2^30 - 1 to make it safer. An end2end test is also added.
Bug: angleproject:440227026
Change-Id: Ie089c9847f3908f0e8a1b7c4b83c8fea1cde262e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6870270
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
677d8281
|
2025-08-25T15:59:46
|
|
Vulkan: Pass ContextVk to view-creation functions
In preparation for moving the ycbcr conversion cache to the share group.
This change is a no-op.
Bug: angleproject:440364873
Change-Id: I0c18062259b07813dd04ec02650bb6fab48947ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6879204
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
2b45ec65
|
2025-08-24T12:26:12
|
|
CL/VK: Fix default LWS when GWS is less than 64
In the case where LWS is NULL and GWS is smaller than 64,
the runtime produces a useless uniform region info.
Thus, this change clamps LWS to the GWS to avoid this edge-case.
Bug: angleproject:42267067
Change-Id: I418c7d503918f4f082825924b463c266bfd862dc
Signed-off-by: kyongjoo.oh <kyongjoo.oh@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6877794
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
fee2bf73
|
2025-08-25T15:54:50
|
|
Vulkan: Limit EGL_NV_context_priority_realtime to Android
Device creation fails on Linux when a REALTIME queue is requested,
likely due to permission issues.
Bug: angleproject:397474813
Change-Id: I0451db1dac9cbf2795439b251274f1a8057cbd6e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6880530
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5fed937e
|
2025-08-24T12:21:53
|
|
CL/VK: Add a compile option "-inline-entry-points"
When processing the -cl-std=CL2.0 option,
ensure that the processed options string includes
both "-cl-std=CL2.0" and "-inline-entry-points".
This change addresses a CLSPV's compiler option check failure
where the -inline-entry-points flag was not being added
when the -cl-std=CL2.0 (using generic address space) was specified.
Bug: angleproject:440814992
Change-Id: Ie3e8907e367f21830e58cd5c405de06ba2cbd1da
Signed-off-by: hoonee.cho <hoonee.cho@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6877793
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d65058be
|
2025-08-18T11:01:11
|
|
Vulkan: Add support for GL_EXT_fragment_shading_rate_primitive
Add support for built-in GL_EXT_fragment_shading_rate_primitive and
tests.
Bug: angleproject:397255625
Change-Id: I0f37a87a73e869a91e39402f01e53166b359ec3c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6850353
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Panfeng Hou <panfeng.hou@arm.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
0af6e4ee
|
2025-08-13T06:16:01
|
|
Vulkan: Check format compatibility to enable mip levels
If redefining the texture level is needed while respecifying the
image storage, the base level could be incompatible with the max
level count.
Enabling the whole level count can cause a null pointer dereference
when copying an image that does not support `pixelReadFunction`.
To handle the problem, this CL checks the format compatibility and
enables only the effective base level.
Bug: b/435727832
Test: angle_end2end_tests --gtest_filter=DXT1CompressedTextureTest.*
Test: angle_end2end_tests --gtest_filter=Texture2DTestES3.*
Change-Id: I01060332f282ef9b2856390d0d7296811a464795
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6813835
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
51cffa97
|
2025-08-13T14:23:51
|
|
Implement EGL_NV_context_priority_realtime
In this extension, new attribute value EGL_CONTEXT_PRIORITY_REALTIME_NV
is accepted for EGL_CONTEXT_PRIORITY_LEVEL_IMG. In ANGLE,
this extension should depend on VK_EXT_global_priority and
VK_EXT_global_priority_query. The implementation of creating device
queue is also modified for this new attribute value. New end2end
test is added to check if this new attribute works.
Bug: angleproject:397474813
Change-Id: I68316fe371f5a495dbc78b106fc89787be18e086
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6857673
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
061a43c6
|
2025-08-13T16:35:20
|
|
CL/Vulkan: Implement cl_khr_priority_hints
cl::CommandQueue contains queue priority from
clCreateCommandQueueWithProperties.
Similar to EGL_IMG_context_priority, a queue with a pre-assigned
priority is selected when submission.
Bug: angleproject:433980937
Tests-Passing: OCLCTS.test_api queue_hint
Change-Id: I3a7bcc62e5d8186b51f771ab2c01cc18ddfcd195
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785088
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.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>
|
|
d4d42356
|
2025-08-22T11:30:42
|
|
Remove the duplicated branch
There is no code difference in the if and the else branches,
remove the duplicated branch.
Bug: angleproject:405795981
Change-Id: If593476d2b5cd02567ed1896625072128cf21b0f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6876346
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
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>
|
|
01cfb98f
|
2025-08-14T14:17:28
|
|
Add a new property to LinkedUniform struct
The new property isTransformedFloat will be used by front end
API to determine if we should transform 32-bit float to 16-bit float
before writing to memory, and transform 16-bit float to 32-bit float
after reading from memory. The property value will be passed from
UsedUniform (child struct of ShaderVariable) object in
UniformLinkder::getResults().
This CL is no op.
Bug: angleproject:405795981
Change-Id: Ic4908712f5fa56cb657206a25d9d618b51ac6322
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6851554
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
86a8d11c
|
2025-08-11T16:45:39
|
|
Metal: Fix potential incorrect format used for texSubImage
TextureMtl caches the most recent format used for a texture
redefinition in mFormat. During subImage calls, this format may not be
the same as the image being uploaded to.
Pass ImageDefinitionMtl to these functions which reference mFormat, it
contains the format of the image being updated.
MacOS OpenGL is skipped because the driver generates errors in
glCompressedTexImage2D.
Bug: chromium:435683799
Change-Id: Idec6f71870c2d376cad3a5e3628b957009bdced9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6838878
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6c160cad
|
2025-08-04T12:32:36
|
|
CL/Vulkan: cl_khr_external_memory extension (pt.1)
- 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: Idff08808bc0227b5f98b84c2086b68541665146d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785087
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
03068e0c
|
2025-08-20T17:36:22
|
|
[WebGPU] Implement direct copy for images.
This CL implements CopyImage specifically in cases
where the source is the same size and format as the
destination.
Bug: angleproject:438268609
Change-Id: Icf5f3685bb2f49874d996883c839515314f1c189
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842317
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6ff016fb
|
2025-03-31T09:52:14
|
|
CL/Vulkan: Update caps for image1d_buffer max size
Updated max number of pixels for a 1D image created
from a buffer object to come from VK implementation.
Bug: angleproject:406022415
Change-Id: I56e9821895245c3a3655ca0c4afbe49ed89baded
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6386422
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
68baeeeb
|
2025-08-12T15:51:07
|
|
State: avoid GCC -Waddress by using constexpr null-check helper
GCC with -Waddress warns that the static_assert comparing
`handlers[0] != nullptr` is always true when MakeDirtyObjectHandlers()
fully initializes the array. During constant evaluation, handlers[0]
is replaced with the specific member function address
(&State::syncActiveTextures), which can never be null, making the
comparison tautological.
This change replaces the direct `handlers[0] != nullptr` check with a
constexpr helper that iterates over all handlers and verifies none are
null. By comparing each element in a loop, the check still runs at
compile time (constexpr), but avoids a direct “function address vs
nullptr” pattern that triggers -Waddress.
BUG: angleproject:438226513
Change-Id: Iaa8441000f8b2aa28c44d17730ca223fd4d4595b
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845477
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
39265327
|
2025-08-13T08:05:24
|
|
Fix BindDescriptorSetParams bit-field size and -Wpadded warning
Replace pipelineBindPoint : 8 with full VkPipelineBindPoint to hold all
enum values. Reorder members and adjust bit-field widths to pack within
32-bit units, adding explicit padding to eliminate compiler-inserted
padding and silence -Wpadded.
BUG: angleproject:438226513
Change-Id: I8950fcb10d5796bd8485791f63980a2905179324
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845479
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1622d4ad
|
2025-08-13T07:22:13
|
|
Fix -Wparentheses in unlockAndRelease
Add parentheses around (valid && owns_lock()) to clarify the intended
grouping and silence GCC -Wparentheses warning.
BUG: angleproject:438226513
Change-Id: I0d4f3e0153c277c96ec85f255f844bab085f9550
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845478
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3474d4f3
|
2025-08-13T08:13:31
|
|
Guard overlayVk->onPresent call in drawOverlay
GCC warns "'this' pointer is null" (-Wnonnull) when overlayVk could be
null at the call site. Wrap the call with an explicit null check to
avoid dereferencing a null overlay and silence the warning.
BUG: angleproject:438226513
Change-Id: I3c719d703277c0a888eac9fb9edaaac77cf76a85
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845481
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7febacfe
|
2025-08-13T08:10:11
|
|
Remove unused compressionProp in TextureVk::initImage
compressionProp was declared and sType initialized but never used,
triggering -Werror=unused-but-set-variable with GCC. The query path
uses compressionInfoVar instead, so drop the dead variable and its
initialization.
BUG: angleproject:438226513
Change-Id: Ib81f418a570b1a7fd858eec4cee4250db49cdd08
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845480
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4c834956
|
2025-04-09T20:30:43
|
|
CL/Vulkan: Add fp16/64 to extension list if supported
The checks for fp16 and fp64 support are already setup on the vulkan
backend and clspv side. Add them to the reported extension list.
Also added "-d" flag to bruteforce smoke to toggle
off 64-bit precision testing
(i.e. just test single precision in smoke for now)
Bug: angleproject:433980941
Change-Id: Icbbde7500cf43e5c0a256411f001252bfec5ad24
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785092
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
806c80ec
|
2025-08-14T13:41:58
|
|
Add a new ShaderVariable struct property
Add a new ShaderVariable struct property isTransformedFP16FloatUniform.
This property will be set by compiler when the corresponding shader
variable data type in shader code is transformed from 32 bit to
16 bit. The property value be later passed to LinkedUniform so that
the frontend knows if it should transform the data from 32 bit to 16
bit before writing to memory, and if it should transform the data
from 16 bit to 32 bit after reading from memory.
This change is no op.
Bug: angleproject:405795981
Change-Id: Iaae15baa8ab9f7c3295071fa1e1ab04752bd69bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6852396
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
240f6af8
|
2025-08-12T14:32:40
|
|
Capture/Replay: Pick up API SSBO binding changes
GenerateLinkedProgram pulled uniform block bindings from
inShaderBindings, but for trace this does not pick up API-side
changes to the bindings with glUniformBlockBinding calls for
example, resulting in missing geometry in some games.
Test: angle_trace_tests --gtest_filter=*onmyoji
Bug: b/438231427
Change-Id: I1b95c004c4fd856dc8b3a91cdef3e9251a275ca6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842217
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|
|
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>
|
|
2eef3701
|
2025-08-11T20:25:42
|
|
FrameCapture: Handle null texture in MEC
When interating through a UnsafeResourceMapIter, we need to
check for null entries before dereferencing.
Test: Fortnite MEC
Bug: b/180418810
Change-Id: I0dc234234f9bb219026b2b67febb32e8af19e8b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6839286
Reviewed-by: Xiang Wang <xwxw@google.com>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Xiang Wang <xwxw@google.com>
|
|
cfeea900
|
2025-08-12T17:23:32
|
|
Vulkan: Don't require COLOR_ATTACHMENT_BLEND_BIT for YUV format
The only way to render to yuv texture is via EXT_yuv_target, but
EXT_yuv_target spec
https://registry.khronos.org/OpenGL/extensions/EXT/EXT_YUV_target.txt
explicitly said you have to disable blend: "Blending applies only if the
color buffer has a fixed-point format and non YUV space format color
buffer.". Thus when we check if format supports rendering, we should
exclude VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT if its YUV format.
Bug: b/432398245
Change-Id: If5bfa58db30465ab707f63f34dd6487d8a03652f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6843926
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9d1edb4e
|
2025-08-08T18:21:03
|
|
Fix the assert on texture target to allow GL_TEXTURE_CUBE_MAP_ARRAY
Add anend2end test to verify glCopyImageSubData works.
Bug: b/419863436
Test: TextureCubeTestES32.CopyImageSubDataCubeMapArray
Change-Id: I2a569680ed20f05b4182045cb4bdf08d4c66d8df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6832639
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Xiang Wang <xwxw@google.com>
|
|
5fb77159
|
2025-08-12T15:21:25
|
|
Add stubs for GL_ARM_texture_unnormalized_coordinates
Bug: angleproject:352345942
Change-Id: I05e2b0c83f07bfe35eb58fc657b834f6253d4cb9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6839660
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shufen Ma <Shufen.Ma@arm.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
316e6831
|
2025-08-08T14:14:20
|
|
Vulkan: Support KHR versions of surface/swapchain_maint1
They are straight promotions of the EXT versions of the extensions.
Bug: angleproject:430106352
Change-Id: I889dfda99d8ad35de1672914e7cc73b2879be6a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6832392
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
555b2328
|
2025-08-08T13:32:13
|
|
BindVertexBuffer should pick up buffer change in other context
Buffer is modified in the first context and calling glBindVertexBuffer()
of the same buffer on the second context should pick up the buffer
changes made in first context.
Bug: b/433331119
Change-Id: I694f66b38b11b87e0efa8d9b939f8384120823af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6830125
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
41e44587
|
2025-08-06T20:04:23
|
|
BufferBindingMask in VertexArray::onBufferChanged are same buffer
The bufferBiningMask bits received from VertexArray::onBufferChanged()
must point to the same buffer, in case of one buffer is bound to
multiple binding points. We can do some minor optimization here when we
loop the BufferBindingMask bits: We only need to calculate hasConflict
once when we call updateCachedTransformFeedbackBindingValidation().
Bug: b/433331119
Change-Id: I9f7cfa543deb46cd369915293b97f5d3122e1708
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6826782
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
d63cff37
|
2025-08-06T13:31:02
|
|
Fix bug when rebind the same buffer not pick up the change
Buffer is modified in one context and rebind the same buffer on the
second context should pick up the buffer changes.
Bug: b/433331119
Change-Id: I8085fe826c339692881f2d3d6515efb19bbc4a88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6825767
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
7c8e357c
|
2025-07-15T17:24:25
|
|
Fix NULL handling in glGetAttachedShaders and ShaderPrecisionFormat
Fix the case where passing NULL to the shaders parameter in
getAttachedShaders and to the range and precision parameters in
getShaderPrecisionFormat would trigger assertions.
Bug: angleproject:431900689
Change-Id: I0d01bbb0d13f9a4704b47066c85ac7c1368534a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6733749
Auto-Submit: Tingwei Guo <tingwei.guo@arm.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
d8dc3cc2
|
2025-08-02T12:02:20
|
|
Remove shared context lock from glVertexAttrib{I}Format
This CL removes shared context lock from glVertexAttribFormat() and
glVertexAttribIFormat() APIs, since they no longer access anything
outside VertexArrayPrivate. The main problem I had run into is
validation code. Before this CL, ValidateIntegerVertexFormat() needs
context's mStateCache for mCachedVertexAttribTypesValidation and
mCachedIntegerVertexAttribTypesValidation. Given these two cached value
are constant after initialization, in this CL, I have moved them to
PrivateStateCache. PrivateStateCache argument is added to
ValidateVertexAttribFormat() and ValidateVertexAttribIFormat() to get
them access to mCachedIntegerVertexAttribTypesValidation.
Bug: b/433331119
Change-Id: Ifc3fbed32b4d3722c335dd2c393bc6519ed0b544
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6822032
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
c39f1d0f
|
2025-08-01T15:44:11
|
|
Move updateCachedTransformFeedbackBindingVali* to VertexArray
Since updateCachedTransformFeedbackBindingValidation needs buffer
argument, this is now moved from VertexArrayPrivate to VertexArray class
to make it obvious. Also mCachedTransformFeedbackConflictedBindingsMask
is per bindingIndex, so I have changed it from AttributeMask to
VertexArrayBufferBindingMask.
Bug: b/433331119
Change-Id: I321267637ba661b18ef236260a17e6e8f7043eb9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6814158
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
ae4aead5
|
2025-07-24T16:35:38
|
|
Remove sharedContextLock from glVertexAttrib{Divisor|Binding}
With prior CLs all the functions used by glVertexAttribDivisor*,
glVertexBindingDivisor and glVertexAttribBinding only access
VertexArrayPrivate. This CL removes shared context lock from these APIs.
Bug: b/433331119
Change-Id: Ib1632797c53d2cd7a31c21e93c0e69385c71a27f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6814157
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
328a205f
|
2025-08-07T11:02:12
|
|
Revert "Fix bug when reattach the same buffer not pick up the change"
This reverts commit a93f4c8d29c8d214e4823032e6e2c061d5dab1b1.
Reason for revert: https://issues.chromium.org/437092065
Bug: b/433331119
Original change's description:
> Fix bug when reattach the same buffer not pick up the change
>
> Added a test that the same buffer is used in two contexts. Buffer is
> modified in one context and reattached the same buffer on the second
> context's vertex array should pick up the buffer changes. This test
> exposed the bug and it is fixed in this CL.
>
> Bug: b/433331119
> Change-Id: Ia5675581857a642fe9727f196326da9af43d52cf
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6821923
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/433331119
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: Iaa14b5dbbdb02c69bb060d5073072ec6ddd473ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6827998
Auto-Submit: Charlie Lao <cclao@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
a93f4c8d
|
2025-08-05T16:45:21
|
|
Fix bug when reattach the same buffer not pick up the change
Added a test that the same buffer is used in two contexts. Buffer is
modified in one context and reattached the same buffer on the second
context's vertex array should pick up the buffer changes. This test
exposed the bug and it is fixed in this CL.
Bug: b/433331119
Change-Id: Ia5675581857a642fe9727f196326da9af43d52cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6821923
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
7a193b06
|
2025-08-06T13:50:50
|
|
Unthrottle validation error messages for all of Chromium
Chromium uses the debug callback to check if there were any errors
instead of glGetError(). With the previous change that throttled error
messages, some webgl tests failed to correctly recognize that an invalid
call did actually fail validation, as well as passthrough command
decoder fuzzer tests.
Bug: angleproject:423956139
Bug: chromium:436292490
Change-Id: Ida254c9bdd2137afcc9483cc1860254781338dbc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6823824
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
da8462d4
|
2025-08-06T05:44:28
|
|
Unthrottle validation error messages in WebGL
Chromium uses the debug callback to check if there were any errors
instead of glGetError(). With the previous change that throttled error
messages, some webgl tests failed to correctly recognize that an invalid
call did actually fail validation.
Bug: angleproject:423956139
Bug: chromium:436354527
Change-Id: Ic65761f412d3548fedd63f48d36357c9568c0b53
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6822578
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
f1c6e1a8
|
2025-08-04T19:55:02
|
|
Vulkan: Disable EXT_fragment_shading_rate
Due to a few dEQP failures, this extension will be
temporarily disabled. It can be reverted once the issues
have been resolved.
* Disabled fragmentShadingRateEXT for Vulkan.
Bug: b/436169197
Bug: angleproject:420310117
Change-Id: I94fbbb8b0a0866465e8c67e34c214b465fc35558
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6820702
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
394df705
|
2025-08-01T14:03:17
|
|
Cache per bufferIndex buffer properties in VertexArrayPrivate
This is another preparation CL. This CL caches per bindingIndex buffer
properties in VertexArrayPrivate: mCachedBufferPropertyMapped and
mCachedBufferPropertyMutableOrImpersistent. The only difference between
these and mCachedMappedArrayBuffers /
mCachedMutableOrImpersistentArrayBuffers is that one indexed by
attribIndex and another is indexed by bindingIndex. With this, when
attribute binding changes, we no longer need to make buffer access. With
this, we can move setVertexAttribBinding and setVertexBindingDivisor
from VertexArray into VertexArrayPrivate class and Context argument is
also removed.
Bug: b/433331119
Change-Id: I666544ee0585727ca92d640f372f5a64d1d85576
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6814156
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
bafe39e2
|
2025-07-14T16:07:51
|
|
Vulkan: Use BindIndexBuffer2 when available
This Vulkan API becomes available with VK_KHR_maintenance5. In
addition to the original args, it also takes the index buffer size.
* Added the necessary functions to use the following API:
vkCmdBindIndexBuffer2KHR()
* handleDirtyGraphicsIndexBuffer() now uses this API if maintenance5
is available.
Bug: angleproject:394337110
Change-Id: I9a650ac5a033b449da05e0c226e2cfb6df74a75c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6735725
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
eca5244d
|
2025-07-30T16:59:16
|
|
Remove buffer from VertexArrayState::setAttribBinding
In later CLs we try to remove shared lock from glVertexAttribBinding().
One of the lockers for that is right now setAttribBinding() references
"buffer" for size. This CL caches the per binding index bufferSize in
VertexArrayPrivate (i.e, std::vector<size_t> mCachedBufferSize).
setAttribBinding() moved from VertexArray to VertexArrayPrivate since it
no longer needs buffer access, but uses mCachedBufferSize instead.
This CL also changes std::vector to std::array for mVertexArrayBuffers
Bug: b/433331119
Change-Id: Ie34aef82379af8f04099cdc20ebdf354d2787a65
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6803592
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
91fa29be
|
2025-08-04T11:08:20
|
|
Add a feature to force contexts into debug mode
Bug: angleproject:423956139
Change-Id: Ie166b40eb9c241140daf4a35df3391829c64f84e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6817467
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
be43e317
|
2025-07-31T17:40:24
|
|
EXT_external_buffer should have DYNAMIC_DRAW usage
EXT_buffer_storage requires that BUFFER_USAGE must be DYNAMIC_DRAW.
EXT_external_buffer only mentions that the buffer can be sourced from an
external EGLClientBuffer. Therefore, the BUFFER_USAGE should still be
DYNAMIC_DRAW.
Add an end2end test.
Bug: angleproject:436046320
Change-Id: Ie79a1b1f8be0df4566bff26800599b192c4f70b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6817076
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
35023c8a
|
2025-07-31T17:40:45
|
|
Throttle validation error messages in release builds
Some apps make invalid but harmless calls every frame. ANGLE inserts a
debug message for each validation failure which comes with a performance
cost. This change makes ANGLE stop reporting validation failure messages
after a handful have already been reported. This is only done when
assertions are disabled and when the context is not a debug context.
Bug: angleproject:423956139
Change-Id: Ie3fb121b2686cddf7da98fc23422b5d12097c6fa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6805901
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fa29f604
|
2025-07-02T13:23:31
|
|
Remove sharedContextLock from {Enable|Disable}VertexAttribArray
VertexArray objects are per context objects. In theory they do not need
to protected by shared context lock. The reason we are taking locks
because all these functions end up accessing Buffer object which are
shared. In prior CLs we have removed subject observer usage from
VertexArray which means VertexArray no longer accessed from other
thread. In prior CLs we also split VertexArray into two classes:
VertexArrayPrivate which has no buffer, and VertexArray which is
subclass from VertexArrayPrivate and owns buffer. In this CL,
glEnableVertexAttribArray and glDisableVertexAttribArray calls no longer
take shared context lock. ContextPrivateEnableVertexAttribArray and
ContextPrivateDisableVertexAttribArray are called from these two APIs
and they only have access to StatePrivate. State Private holds a
VertexArrayPrivate pointer, which means they do not have anyway to
access buffer objects. The main challenge I run into here is
mCachedActiveClientAttribsMask, mCachedActiveBufferedAttribsMask,
mCachedActiveDefaultAttribsMask, mCachedHasAnyEnabledClientAttrib,
mCachedNonInstancedVertexElementLimit,
mCachedInstancedVertexElementLimit. These StateCache variable needs to
be updated when these two APIs are called, and calculating these
variable needs access to buffer object. The solution here is adding a
bool mIsCachedActiveAttribMasksValid in the PrivateStateCache so that
instead of immediately update these mCached* variable, we just set
mIsCachedActiveAttribMasksValid to false. Then whenever any of these
mCached* variable is needed, we will check
mIsCachedActiveAttribMasksValid and calculate these cached variables. It
adds one if check when accessing these caches, but the other benefit is
that we may have avoided duplicated calculation when multiple states
changed.
Bug: b/433331119
Change-Id: I3227c72bc40501712db93fb3d540b835f07150b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514436
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
2ef85c24
|
2025-07-09T17:13:52
|
|
Vulkan: Add support for GL_EXT_fragment_shading_rate
Add support for GL_EXT_fragment_shading_rate.
Bug: angleproject:420310117
Change-Id: I7b368afc45baf8551c222b2569991269117d385b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6726817
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Panfeng Hou <panfeng.hou@arm.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
279652e3
|
2025-07-21T16:21:28
|
|
Vulkan: Flush more often due to render pass count
Accumulating too much workload before submission can lead to
stuttering and reduced quality in rendering. In this change,
a threshold is set for the number of render passes in order to
submit the command buffer.
* Added the following to ContextVk: mRenderPassCountSinceSubmit
* It is incremented every time a render pass begins in the command
buffer.
* When the count reaches the following threshold at the RP closure,
there is a submission: kMaxRenderPassCountPerCommandBuffer
* (Currently set to 128)
Bug: b/426439980
Change-Id: I4cde223fb81e6a27a61f78c924d3c9f2a082e995
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775626
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
a1d5d102
|
2025-07-22T02:15:43
|
|
WGSL: Allow matrices as in/out vars in shaders
WGSL only supports scalars and vectors in in/out vars in shaders,
matrices will need to be broken into column vectors and then
put back together at the beginning (or end) of the shader.
Arrays also need to be split, which will be done in another CL.
Bug: angleproject:42267100
Change-Id: If1ba28c1b687ae0a3a5a554479f0ff0b5d9df39c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777201
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
5fd368aa
|
2025-07-30T14:45:55
|
|
Replace Surface::getWidth/Height() with getSize()
Most places in the code use both `getWidth/Height()` methods at the same
time. On some back-ends it is more optimal to have single method.
For example, `WindowSurfaceWGL` first uses `GetClientRect()` Win32 API
inside each method to then calculate width and hight in each method,
causing repeated `GetClientRect()` call.
The only place where only one of the methods may be used is from
`SurfaceImpl::getUserSize()` when one of the parameters is `nullptr`,
which is only possible from `QuerySurfaceAttrib()` function. This
method is rewritten to use new `getSize()` method and then use whatever
dimensions is requested by the caller. This may cause
`QuerySurfaceAttrib()` inefficiency on some back-ends that get width and
height of the surface differently (`SurfaceEGL` for example). In such
cases `getUserSize()` is overridden to avoid returning a dimension
which is not required.
After this change all places in the code that previously used both
`getWidth/Height()` methods (like `Surface::getAttachmentSize()`) will
be more efficient. The `QuerySurfaceAttrib()`, on the other hand, will
have slightly more overhead on back-ends where base
`SurfaceImpl::getUserSize()` method is used, which only happens on
back-ends with trivial `getSize()` implementation.
Bug: angleproject:397848903
Change-Id: I4a22701a1e62ee4e7d07e77cac5b388050d98e4d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6802440
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
fa90dac8
|
2025-07-30T14:04:58
|
|
Revert "Vulkan: Disable VK_EXT_host_image_copy on Fuchsia"
This reverts commit d62db89e1753ece99633143faf4c87b2ff23f96c.
Reason for revert: It's been years, hopefully VVL is updated by now.
Bug: angleproject:8341
Original change's description:
> Vulkan: Disable VK_EXT_host_image_copy on Fuchsia
>
> An old version of VVL is used, causing incorrect failures.
>
> Bug: angleproject:8341
> Change-Id: I0fc605616671343a49fed6ff02ecd67eea672dca
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4873440
> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:8341
Change-Id: Ia7a8875b955a120c80d59f2ae7566648e055eedc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6804001
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4189fbb8
|
2025-07-29T17:50:24
|
|
Implement EGL_ANDROID_presentation_time for Vulkan backend
The implementation leverages the VK_GOOGLE_display_timing Vulkan
extension.
Bug: chromium:434977616
Bug: angleproject:42261214
Change-Id: I7e6c64eca6c01e7eb79d41dc5ef63311a7792e2b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6799254
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
92089dce
|
2025-07-29T14:09:24
|
|
Vulkan: Limit maxPerStageTextures to 4096
Many devices support a huge number of samplers (millions) and every one
needs a uniform location, either generated by ANGLE or assigned by the
user. Limit the number of samplers per stage to something reasonable,
which in turn also lowers the number of uniform locations.
This isn't expected to have any practical effect on real apps/users, but
is instead to keep tests for these limits (e.g., dEQP, end2end) within
reason in terms of shader program sizes and compilation times.
Test:
KHR-GLES31.core.explicit_uniform_location.uniform-loc-mix-with-implicit-max
Test: angle_end2end_tests
--gtest_filter=GLSLTest.VerifyMaxVertexUniformVectorsWithSamplers*
Bug: b/434763439
Change-Id: I378483fd869b9f5ebee21760eec4dec2dd793b92
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6798920
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@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>
|
|
3e52318c
|
2025-06-26T10:46:00
|
|
Vulkan: Ensure always using resolved Window Surface size
`WindowSurfaceVk::getWidth/Height()` methods return cached, previously
resolved Surface size. Using these methods while current Window Surface
size is unresolved may return stale values, causing undesired behavior.
Appropriate ASSERTs were added to these methods to prevent such usage.
Added ASSERTs revealed few places with incorrect usage:
- In `Context::makeCurrent()` to set initial viewport or for capture.
- In `IsPartialBlit()` and `ValidateReadPixelsBase()` validations.
- In `SerializeFramebufferAttachment()` during capture.
Rest of the code was thoroughly checked if it is possible to call
`WindowSurfaceVk::getWidth/Height()` when size is unresolved. All other
places always call these methods after framebuffer state
synchronization, which acquires swapchain images and resolves the
surface size.
Added `ensureSizeResolved()` method that is called during validation and
in the `SerializeFramebufferAttachment()` method. It is possible to use
existing `Framebuffer::syncState()` method as alternative, but this
solution was discarded since it may potentially interfere with
`State::syncDirtyObjects()` method.
The `Surface::getUserSize()` replaces old methods as optimization, to
prevent calling relatively expensive method twice from
`Context::makeCurrent()` to get width and height of the `drawSurface`.
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeBeforeMakeCurrent/*
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeBeforeMakeCurrentPostSizeQuery/*
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeAndReadPixelsRobustANGLE/*
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeAndBlitFramebufferANGLE/*
Bug: angleproject:397848903
Change-Id: I082e13d0b8db5fd7d08ff25b102df1f283e1256d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6792928
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|