|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
7181239d
|
2025-04-04T14:13:58
|
|
Add long ANGLE traces feature
Enables very long Android captures by swapping binary
data chunked buffers to/from disk.
Bug: b/425728227
Change-Id: I539f72590eece03cfc69d42fc34be9825a9ff1fe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6476924
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|
|
b7582680
|
2025-02-24T18:04:32
|
|
Reland: GL: Allow untranslated shaders to pass through on GLES
Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
uses the NULL translator and passes the original shader to the driver.
The parser is still used for shader reflection.
Always enable the null compiler backend. It has almost no binary size
cost and is now potentially used when the null ANGLE backend is not
enabled.
Bug: angleproject:398857482
Change-Id: Id528189ccbbacb1c444eacb151baadfda9fcc04b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6488609
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
dd6a1a2c
|
2025-07-24T10:02:04
|
|
Roll vulkan-deps from 0b8bda098b9a to b7374531e4a2 (9 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/0b8bda098b9a..b7374531e4a2
Also rolling transitive DEPS:
https://chromium.googlesource.com/external/github.com/LunarG/VulkanTools/+log/597e427cce3fc97a8455b26aba1a1189546717c3..192b610c89300a30221b8909bf71dcb12cd3c92d
https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/c8ad050fcb29e42a2f57d9f59e97488f465c436d..de1807b7cfa8e722979d5ab7b7445b258dbc1836
https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/8cf1bf9bb922e33135e6e343a566764015da2dc6..04d4deab5d608af8fbe418c422734a73555589c3
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/dad479f6294df6c7a706964c489926be943a8baf..4cf7390eb853a54e7f9ae1c948ac09995ed8b8e5
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,syoussefi@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: None
Tbr: syoussefi@google.com
Change-Id: Iff95f0d257f10922a681697549f833092622f395
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6782918
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
|
|
b3986258
|
2025-07-14T14:47:02
|
|
Include <utility> in PoolAlloc to fix gcc builds
std::exchange needs #include <utility>.
Bug: angleproject:429513168
Change-Id: I61e323055cb70545bda883c8bcfb103dcede5136
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6734441
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
c03b2d59
|
2025-07-15T14:18:28
|
|
common: Fix include for std::exchange
This is to fix error in
https://ci.chromium.org/ui/p/chromium/builders/ci/linux-modules-compile-fyi-rel/41761/overview
Bug: chromium:40263312
Change-Id: I4d37bd92370b80856571cdd97144b61f8477f362
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6734419
Auto-Submit: Takuto Ikuta <tikuta@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
93b659f9
|
2025-07-04T12:35:29
|
|
Remove PoolAllocator push/pop feature
PoolAllocator would manage a stack of memory pools upon client
calling push() and pop(). This made the code unnecessarily complicated.
The feature was only used with nesting of one, to mark the memory
unused after a shader compile.
Fix by removing the push/pop feature. Instantiate PoolAllocator in
places the previous push() was and uninstantiating instead of previous
pop().
This removes the feature where the PoolAllocator would hold on to
the allocated memory in order to reuse it. This is seen as a
progression: the allocator is held by the compiler, the compiler is
held by the shader and each shader typically see only one compile.
Thus the free pages were just leaking unused until the shader was
destroyed. Instead, destructing the PoolAllocator instead of pop()
will donate the memory back to platform/OS, where it is likely
more useful.
To preserve existing Vulkan behavior, add PoolAllocator::reset()
which would mark the memory unused but leave them reserved for the
PoolAllocator.
Removes UB where PageHeader::nextPage would be accessed after
~PageHeader.
Bug: angleproject:429513168
Change-Id: I21e58b46e0887380db3a2cab5ce22f0042cfae9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6701153
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
41a5b397
|
2025-07-09T09:17:10
|
|
Vulkan: Fix checking if fds are identical
This helps to decide whether it's really disjoint or not.
Bug: angleproject:426480610
Change-Id: I8ec9b352195ab16a7e11d2dab30e98138d9f5a6c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6658648
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
30a1cbc9
|
2025-07-03T13:00:05
|
|
Vulkan: Separate out descriptor set for uniform buffers
Bug: angleproject:426412564
Change-Id: Icdbb1e634fc543714d1e3b9cdba0530d400cb153
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6705153
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
2269011c
|
2025-06-30T14:08:11
|
|
Remove BitSet::to_ulong and BitSetArray::to_ulong
BitSet::to_ulong() is a bit redundant with bits(), and has a risk of
losing upper bits on windows platform where unsigned long is 32 bit.
This CL removes the usage of it and replaced with bits().
BitSetArray::to_ulong() method only captures up to 64 bits, all other
bits are dropped silently which is wrong. This CL fix this and serialize
it as a vector of uint64_t. BitSetArray::to_ulong() is removed in this
CL.
Bug: angleproject:42264163
Change-Id: I663b2cdacc0e930ee616e333131e831ec124a9d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6691283
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
d28c6adf
|
2025-06-19T09:41:26
|
|
Modernize for macOS 12
macOS 12 is the minimum OS requirement, so remove the "main port"
workaround and do other modernization.
Bug: b/40250210
Change-Id: I9638014732f0589fc6171c0fe617b3c563f00c28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6655558
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ad7f595d
|
2025-06-19T18:20:15
|
|
Set src/common/base "Update Mechanism"
Bug: chromium:419410757
Change-Id: Ib2a980edd6e7c9b9790c31c8fb6002d58da4a08f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6650800
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
9a436772
|
2025-06-04T16:47:51
|
|
Vulkan: Add entry points for GL_EXT_fragment_shading_rate
Bug: angleproject:420310117
Change-Id: I8a8efad6cad810b2cb0b600106f6496070495605
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6620340
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
23097376
|
2025-06-03T22:26:05
|
|
Update src/common/base's README
Bug: chromium:378273323
Change-Id: Iaa40abac52fdb2d5f8e3a65333d589097cb98834
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6617103
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4c964bc7
|
2025-05-15T00:00:00
|
|
Roll third_party/OpenGL-Registry/src/ 5bae8738b..200cea403 (74 commits)
https://chromium.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry/+log/5bae8738b23d..200cea4030cb
Additional changes:
* Removed obsolete workarounds for mismatching
signatures between CreateShaderProgramvEXT
and CreateShaderProgramv.
* Aligned GL backend bindings for GL_OVR_multiview
entry points with the specs.
* Updated include/GLES2/gl2ext.h.
Bug: angleproject:409484297
Change-Id: Ifbb63dcc4bad312b22a368455a121e088b346fab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6596941
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
392dc591
|
2025-05-15T00:00:00
|
|
Remove GL_CHROMIUM_sync_query
Fixed: angleproject:420627279
Change-Id: I26dac7c55a7cf6b04121658144e1387be65d2569
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6593552
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3e9a1375
|
2025-04-30T16:03:03
|
|
Fix unique object duplication warning
Clang has a `unique-object-duplication` warning that warns about objects
which are supposed to be unique (like static- or thread-local
variables), but may be accidentally duplicated across shared libraries
when they have hidden visibility.
This CL addresses instances of that warning by:
1. Ensuring that on non-windows systems, objects that need to be
exported are unconditionally given "default" visibility
2. Satisfy the compiler by marking everything as default visibility when
building a static library, since visibility only matters for shared
libraries
3. Mark functions with static or thread local variables as exported.
Bug: chromium:368047728
Change-Id: Ic60265353bf2b0af2cd1fef884bfa85038e0db02
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6502093
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3cf7a604
|
2025-05-17T19:39:08
|
|
WebGPU: Add extensions for importing external textures
Add EGL_ANGLE_device_webgpu which exposes the adapter and device used
by ANGLE internally.
Add EGL_ANGLE_webgpu_texture_client_buffer which allows importing
external WGPUTexture handles if they share the same device as ANGLE
(queried from EGL_ANGLE_device_webgpu).
Bug: angleproject:418022112
Change-Id: I0683d36b84a0f8e0e9b68a5ec0d3aa8b7a95152c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6553063
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
86ce0f0e
|
2025-04-24T00:00:00
|
|
Add EXT_multi_draw_arrays stubs
Bug: angleproject:414506477
Change-Id: Idc3ca950b88c9632268922ec7a311936916c2a43
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6522405
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ae70513d
|
2025-04-18T00:00:00
|
|
Remove NamedBufferStorageExternalEXT entry point
OpenGL ES does not support DSA.
Bug: angleproject:407932145
Change-Id: If5f544de2b43e05888415a4fc805ad6065d4408b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6495409
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cdcf6a63
|
2025-04-22T10:19:33
|
|
Add R10X6G10X6B10X6A10X6 support on angle
Bug: angleproject:409355677
Change-Id: I8115ca73a038360f673552532e9d9b87ff846867
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438114
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
49d0a332
|
2025-04-08T16:07:17
|
|
Vulkan: Remove ring buffer allocators
* Removed the ring buffer allocator functionality from ANGLE:
angle::RingBufferAllocator
* Also removed the related common files.
* (Pool allocators will be used at all times.)
* Removed the placeholder functions from the pool allocator.
* Removed the following BUILD flag:
angle_enable_vulkan_shared_ring_buffer_cmd_alloc
* Removed redundant line from ContextVk.
Bug: b/410036490
Change-Id: I368fb93a66ddfd192018b09f65004a32339abd5a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6442640
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5dd05578
|
2025-04-14T07:34:57
|
|
Revert "GL: Allow untranslated shaders to pass through on GLES"
This reverts commit 4e77552b86a89b449ada6d6c18f84285f5812b1d.
Reason for revert: breaks ChromeOS and fuzzers
Bug: angleproject:398857482
Original change's description:
> GL: Allow untranslated shaders to pass through on GLES
>
> Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
> uses the NULL translator and passes the original shader to the driver.
> The parser is still used for shader reflection.
>
> Bug: angleproject:398857482
> Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:398857482, angleproject:410423936
Bug: chromium:410114655, chromium:410100607, chromium:410121218
Bug: chromium:410052365, chromium:410290507, chromium:410178288
No-Presubmit: true
Change-Id: I45b01960637a1cda05d21a7df6d07465f6a8f5e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6448984
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
4e77552b
|
2025-02-24T18:04:32
|
|
GL: Allow untranslated shaders to pass through on GLES
Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
uses the NULL translator and passes the original shader to the driver.
The parser is still used for shader reflection.
Bug: angleproject:398857482
Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
78048112
|
2025-01-15T15:13:14
|
|
Fix IndexRange::vertexIndexCount calculation
Use only one loop.
Avoid redundant primitive restart index parameter.
Avoid calling GetPrimitiveRestartIndexFromType() because the algorithm
relies on the value being numeric_limits<T>::max().
Fixes a bug where primitive restart case would process the value
after first primitive restart twice, once in both for loops. This would
result in incorrect vertexIndexCount.
Fix by removing IndexRange::vertexIndexCount, and instead using
IndexRange::mCount == 0 to signify empty range.
Bug: angleproject:401284933
Change-Id: Ifaeb9949f2e852fb7c5ef80bc47f72bfabba21a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333541
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
1593390b
|
2025-04-07T11:22:21
|
|
Increase ANGLE_LIKELY/UNLIKELY probability to 99.99%
I can't find the exact value for clang, but according to GCC docs
__builtin_expect probability is assumed to be only 90%. When we actually
bother to use ANGLE_LIKELY we mean "almost always", so this value can
be much higher. Setting to 99.99% because lower values don't seem to
trigger the optimization below (at least 99.9% doesn't)
__builtin_expect already enables some optimizations such as moving
unlikely branches (e.g. cold function calls) out of the primary flow.
Increasing the probability enables more aggressive optimizations such as
making those function calls store/load registers only in the rare
cases when this call is made - which allows the rest of the caller to be
made more efficient by not having to handle these register changes.
Example:
stur w4, [x29, #-0xc]
stur x8, [x29, #-0x8]
str x3, [sp, #0x8]
stp w2, w1, [x29, #0x18]
bl 0x356fdc <_ZNK2gl7Context25getActiveLinkedProgramPPOEv>
ldp w2, w1, [x29, #0x18]
ldr x3, [sp, #0x8]
ldur w4, [x29, #-0xc]
ldur x8, [x29, #-0x8]
Bug: b/383305597
Change-Id: I077f4f2cb90cfb8282409d12adcb02c3302e7761
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6437572
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eb52b568
|
2025-03-28T00:00:00
|
|
Remove unsupported 1D and DSA entry points
OpenGL ES does not support 1D textures,
removed TexStorage1DEXT.
OpenGL ES does not support DSA, removed
EGLImageTargetTextureStorageEXT.
Added an explicit command blocklist.
Added hashes for *_vulkan_secondaries_* def files.
Fixed: angleproject:407932145
Change-Id: Iec34fa475f34a0fa832a49223c51ff1f87b1915d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6426049
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
05c491e1
|
2025-03-15T11:56:07
|
|
Vulkan: Optimize GraphicsDriverUniforms update
Unless RP is closed there is no need to dirty GraphicsDriverUniforms
when the program executable changes.
Bug: angleproject:386749841
Test: VulkanPerformanceCounterTest.NoUpdatesToGraphicsDriverUniformsOnProgramChange*
Change-Id: Id02e8a17de93e2b73103666fc6cc62ce3cdd8f43
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6358315
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
292bb458
|
2025-03-14T12:17:49
|
|
Cut MAX_COLOR_ATTACHMENTS_WITH_ACTIVE_PIXEL_LOCAL_STORAGE_ANGLE
Since the number of real devices that support framebuffer fetch, but do
not support draw_buffers_indexed, is effectively zero,
MAX_COLOR_ATTACHMENTS_WITH_ACTIVE_PIXEL_LOCAL_STORAGE_ANGLE is an
unnecessary complication. These hypothetical devices can fall back on
shader images or just not support pixel local storage at all.
This closes the door for WEBGL_shader_pixel_local_storage to ever be
implemented on top of the ES2 extension that inspired it all,
EXT_shader_pixel_local_storage, but WebGL can just use framebuffer fetch
instead, or maybe even EXT_shader_pixel_local_storage2 some day.
This dramatically simplifies the WEBGL_shader_pixel_local_storage
extension.
Bug: angleproject:40096838
Change-Id: I9c51f2ce000620f883cb7917d4e8618c8e9ee803
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6354657
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
19e45680
|
2025-03-18T12:50:52
|
|
Disable timestamp call from AddTraceEvent for Android platform
Android platform's addTraceEvent ignores the timestamp arg, so there is
no reason to make this call (and it shows as the hotspot).
Behind a new define to avoid breaking this in Chromium Android builds
where the timestamp is actually used.
Bug: angleproject:404542398
Change-Id: I0f5eea31feb6838c3e62949fcd2947145be4ebf5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6368277
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
3676ac1f
|
2025-03-10T17:18:33
|
|
Add checks for invalid cases “a[]” and "a[a]" in array parsing
Returns empty outSubscripts vector for a[]
Adds GL_INVALID_INDEX to outSubscripts for a[a]
Bug: angleproject:401979815
Change-Id: Ie18e9bbbec2b15cac69ae048b81f14ab13439400
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6339329
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Mavis Deng <mavis.deng@arm.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
c0d806b4
|
2025-02-10T23:01:33
|
|
CL: OpenCL support for ANGLE Capture/Replay
Implementation of OpenCL Capture/Replay tool in ANGLE.
Brief notes about the change:
- Most meaningful changes for the capture process are
made in src/libANGLE/capture/
- Most meaningful changes for replay are made in
util/capture/ and src/tests/perf_tests/
- Many autogenerated files are changed/added to allow
the capture of OpenCL objects & calls
- The following applications were captured/replayed:
benchmark_model, GeekBench Compute, GeekBench ML,
AI-Benchmark, various OCL CTS tests
- End2end test added to capture_tests.
CapturedTestCL.MultiFrameCL/ES3_Vulkan
Bug: angleproject:383841335
Change-Id: I55fdaa6cd6c7ba740aaa2351e4d29050059d6d1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6102105
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
c4caed5f
|
2025-02-10T06:17:01
|
|
Revert "UNREACHABLE -> __builtin_unreachable() in release clang builds"
This reverts commit 7370bb573dd8b37006d409fc8917ff49912dd75a.
Reason for revert: issue identified by fuzzer crbug.com/394980074
Original change's description:
> UNREACHABLE -> __builtin_unreachable() in release clang builds
>
> This enables compiler optimizations such as reducing the amount of
> branching, see anglebug.com/394129077#comment1
>
> Reduces .so size in an Android perf build by 0.4%. I spot checked a few
> differences and saw less branches (this will be causing a different
> behavior in UNREACHABLE branches) as well as more functions getting
> inlined (likely due to compiler heuristics due to less branches)
>
> Bug: angleproject:394129077
> Change-Id: I23411ca7a49d3daf2a0621bfcc0b2523d4db4f5a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6231111
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
> Commit-Queue: Roman Lavrov <romanl@google.com>
Bug: angleproject:394129077
Bug: chromium:394980074
Change-Id: I7398d86c692e5c50ac1185c30e2053eb87f9bd70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6248417
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d4083c79
|
2025-01-31T15:06:36
|
|
Metal: Make ObjCPtr available to all modules
Move ObjCPtr implementation to src/common/ObjCPtr.h,
angle::ObjCPtr so that it's available also outside libANGLE.
Bug: angleproject:393263506
Change-Id: I8ecd5632c7ae33ef4b409fc820fad229e91bc0ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219318
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
0ef55535
|
2025-02-06T15:40:28
|
|
FastVector::resize_down never increases capacity
Note: this function is currently only called by SPIR-V code generation
In particular, SpirvTransformer::transform() was bloated
8896 -> 9756 bytes due to ensure_capacity() getting fully inlined.
After https://crrev.com/c/6236800 this makes a much smaller difference
but this still probably makes sense as before this CL the only
difference between resize() and resize_down() was an assertion.
Bug: angleproject:394848869
Change-Id: If55a41d67e26a9bc1a30cb0012d1958faa734cc8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6238266
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fb563c3e
|
2025-02-06T15:29:14
|
|
FastVector capacity increase is a function call
FastVector::ensure_capacity() gets inlined in many places, but capacity
increase is a rarely needed case. Move code to increase_capacity and
make it a function call.
This reduces the size of a release Android .so by ~14KB.
Bug: angleproject:394848869
Change-Id: Iefb5fe894d8c8eaba2d251502925de453290bc31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6236800
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
60a9320c
|
2025-02-06T14:31:43
|
|
Move unlikely path of MakeLengthOp to a function call
This function gets inlined many times, adding 96 bytes of assembly to
each caller such as angle::spirv::WriteStore etc.
In total, this CL reduces Android release .so size by ~14KB
Bug: angleproject:394848869
Change-Id: Ief364116fd9b881f9c0dfefb1ca5005282bf57ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6236799
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7370bb57
|
2025-02-04T13:19:37
|
|
UNREACHABLE -> __builtin_unreachable() in release clang builds
This enables compiler optimizations such as reducing the amount of
branching, see anglebug.com/394129077#comment1
Reduces .so size in an Android perf build by 0.4%. I spot checked a few
differences and saw less branches (this will be causing a different
behavior in UNREACHABLE branches) as well as more functions getting
inlined (likely due to compiler heuristics due to less branches)
Bug: angleproject:394129077
Change-Id: I23411ca7a49d3daf2a0621bfcc0b2523d4db4f5a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6231111
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
4ce8b71e
|
2025-02-05T08:06:09
|
|
LSC updating angle License ids
This is based on the existing id and the license file provided.
Bug: b/358504615
Change-Id: I0f0956806f27f8bfed6589157b583d159a25a3d0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6232605
Owners-Override: Jordan Brown <rop@google.com>
Auto-Submit: Jordan Brown <rop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
7d37d970
|
2025-01-30T13:47:59
|
|
Make error messages end in a dot
Some messages had dot and some not.
Fix by adding dot to all error message string literals.
Best effort, for free form string literals, check ANGLE_CHECK invocation
sites only.
Bug: angleproject:392938089
Change-Id: Idedc3fe1d1e186fb91b5e54407df87f6830995a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218460
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
90e3f6bd
|
2025-01-17T23:10:55
|
|
executable path has non-ASCII characters, metal not available
On ARM64 MacOS 15.0.x, Metal Shader with
newLibraryWithSource didn't work if the executable path
contains non-ASCII characters.
Bug: chromium:389559087
Change-Id: I0482c01e2a11973f56c712b36062ed78f3cecf9f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6174286
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
0cfea380
|
2025-01-15T10:46:54
|
|
Rename sh::TSpan as general purpose angle::Span
Span abstraction is useful for making buffer manipulation more
consistent. The commit makes the Span available to all code until
std::span can be used.
Bug: angleproject:389951202
Change-Id: Id0c6b54bb6e75d3cc4e85af854d9e61b66906752
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6170997
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
de5286fa
|
2025-01-14T10:59:17
|
|
Add missing include to MemoryBuffer.cpp
Details can be found here -
https://chromium-review.googlesource.com/c/angle/angle/+/6135238/11#message-d271191140cfc29498701cbbb5ee8c6dc20349d0
Bug: angleproject:386749841
Change-Id: I428a61bafcc2d65d7538e0d1c28ebe39ad40b7fa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6169566
Reviewed-by: Brian Johnson <hibrian@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
4c1354d9
|
2025-01-03T14:41:27
|
|
Make sure the AHB is not corrupt when bound to egl image
The AHB bound to egl image could be corrupt or not a valid
ANativeWindowBuffer, it should be validated when creating
egl image.
Bug: angleproject:387226848
Change-Id: Iefc5506746ceaad92d16b02d5c0838156eee2f9d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6126739
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bbc0d702
|
2024-12-27T07:44:01
|
|
Vulkan: Add entry points to lock the Vulkan queue
... which can be retrieved via EGL_ANGLE_device_vulkan. Otherwise the
application is unable to use the VkQueue that is retrieved out of ANGLE
from other threads (such as Chromium's DrDC feature).
Bug: chromium:380295059
Change-Id: Ife80f54440777486f72fc61697a68fb0c2b2d0f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6116046
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b3af2e86
|
2024-12-31T08:51:37
|
|
Enhance MemoryBuffer API
Add support for -
1. reserve - users can reserve sufficient capacity upfront to
minimize subsequent reallocations due to resize
2. append - to append data from a source so user doesn't need to
track offsets explicitly
Bug: angleproject:386749841
Tests: MemoryBufferTest*
Change-Id: Ibf2a3228d5a00ed34a7e0c5e3eb185e42677d676
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6135238
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3226a3df
|
2024-12-13T14:06:55
|
|
Reland: vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid
Implement the ability to select a specific device and driver combination
through a few new selection criteria:
VkPhysicalDeviceIDProperties::deviceUUID
VkPhysicalDeviceIDProperties::driverUUID
VkPhysicalDeviceDriverProperties::driverID
Earlier version had problems due to a test build issue. Per syoussefi@,
going to rework the test into a separate CL so that we get the core
change merged.
Bug: angleproject:351866412
Change-Id: I0a3f4f1a2154a06bf6286a037c9ad4834ef4dda2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6165286
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
|
|
3b092269
|
2025-01-09T08:54:00
|
|
Revert "vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid"
This reverts commit 96abb2c3d9e296ae12e50e0026bf5d3a7b925e7e.
Reason for revert: breaks rolling into Chromium
https://chromium-review.googlesource.com/c/chromium/src/+/6158098
Original change's description:
> vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid
>
> Implement the ability to select a specific device and driver combination
> through a few new selection criteria:
>
> VkPhysicalDeviceIDProperties::deviceUUID
> VkPhysicalDeviceIDProperties::driverUUID
> VkPhysicalDeviceDriverProperties::driverID
>
> Bug: angleproject:351866412
> Change-Id: Ia6716aaed658d2563612d8b5d81287df97b57462
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686557
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Auto-Submit: Steven Noonan <steven@uplinklabs.net>
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:351866412
Change-Id: Ic7cf9dcf6a950556cc44f5920498db429c866340
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6164164
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
96abb2c3
|
2024-12-13T14:06:55
|
|
vulkan: add EGL_ANGLE_platform_angle_vulkan_device_uuid
Implement the ability to select a specific device and driver combination
through a few new selection criteria:
VkPhysicalDeviceIDProperties::deviceUUID
VkPhysicalDeviceIDProperties::driverUUID
VkPhysicalDeviceDriverProperties::driverID
Bug: angleproject:351866412
Change-Id: Ia6716aaed658d2563612d8b5d81287df97b57462
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5686557
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1a8d7712
|
2025-01-06T12:44:00
|
|
Inline common cases of PackParam<BufferBinding>
This appears to improve frame time by ~0.8% in some of my
driver_overhead_2 tests on a mobile device.
Default implementation is FromGLenum<BufferBinding>
https://crsrc.org/c/third_party/angle/src/common/PackedGLEnums_autogen.cpp;drc=0bb109aa3311f35bf0b51bcda3d7e095048168c8;l=106
and has 15 cases. This CL avoids the call for 3 of those cases,
most common ones according to frequency of glBindBuffer arg
in our trace cpp files.
This mapping adds compare/branch instructions for each case, hence
inlining increases the caller a little. In this case the increase is
about 60 bytes. With the total of 23 callers (GL_*Buffer* exports), this
increase the .so size by ~1.3KB. Just inlining the function would yield
higher bloat and wouldn't prioritize the common cases.
Bug: b/383305597
Change-Id: Icc205fd46fb8ef195c8ffaf67f9cd5194d1d1a5d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6148838
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
00756ced
|
2024-12-26T01:23:08
|
|
Vulkan: Fix build on some compilers
Bug: angleproject:352690896
Change-Id: Ia31fef4a3179db08d7fa9f402067c0a9aaf23ffc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6114509
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
db3a88fd
|
2024-12-19T09:15:50
|
|
Add missing include
Bug: angleproject:42262955
Change-Id: If0e075d1f291321e3a265d1d68b9d813f8559d68
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6110804
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Johnson <hibrian@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Solti Ho <solti@google.com>
|
|
b7d6605a
|
2024-12-17T09:17:20
|
|
Rename GC and CL dispatch threads to <16 chars
Current names too long (there is a 15 char pthread limit),
they just gets ignored. Add an assert.
Bug: angleproject:42262955
Bug: angleproject:375231041
Change-Id: If26c98b709524b9c072f26759b98f81fe0d4367d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6096873
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
|
|
c0ee7b20
|
2024-12-12T16:49:40
|
|
Swap getWidth() and getHeight() if the swapchain is 90 emulate rotated
When checking if we need to recreate swapchain, we should swap
the getWidth() and getHeight()
if Is90DegreeRoration(mEmulatedPreTransform) is true. This is because:
When creating swapchain, if Is90DegreeRoration(mEmulatedPreTransform) is
true, we store swapped mSurfaceCaps.currentExtent.width and
mSurfaceCaps.currentExtent.height in getWidth() and getHeight(),
but we use the original mSurfaceCaps.currentExtent.width and
mSurfaceCaps.currentExtent.height to create the swapchain.
On next acquire, to check if the swapchain property changes,
we should swap getWidth() and getHeight() if
if Is90DegreeRoration(mEmulatedPreTransform) is true, otherwise we
are recreating swapchains when width and height are unchanged.
Bug: b/382006939
Change-Id: I1cbe9da2ff5e76602a90963514d2d0d5fbf677e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6090199
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
00d9ef8f
|
2024-12-13T11:59:29
|
|
Inline GetUniformTypeInfoFromIndex
A very small function call on hot path, highlighted by PGO profile data
from driver_overhead_2. Makes driver_overhead_2 1~2% faster
on Pixel 8 (measured with shared context lock off).
Bug: b/335295728
Bug: b/383305597
Change-Id: I36e58b42b06c72c8f4c282110c85bb5130ced8d0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6094283
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fb743105
|
2024-11-26T14:37:39
|
|
Add stubs for EGL_EXT_surface_compression
This patch adds stubs for EGL_EXT_surface_compression to
ANGLE, including new API eglQuerySupportedCompressionRatesEXT and
adding EGL_SURFACE_COMPRESSION_EXT in EGLQuerySurface and
EGLCreateWindowSurface/EGLCreatePlatformWindowSurface.
Bug: angleproject:375496226
Change-Id: I1962a11e8e3e5eb2cd5b13c5ba0f685781dfd015
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073354
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f5196a27
|
2024-11-29T00:00:00
|
|
Fix normalizedToFloat for signed types
* Ensured that INT_MIN is converted to -1.
* Fixed max value computation when the
input bit width is not type-aligned.
* Cleaned up D24X8::ReadDepthStencil
to match the updated semantics.
* Added tests for all variants.
Fixed: angleproject:352963106
Change-Id: I8b9f60d3364331567ad3b55276666bb416c3c6ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6072233
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
74609065
|
2024-11-27T16:09:44
|
|
Vulkan: Fix finishOneCommandBatchAndCleanupImplLocked
Fix the `finishOneCommandBatchAndCleanupImplLocked()` to always do
cleanup regardless if there is something to finish. This method is
designed not only to free space in `mInFlightCommands` but also to
cleanup already retired commends (in `mFinishedCommandBatches`) and
renderer's garbage. In case if `mInFlightCommands` is empty cleanup was
skipped - which is incorrect.
Change removed `Impl` from the name since it is already have `Locked`.
The `finishOneCommandBatchAndCleanup()` is updated to simply call the
locked version with the mutex lock held.
Change also improved `FixedQueue` assertions (always check that
`mSize <= mMaxSize`).
Bug: b/280304441
Change-Id: I67bd7c35b164b84e9c07306a5bf48b0adefdfa5e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055419
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a504b6a2
|
2024-11-25T15:59:05
|
|
Support GL_OES_required_internalformat
Enable GL_OES_required_internalformat GLES extension.
Bug: angleproject:364069034
Change-Id: Ia57548469abff189472aa20b13ca99179c45f2c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038448
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Panfeng Hou <panfeng.hou@arm.com>
|
|
5951cac9
|
2024-12-04T04:37:50
|
|
Update xxHash metadata
Populating version as 0.8.2 based on:
https://github.com/Cyan4973/xxHash/commit/0f2dd4a1cb103e3fc8c55c855b821eb24c6d82c3
Bug: chromium:365320508
Change-Id: Ieec25b6fafc32c98bc29efb1e6c32a5933f30af9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6069746
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jiewei Qian <qjw@chromium.org>
Auto-Submit: Jordan Brown <rop@google.com>
Reviewed-by: Jordan Brown <rop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0bb109aa
|
2024-11-28T00:00:00
|
|
Fix validation for 2D multisample array textures
* Fixes:
* TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY query must
be rejected if the functionality is not enabled.
* GetInternalFormativ must accept TEXTURE_2D_MULTISAMPLE_ARRAY
on unextended OpenGL ES 3.2 contexts.
* Added validation to the OpenGL ES 3.2 TexStorage3DMultisample
entry point.
* Cleanups:
* Removed OES suffix from the enum conversion.
* Incorrect extension name in the error message.
* Do not create a 2D multisample array zero texture object
if the backend does not support the functionality.
* Replaced redundant FramebufferTexture validation with an assertion.
* Do not allocate texture binding vectors for 2D multisample array
textures if the backend does not support the functionality.
* Aligned the 2D multisample array texture target assert in
RecordBindTextureTypeError with the actual error condition.
Fixed: angleproject:381270278
Change-Id: Idbbc86e2efe1bbc25d9570d515b67c1a32255d99
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6063068
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
da292057
|
2024-12-03T10:20:17
|
|
Update third party metadata
Bug: chromium:378273470
Bug: chromium:365321119
Bug: chromium:365320508
Bug: chromium:378273216
Change-Id: Ie24f00112a8f04ff9acdf6e4618b79e082529636
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6062488
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
d57b1d30
|
2024-11-28T11:09:53
|
|
Vulkan: Support GL_OES_required_internalformat
Only export 'GL_OES_required_internalformat' in GLES extension.
Bug: angleproject:364069034
Change-Id: I6198b7b79fc2853c7585ebff183016ee110a25e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055198
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5d3d299d
|
2024-11-25T16:35:51
|
|
Expose the required GLES1.0/1.1 extensions in ANGLE
Exposed below extensions:
GL_OES_texture_mirrored_repeat
GL_OES_blend_subtract
Bug: angleproject:380704155
Change-Id: Ib095f9bfaabda92bb2c588d633f1512e118f066e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038450
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3b3783bc
|
2024-11-18T16:42:47
|
|
Reland "Possibly fix FixedQueue.ConcurrentPushPop flakiness"
This is a reland of commit 84b175546ec95af14b6a85def7d5b2e81ae5a88a
Reverted CL increased flakiness because of incorrect `ASSERT`
expressions present in the original code and which should have been also
corrected. The fix itself had no new issues.
This CL additionally fixes these `ASSERT` expressions.
Suspected source of flakiness in both tests is the possibility to call
`q.pop()` while `q.empty()` is true. Original fix added check for
`enqueueThreadFinished` to break from the loop.
New fix instead of checking for `enqueueThreadFinished` to break from
the loop, checks if `q.empty()` is true. This change allows processing
already pushed values even if the enqueue thread already finished. It is
applied to both tests.
Additional changes not related to fixing the flakiness:
- `std::time()` replaced with `angle::GetCurrentSystemTime()` because
`std::time_t` may be integer (Android) while `timeOut` is double. This
is confusing. For example, if set `timeOut = 0.5` - actual timeout
will still be one second.
- fix enqueue thread to actually reach the maximum capacity.
- improve dequeue thread to prevent updating to the same of greater
capacity.
- add extra `ASSERT` checks.
- make code in both tests consistent with each other.
Original change's description:
> Possibly fix FixedQueue.ConcurrentPushPop flakiness
>
> Queue may be empty when `enqueueThreadFinished` become true.
>
> This is same as the previous fix for `ConcurrentPushPopWithResize`:
> https://chromium-review.googlesource.com/c/angle/angle/+/5823039
>
> Change also removes always true expressions from the
> `ConcurrentPushPopWithResize` test.
>
> Bug: b/302739073
> Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: b/302739073
Change-Id: I8f3840326f3fceed044fa188245772a5ff7b638d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038334
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
d81d29e1
|
2024-11-19T15:53:16
|
|
Revert "Possibly fix FixedQueue.ConcurrentPushPop flakiness"
This reverts commit 84b175546ec95af14b6a85def7d5b2e81ae5a88a.
Reason for revert: more flakiness seen on Pixel 6 and Samsung S22
Original change's description:
> Possibly fix FixedQueue.ConcurrentPushPop flakiness
>
> Queue may be empty when `enqueueThreadFinished` become true.
>
> This is same as the previous fix for `ConcurrentPushPopWithResize`:
> https://chromium-review.googlesource.com/c/angle/angle/+/5823039
>
> Change also removes always true expressions from the
> `ConcurrentPushPopWithResize` test.
>
> Bug: b/302739073
> Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: b/302739073
Change-Id: Iefd994d5a69d2f4add13485d586384814e5e3dd5
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6033739
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
8a2b60b2
|
2024-11-06T17:13:16
|
|
Add stubs for GL_EXT_texture_storage_compression
Bug: angleproject:352364583
Change-Id: I607c19c0c9bec7f0e3dd325e44b42e73f826b61c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5998012
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
84b17554
|
2024-11-18T16:42:47
|
|
Possibly fix FixedQueue.ConcurrentPushPop flakiness
Queue may be empty when `enqueueThreadFinished` become true.
This is same as the previous fix for `ConcurrentPushPopWithResize`:
https://chromium-review.googlesource.com/c/angle/angle/+/5823039
Change also removes always true expressions from the
`ConcurrentPushPopWithResize` test.
Bug: b/302739073
Change-Id: I82ee294208d918b7007d85b2cd90e2642fc1e54f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6030517
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c7a43ec8
|
2024-10-28T12:26:05
|
|
Capture/Replay: Track framebuffers by context
Some game titles treat framebuffer objects as shared. Framebuffer
objects are now tracked per-context to avoid conflicts.
Test: angle_trace_tests --gtest_filter=TraceTest.limbo --offscreen
Bug: b/371985732
Change-Id: I34ae5b54d569eec75ad86b7b363f7a84d56d955c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5973639
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
05b58737
|
2024-11-04T13:52:09
|
|
CL: Add CL command execution status to the enum list
Adding the CL command execution status enums to the auto enum generation
list - packed_cl_enums.json.
The execution status are defined as cl_int in the CL api, and as such
they are not packed at the entry points -
entry_points_cl_autogen.{h,cpp}, and are left to be used at the
implementation layer.
The following files are autogeneration through `run_code_generation.py`
script.
- scripts/code_generation_hashes/packed_enum.json
- src/common/PackedCLEnums_autogen.cpp
- src/common/PackedCLEnums_autogen.h
Bug: angleproject:37997556
Change-Id: Ia00fc12ef02e3882d47a1ad18cd6c11ce6bf63dc
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004062
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d30d81d0
|
2024-11-06T16:08:28
|
|
[code health] Remove underscores from test names in ANGLE (1/N)
In the GoogleTest framework, underscores are not
allowed. [1] ANGLE has underscores in many test
names, and those should be changed.
At the same time, add a comment to a test case
according to the requirements of the Presubmit
check.
````
***************
ANGLE requires a comment describing what a test does.
***************
````
[1]
https://github.com/google/googletest/blob/main/docs/faq.md#why-should-test-suite-names-and-test-names-not-contain-underscore
Bug: angleproject:377543127
Change-Id: I90e634bd985ca518eca43e2c919a3a8bca91a55b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5997835
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Auto-Submit: Ho Cheung <hocheung@chromium.org>
|
|
11d73f1d
|
2024-11-04T20:31:57
|
|
Revert "spirv::Print without ANGLE_ENABLE_ASSERTS -> compile error"
This reverts commit be9e63ad090dc4b86eae08ad8f9f4c9f1a18a6a4.
Reason for revert is to fix build error in "CLProgramVk.cpp" if build
with `dcheck_always_on = false`.
Since https://crrev.com/c/5898609, `spirv::Print()` is now always
defined, so no liker error if `ANGLE_ENABLE_ASSERTS` is not defined.
Bug: angleproject:370557215
Change-Id: I983b57987eb63f601a75e90646c24b9cd16170a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6003012
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
a05a0e15
|
2024-09-25T22:33:36
|
|
Validate PLS shaders against context state
Add shader introspection for PLS uniforms and validate that they match
context state during draw calls.
Bug: angleproject:40096838
Change-Id: I76cdf8add03de8f8b0b3e772c15c0087c1d97e98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893962
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
6b9d3762
|
2024-08-22T15:29:00
|
|
Vulkan: Optimize full texture clears
Currently, a full texture clear (glClearTexImageEXT()) is treated as
a special case of a partial clear (glClearTexSubImageEXT() with image
dims as the input). However, it can be further optimized by treating
it as a clear update.
* For full clears from EXT_clear_texture, the clear update path is
taken.
* It leads to a more optimized path, including the usage of the
following APIs:
* vkCmdClearColorImage()
* vkCmdClearDepthStencilImage()
* It uses the following enum: ClearTextureMode
* If a partial clear uses the extents for the entire image, it is
treated as a full clear.
* Updated the method to determine if a texture is renderable in
clearSubImageImpl().
* Added perf counter: fullImageClears
* Added new unit tests
* Single 3D texture full clear (Clear3DSingleFull)
* 2D RGB SNORM clear (Clear2DRGB8Snorm)
* Added Vulkan perf counter test for 2D and 3D color image clear.
* Updated the related skipped tests on Pineapple.
Bug: angleproject:42266869
Bug: angleproject:375425839
Change-Id: I12ef3002dee190d7f8f43204f7d3f76e05d0b54f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806207
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ddbfae96
|
2024-10-10T18:30:55
|
|
Manual roll vulkan-deps from e8e61a227e2c to b8d6ceadf45d (8 revisions)
Manual roll requested by ynovikov@google.com
https://chromium.googlesource.com/vulkan-deps.git/+log/e8e61a227e2c..b8d6ceadf45d
Also rolling transitive DEPS:
https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers/+log/a62b032007b2e7a69f24a195cbfbd0cf22d31bb0..50bc4debdc3eec5045edbeb8ce164090e29b91f3
https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/4310fd4edae21d711ab31f5183704ad320329419..fcf994a619608c2bdb505189f6e325b1a6b4f294
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/61037741e4d8ccdb8c7b761bc726ab87cc11496d..9553b9751916c06ea6f6a78236397450bc76bd32
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,ynovikov@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: None
Tbr: ynovikov@google.com
Change-Id: Ie07afc8447e73678f6fb9772a3477def5f120117
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5923803
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
|
|
492cf265
|
2024-09-27T13:44:22
|
|
Stubs for GL_blob_cache_angle
Bug: chromium:370538323
Change-Id: Ib56b28c24305db8931f382b16a24975b7277fa7e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5900760
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b16d105f
|
2024-10-03T10:25:32
|
|
Remove Desktop GL front-end support
For Desktop GL applications, please use Zink!
Bug: angleproject:370937467
Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
55980dbd
|
2024-06-07T13:45:23
|
|
common: Improve/fix spir-v utils
This change improves the handling of macroed-sections of the code.
Also, fixed some typos.
Bug: angleproject:370557215
Change-Id: I437b8c4d835dada4554569c72ef7100568c6be48
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5898609
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
435bd0a9
|
2024-10-02T16:37:06
|
|
ssci: use canonical date format
Bug: chromium:370881022
Change-Id: Ie8a310b11517fd1be7f95f246bcb9cfe48d95791
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5903336
Auto-Submit: Jiewei Qian <qjw@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
44b6203c
|
2024-09-02T16:23:44
|
|
Add new functions defined in VK_KHR_Synchronization2 extension
Add vkCmdPipelineBarrier2 and vkCmdWriteTimeStamp2.
The other functions introduced in VK_KHR_Synchronization2
are not being used at the moment.
Bug: b/356985874
Change-Id: I4f8b432aee9b11debcb8abe8b3089f88ad7a069b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5832709
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
1b4d6185
|
2024-09-12T09:18:46
|
|
Vulkan: Cleanup sRGB related code
Image and image view code is littered with sRGB related enums, even
in places that don't deal with sRGB. Remove sRGB related parameters
from initLayerImageView and getLevelLayerDrawImageView methods, which
now assume default values. Add dedicated methods that allow overriding
sRGB state values.
Also introduce ColorspaceState struct that consolidates all sRGB
related states, this will be used in follow up changes to track
and infer colorspace of image views
Bug: angleproject:40644776
Change-Id: Ifb366db48043e376f9ff6c30c852c44dd96562a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860808
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
c9d55051
|
2024-09-06T10:56:07
|
|
Vulkan: Consolidate dirtyRanges before vertex conversion
Detect two ranges overlap or are continuous and merge them. This reduces
number of dispatch calls as well as avoids redundant conversion.
Bug: b/357622380
Change-Id: I06b73a1e9fd573d79af985b247f4d66bf97f756e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5851642
Auto-Submit: Charlie Lao <cclao@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
10d56e63
|
2024-09-06T10:56:07
|
|
Vulkan: use mEntireBufferDirty if range covers entire buffer
Detect the dirtyRange covers entire buffer and set mEntireBufferDirty
instead of add range into mDirtyRanges. This will get into a much
simpler code path that will not have any redundant conversion. This also
removes quite big portion of overlapped ranges cases without much of
overhead.
Bug: b/357622380
Change-Id: Iedaa3662a6fc52257e71d39ab75baddf6ad3e41b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5840476
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Charlie Lao <cclao@google.com>
|
|
d886a0fb
|
2024-08-29T00:00:00
|
|
Metal: Remove unused platform macros
ANGLE_APPLE_AVAILABLE_XCI and
ANGLE_APPLE_AVAILABLE_XI are
no longer used.
Bug: angleproject:360147119
Change-Id: I872fbe994a352673a6e9ad6468f0141c3ed98694
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5823423
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
24a3d30d
|
2024-08-28T14:33:49
|
|
Possibly fix FixedQueue.ConcurrentPushPopWithResize flakiness
Queue may be empty when `enqueueThreadFinished` become true.
Bug: b/302739073
Change-Id: Idb636e3f87c1217520a9e68a69e749f5bcac4d0f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5823039
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b512e42d
|
2024-08-20T15:12:19
|
|
Reland: Metal: Fix availability for kIOMainPortDefault
Remove ad hoc deprecation disables for
kIOMasterPortDefault.
macCatalyst kIOMainPortDefault available 15.0,
less than minimum 15.6. Remove the ifdefs.
Reland: Guard macOS specific unittests with compile guards.
The patch changes the tested function to be macOS only.
Bug: angleproject:360147118
Change-Id: Icbcc811a066995e742825a364fc5f0b5a27a59bc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5816832
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
b52f281a
|
2024-08-20T00:00:00
|
|
Metal: Remove unused and obsolete availability macros
* Both usages of ANGLE_APPLE_AVAILABLE_XC are obsolete.
* ANGLE_APPLE_AVAILABLE_CI and ANGLE_APPLE_AVAILABLE_I
are unused.
* iOS and tvOS SDK version ranges are supported without
redefinitions.
* Mac Catalyst is defined in the supported SDK versions.
Bug: angleproject:360147119
Change-Id: I8e7730c31f73c03d491373a0a5d316432513d8a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5817148
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
790e0162
|
2024-08-09T17:11:38
|
|
Vulkan: Add dirty range to VertexConversionBuffer class
Previously, ConversionBuffer only has a boolean indicates it is dirty or
not. This CL adds mDirtyRange to it to indicate which range of data has
been modified. The existing dirty boolean has been changed to
mEntireBufferDirty so that all the current code will still work. Right
now mEntireBufferDirty is always set when we mark it dirty, which means
entire buffer gets converted. mDirtyRange has not been used to reduce
the data to be converted. Right now the range is always being merged to
the existing range and not actually being used in this CL. It will be
used in the next CL.
Bug: b/357622380
Change-Id: Ibfa702b29011f4e26c511d5db85c07cbf2a4aefb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5778347
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
36f7e03a
|
2024-08-21T13:49:10
|
|
Revert "Metal: Fix availability for kIOMainPortDefault"
This reverts commit a712626e940cbd3ff6f279a6e838362392a3fd1d.
Reason for revert: breaks iOS
https://chromium-review.googlesource.com/c/chromium/src/+/5802272
https://ci.chromium.org/ui/p/chromium/builders/try/ios-simulator/2048194/overview
Original change's description:
> Metal: Fix availability for kIOMainPortDefault
>
> Remove ad hoc deprecation disables for
> kIOMasterPortDefault.
> macCatalyst kIOMainPortDefault available 15.0,
> less than minimum 15.6. Remove the ifdefs.
>
> Bug: angleproject:360147118
> Change-Id: I2ccc08814e267984ff53275cc2886e2bfa8d4c2a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797149
> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:360147118
Change-Id: Iab3e8d1dece4866732ecbebab4c83f274b99e034
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5803985
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
25237423
|
2024-08-20T15:22:32
|
|
Metal: Remove ifdefs for primitive topology class
MTLPrimitiveTopologyClass availability iOS 12.0, minimum runtime
15.0. Remove the ifdefs.
Hardcoding ANGLE_IOS_DEPLOY_TARGET is dangerous, likely it has never
been correct. Remove. Should use __IPHONE_OS_VERSION_MIN_REQUIRED.
Bug: angleproject:360147118
Change-Id: I43d7a364fa0237af1ee1f546015ae884fc373b15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797141
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
a712626e
|
2024-08-20T15:12:19
|
|
Metal: Fix availability for kIOMainPortDefault
Remove ad hoc deprecation disables for
kIOMasterPortDefault.
macCatalyst kIOMainPortDefault available 15.0,
less than minimum 15.6. Remove the ifdefs.
Bug: angleproject:360147118
Change-Id: I2ccc08814e267984ff53275cc2886e2bfa8d4c2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797149
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e0f790c0
|
2024-08-20T12:08:40
|
|
Metal: Use present APIs for Metal availability
Use non-deprecated APIs for checking Metal backend
availability.
macCatalyst and macOS needs MacFamily2
Availability:
- macOS 10.15, minimum runtime 10.15
- macCatalyst 13.1, minimum runtime 16.5
iOS, minimum runtime 15.0, can always use the backend.
Bug: angleproject:360147118
Change-Id: Id0b70c81bc8b54a22b94ba514aab148b202d58ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797053
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
57a3e9a7
|
2024-08-15T00:00:00
|
|
Prevent compilation with unsupported Apple SDK versions
Bug: angleproject:360147119
Change-Id: Ie9924cb49ffa729d454a2869a2d19d957500bd10
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5793513
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0bb0a886
|
2024-08-08T17:05:27
|
|
Drop .{ANGLE_REVISION} from ANGLE version when revision == 0
This can happen when git revision is unavailable, such as in rolls to
Android. Instead of using
ANGLE 2.1.0 git hash: ...
use:
ANGLE 2.1 git hash: ...
This applies to GL_VERSION, version we see in logcat etc.
Bug: b/348044346
Change-Id: Iaef13025922cf0a1a9c2c1e556b9e9fe2a1aae01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5774120
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|