|
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>
|
|
995c4c4d
|
2025-08-20T12:14:47
|
|
Capture/Replay: Target GLES3.1 to avoid SSO limitations
Retracing with get_min_reqs can produce results which limit trace
portability. Modify retrace script to detect when
GL_EXT_separate_shader_objects is required, and then to increase
min_version to 3.1 where this ext was moved to core and remove
the ext from the required list.
Test: angle_trace_tests --gtest_filter=*onmyoji --use-gl=native
Bug: b/440102792
Change-Id: I36258fd7b9b5c5aa3e87ad9908849ef2a900e898
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6866639
Auto-Submit: Mark Łobodziński <mark@lunarg.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.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>
|
|
5d9d9b9b
|
2025-08-19T17:12:03
|
|
test: Use eglGetPlatformDisplay()
From the EGL 1.5 spec:
Appendix F
Version 1.5
EGL version 1.5 was voted out of the Khronos Technical Working Group
on January 31, 2014, and formally approved by the Khronos Board of
Promoters on March 14, 2014.
EGL 1.5 is the sixth release of EGL. It introduces the following new
features (the EGL extension(s) each feature is based on are also shown
parenthetically):
* Platform support:
– Providing a mechanism for support of multiple platforms (such as
window systems or offscreen rendering frameworks) in a single EGL
implementation at runtime (EGL_EXT_platform_base).
Until https://crrev.com/c/6552257, many tests used
eglGetPlatformDisplayEXT() which is provided by the EGL
extension EGL_EXT_platform_base. With the promotion of the
EGL_EXT_platform_base functions to core EGL in version 1.5 and ANGLE
supporting EGL 1.5 (as of at least 2019), the calls were updated to use
eglGetPlatformDisplay().
Unfortunately, EGLContextPassthroughShadersTest was missed.
Bug: b/409384875
Test: angle_end2end_tests
Change-Id: I5c620bce98c8e76113588f4c94b77d95a5223171
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6862841
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
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>
|
|
da5a5628
|
2025-08-11T10:53:06
|
|
bitset_utils: Fix GCC shift-count-overflow warning
GCC triggers a -Werror=shift-count-overflow when kDefaultBitSetSize
is 64, due to the constructor compiling a branch with `value >>= 64`.
Although this path is never executed at runtime, GCC still inspects
the code and emits the warning as an error.
Refactored the constructor to:
- Move common reset() into a single place
- Split initialization into initFromValue<S>() overloads
enabled only for S < 64 or S >= 64 via std::enable_if_t
- Avoid generating any shift code when S >= 64
This change ensures GCC does not instantiate invalid shift operations
and keeps the initialization logic cleaner.
BUG: angleproject:438226513
Change-Id: I1ed0b42540f1bfce469d5738757045bc6d92ac61
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845475
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.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>
|
|
9bd6785d
|
2025-08-12T15:19:08
|
|
Revert "Tests: Skip CapturedTestCL to unblock vulkan-deps roll"
This reverts commit 2a5ad67c883a28436d7399d73a2ccdb9ef53c641.
Additionally, this modifies CapturedTestCL.cpp so there is no
failure coming from the vulkan-deps roll.
Bug: angleproject:438220619
Bug: angleproject:438195622
Change-Id: I6cf2d11d7ff77ce4513948b22b8c59d970c7810b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842222
Reviewed-by: Austin Annestrand <a.annestrand@samsung.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
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>
|
|
119ffd44
|
2025-08-13T16:07:52
|
|
Fix -Wreturn-type in ShadowSamplerFunctionsTest::FunctionName
Add UNREACHABLE() and a fallback return to ensure the non-void function
always returns when switch does not cover all enum values.
BUG: angleproject:438226513
Change-Id: I3904dd59b323b90930d9251b060ab7067ff412c7
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845486
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>
|
|
a06cb368
|
2025-08-12T11:45:43
|
|
Fix GCC -Wdangling-pointer warning in NodeStackGuard
The previous implementation stored the address of a local member
(oldNodeStack) into ConsList::tail, which triggers the warning even
though the lifetime is safe within the guard's scope.
This change allocates a copy of the previous nodeStack on the heap
using std::make_unique, and stores that pointer in tail. This ensures
the referenced ConsList object has a lifetime tied to the guard object
itself and is not considered a dangling pointer by GCC's static
analysis.
BUG: angleproject:438226513
Change-Id: Ifea04515db7b1988dff6ec41c60799158b753128
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845476
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
2b8f216c
|
2025-08-13T08:44:34
|
|
Fix GCC -Wdeprecated-copy warning in ImageLoadContext
Add an explicit copy assignment operator to ImageLoadContext to replace
the implicitly-declared, deprecated version. This makes the intended
assignment behavior explicit and silences the GCC warning when assigning
a default-initialized value.
BUG: angleproject:438226513
Change-Id: I44d9b8bf12c5e3172d30ce5413460d881e61449b
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845482
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
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>
|
|
6b03372e
|
2025-08-13T08:58:35
|
|
Fix GCC -Wconversion-null error in WriteParamValueReplay
Replace insertion of NULL with the string literal "NULL" to prevent
GCC -Wconversion-null.
BUG: angleproject:438226513
Change-Id: I7048bc43f282d94e72a5e090176c805d2baa5b06
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6845483
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
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>
|
|
1d8279a2
|
2025-08-13T13:35:02
|
|
Do not sort ANGLE internal uniforms or built-in uniforms
On Mac, for webGL app on chrome, if the uniforms added by ANGLE
are not placed at the top of the ANGLE_UserUniforms struct, the user
defined uniforms in the same ANGLE_UserUniforms struct seem to be
messed up and not read correctly by shader code. This change fixes
it by moving the sortUniforms() function call to the place before we
add ANGLE internal uniforms. That way ANGLE internal uniforms will
be inserted later and stay on top of ANGLE_UserUniforms struct.
Bug: chromium:437678149
Change-Id: I34a0d3dcb98c5fe30ad248381ecb5f7f78252275
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6847281
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.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>
|
|
63d8f74c
|
2025-08-12T19:39:03
|
|
WGSL: move DeclareDefaultUniforms() out of SPIR-V
WGSL needs the same thing (default uniforms gathered into
an interface block).
Changes 3 things in the file move:
1. Now capable of adding a named interface block (Vulkan's
is nameless) to hold the default uniforms.
2. Removes inactive uniforms
3. Deals with the case where there are no active default
uniforms, by not declaring an interface block at all.
Bug: angleproject:376553328
Change-Id: Ia25318b4db93068010c3c44414cd00803b783799
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6843929
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
|
|
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>
|
|
edb05627
|
2025-08-12T12:17:36
|
|
Fix sort uniform bug
Current sort doesn't take care of the case when both uniforms
are struct specfiers. Given that struct types are easily broken by
sort, make the sort not reordering uniforms if both are structs.
Bug: b/437825940
Change-Id: Idda1810ac4234f7e1547735e4e09658ab0a57eed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842936
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
899f3505
|
2025-08-07T09:59:19
|
|
TestSuite: Android: Call onCrashOrTimeout() on test crash
Currently, when a test crashes on Android we don't get any results for
tests that ran or for the crashing test itself. This makes it difficult
for developers to debug the issue, since they don't know which test
crashed.
Add signal handlers which call onCrashOrTimeout() when a test crashes.
Typically, crashes occur within the individual tests rather than in the
test runner (TestSuite), so it should be "safe" to attempt to dump the
results up to and including the crash to aid with debugging.
This is still risky since things are in a bad state, but we expect
(essentially) all crashes to be in the individual tests, ANGLE, or the
underlying driver code, rather than in the TestSuite instance, so
writing the results JSON file should have a good chance of succeeding.
Worst case, we just crash again and get nothing (like we have before
this change).
Bug: b/279980674
Change-Id: Ifd5f3b97d5af731586e7bbf765bb60b3cb4f503b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6827986
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Solti Ho <solti@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>
|
|
ef4bc113
|
2025-08-07T14:20:08
|
|
Add DIR_METADATA to specific buganizer_public component_id
Currently LUCI Analysis file bugs for angle test flaky issue under the
top level Chromium component, example: http://crbug.com/401993176
These bugs should filed directly under the Public Trackers > ANGLE, to
avoid engineers updating the component manually.
Bug: b/437142709
Change-Id: Ie8fa4f02fea10c49cb94d736f674f655fe9f791b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6829151
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
7e28089b
|
2025-07-31T18:44:01
|
|
WGSL: support bvecs in uniforms
WGSL does not allow booleans in the uniform address space.
The last CL uses u32s to represent bools in the uniform address
space, and this CL uses vecN<u32> to represent bvecN.
Bug: angleproject:376553328
Change-Id: Ibf9f1fbf230ca03dd3d4661ba599e5fb1cb26ac4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6808955
Reviewed-by: Liza Burakova <liza@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
|
|
f92d6f4b
|
2025-04-07T17:42:46
|
|
CL: Route API trace to logcat for Android
For better logging when running Android APKs
Bug: angleproject:433980940
Change-Id: Ib924262a92728d0a9711a5b98f051634341859d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785090
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@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>
|
|
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>
|
|
2a5ad67c
|
2025-08-12T10:23:10
|
|
Tests: Skip CapturedTestCL to unblock vulkan-deps roll
Test: angle_end2end_tests --gtest_filter=CapturedTestCL.*
Test: capture_tests.py
Bug: angleproject:438195622
Change-Id: I9dd0f861ce4325c29305aa8de598f3434ec86ab3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842935
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b2e2766c
|
2025-08-12T11:08:46
|
|
Translator: Reject bool < bool
This is not allowed per the GLSL ES spec.
Bug: chromium:437983671
Change-Id: I9bd46718a35917dcdf6382cd51253ca2b68d5636
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842555
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
3643c21d
|
2025-08-11T15:02:18
|
|
Suppress oclcts NonUniform Workgroup failures pt.2
Suppress 2 other non-uniform workgroup
smoke tests (as a stop-gap) until we root-cause
the issue.
Unblocks:
https://chromium-review.googlesource.com/c/angle/angle/+/6831861/1
Bug: angleproject:42267085
Change-Id: I956d3706e160f38e33e5789e70abdc343fac8b54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6838877
Reviewed-by: Geoff Lang <geofflang@chromium.org>
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>
|
|
9a23635c
|
2025-08-09T18:17:33
|
|
Tests: Add Frost and Flame trace
Test: angle_trace_tests --gtest_filter="*frost_and_flame*"
Bug: b/437598600
Change-Id: Icf8c5ce3e0e1f0cadc442aedc8b38a70efb1e3f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6834277
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Mark Łobodziński <mark@lunarg.com>
|
|
5f5baf86
|
2025-08-08T10:22:07
|
|
Reduce WebGLCompatibilityTest::L32FTextures test time
This test is looping formats. Within each loop it compile the same
program which makes this test take very long to finish. This CL caches
the programs so that it only compile/link once. This reduce this test
run time on my local gLinux box from 1633 ms to 326 ms.
Bug: angleproject:40096431
Change-Id: I32d7ad4fd25e1e4130766578fff21b1a2058c183
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6830119
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
9367369d
|
2025-08-08T16:56:58
|
|
Tests: Add Kingshot trace
Test: angle_trace_tests --gtest_filter="*kingshot*"
Bug: b/437417676
Change-Id: I6c4a7a095266f6f99b0810854acbbfb50024d52f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6832638
Reviewed-by: Solti Ho <solti@google.com>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
ca3d732d
|
2025-07-24T16:22:31
|
|
WGSL: support bool in uniforms
WGSL does not allow booleans in the uniform address space.
This CL changes the translator to substitute u32 for bool
in the uniform address space, and convert it to bool on use.
Arrays of bools are obviously arrays of u32s, and those
will need special conversion functions to convert the entire
array<u32> to array<bool> if necessary.
This also includes the optimization of an array<bool> in a
uniform--when indexing into it, only the indexed element
will be converted to a native bool, instead of converting
the entire array and then indexing.
Note that substituting u32 for bool matches std140, so this
change requires no changes to layout of uniforms.
Also note that WGSL really likes explicit casts, so there's
not really a way to avoid inserting explicit casts everywhere
when using u32.
Bug: angleproject:376553328
Change-Id: I8f72e55c6b401c28ff622622df7a450b7032721f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785609
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
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>
|
|
8796f68c
|
2025-08-07T14:25:19
|
|
Tests: Add Top Heroes: Kingdom Saga trace
Test: angle_trace_tests --gtest_filter="*top_heroes_kingdom_saga"
Bug: b/437162076
Change-Id: Ia690266b34f0da0c23fbd099ed28f20657529644
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6828593
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
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>
|
|
b778f1ce
|
2025-08-07T15:31:01
|
|
Balance test shards to 10 minutes
Shards increased due to googletest roll:
angle_end2end_tests on Win ASAN: 10 -> 14
angle_deqp_gles3_tests on Linux ASAN and TSAN: 8 -> 11
Drive-by shards increase for slowness which was not investigated:
angle_end2end_tests:
on Linux Intel and Windows and Linux NVIDIA: 2 -> 3
on Win Intel experiment (UHD 770, 2 processes): 3 -> 5
on Win Intel (UHD 630, 1 process): 4 -> 10
angle_restricted_trace_gold_tests
on Linux Intel and Windows and Linux NVIDIA: 1 -> 3
on Win Intel UHD 770: 1 -> 4
on Win Intel UHD 630: 1 -> 5
angle_trace_perf_vulkan_tests
on Win Intel UHD 770: 2 -> 4
on Win Intel UHD 630: 2 -> 3
Skip EGLDisplayTest.ContextLeakAfterTerminate on Linux Intel,
which started failing with the new sharding.
Bug: angleproject:428697844, angleproject:437259106
Change-Id: I3ba458aa7b68bddf9786bb9fcbc2a3ed7479556c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6827389
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@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>
|
|
61ddca79
|
2025-08-07T11:16:29
|
|
Tests: Add Gossip Harbor ANGLE trace
Test: angle_trace_tests --gtest_filter=*gossip_harbor
Bug: b/437087719
Change-Id: Ia0d313b3e34074df8e24ad3eae63b4718ed2bfc7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6828000
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@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>
|
|
1943d505
|
2025-08-06T10:03:45
|
|
Tests: Add Seaside Escape ANGLE trace
Test: angle_trace_tests --gtest_filter=*seaside_escape
Bug: b/436801950
Change-Id: Iedc4b03317ef02585ccf86b54494f1938379a68a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6823580
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Mark Łobodziński <mark@lunarg.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>
|
|
88de021d
|
2025-08-01T17:15:22
|
|
tests: Skip PbufferDifferentConfig on system EGL
Skip the test EGLBackwardsCompatibleContextTest.PbufferDifferentConfig
when testing the system EGL, because not all platforms expose
ANGLE-specific extensions.
Bug: b/409384875
Test: angle_end2end_tests \
--gtest_filter=EGLBackwardsCompatibleContextTest.PbufferDifferentConfig/ES2_Vulkan_NoFixture
Change-Id: I1556d7981d1e6c8c6fc1803cafcb76fa1052dcef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6814161
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
bc7e86b1
|
2025-07-30T14:55:34
|
|
tests: RequestedRendererCreated: Get created context version
If the driver being tested does not support the ANGLE extension
EGL_ANGLE_create_context_backwards_compatible, then the Context version
returned may not match the requested version.
Update the test RendererTest.RequestedRendererCreated to query the
current Context's version if the extension is not supported so the
renderer string is checked against the correct value. Continue enforcing
the renderer string has the expected value if the extension is
supported.
Bug: b/409384875
Test: angle_end2end_tests
--gtest_filter=RendererTest.RequestedRendererCreated/*
Change-Id: Iad1b6d36a31b7d79e8fc5fae9e4cc9769b55edb8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6803326
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c2316adb
|
2025-08-05T10:43:09
|
|
Add support for ARM to expectations file
Add support for skipping tests on ARM devices with the tag "ARM".
Bug: b/279980674
Change-Id: If310955c5dfb2af19493f8af70f4f6c00c97fcc9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6821832
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
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>
|
|
5f42ce7e
|
2025-08-05T11:57:54
|
|
Enable KHR-GLESEXT tests on bots
* Enabled several bots to run the khr_glesext tests.
* Skipped some failing tests for Vulkan.
Bug: b/436389014
Change-Id: If0c43f508eb04c21307f75c6dc62e3ef30b0556e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6821642
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
71b7b5ee
|
2025-08-04T18:44:35
|
|
Add KHR-GLESEXT test suite
* Added rules to build new dEQP test binary to run KHR-GLESEXT tests:
angle_deqp_khr_glesext_tests
Bug: b/436389014
Change-Id: I53b74605d3c2a9a5f6a8fece17bc3f7656a6772c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6820701
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
f3b4b716
|
2025-08-05T14:28:04
|
|
TracePerfTest: Disable debug callbacks for GLES1 on Android
We're seeing nullptr crashes when running GLES1 traces through
the Android EGL loader with debug callbacks enabled.
The callbacks are only enabled for Debug builds.
Current theory is that the loader exposes the extension, but
doesn't actually connect the call for GLES1 contexts.
For now, expand the existing ARM skip to all Android devices.
Test: restricted_trace_perf.py --renderer vulkan -f minetest
Bug: b/352386141
Bug: b/436624755
Change-Id: I8ebe8f53c5efdecb2169ce017886753779ef5219
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6821913
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Cody Northrop <cnorthrop@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>
|
|
fc0e0397
|
2025-07-31T13:15:45
|
|
Translator: Fix location validation for inout
Without this validation, a shader using an inout variable can
write into a memory beyond the limit set by MaxDrawBuffers when
shader framebuffer fetch is enabled.
* Extended the location check in visitSymbol() to include InOut
qualifiers (EvqFragmentInOut) as well (in ValidateOutputsTraverser).
* Moved RewritePixelLocalStorage() after ValidateOutputs() to avoid
issues related to locations not being specified in the InOut nodes
from the PLS implementation.
* Added a unit test to test that this case results in a compilation
error: GLSLTest_ES3.CompileFSWithInoutLocBeyondMaxDrawBuffers
Bug: chromium:435139154
Change-Id: I44c729377a2e1d3126c2d279172217b2ab92b57b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6806230
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
b0e0c9f6
|
2025-07-30T17:20:25
|
|
tests: DefineTexture2DArrayShouldFail skip on ES3+
The test Texture3DTestES2.DefineTexture2DArrayShouldFail is validating
behavior specific to OpenGL ES 2.0. Skip the test when running on
OpenGL ES 3+ contexts, which is possible when testing the system EGL
which may not support the extension
EGL_ANGLE_create_context_backwards_compatible.
Bug: b/409384875
Test: angle_end2end_tests
--gtest_filter=Texture3DTestES2.DefineTexture2DArrayShouldFail/*
Change-Id: I129ce494c784c3889f21d4950a0302258b423b08
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6803336
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
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>
|
|
aa533732
|
2025-07-28T15:56:13
|
|
CreateGeometryShaderInES3: Skip on ES3.1+
When testing the system EGL (angle_test_enable_system_egl = true), the
context returned is the maximally conformant version, which can be
OpenGL ES 3.2. The test GeometryShaderTestES3.CreateGeometryShaderInES3
verifies that geometry shaders cannot be created, assuming it will only
ever be testing ES 3.0 contexts.
1. Add ANGLE_INSTANTIATE_TEST_ES3_AND_ES31_AND_ES32() to instantiate a
test for ES 3.0, 3.1, and 3.2.
2. Update GeometryShaderTestES3.CreateGeometryShaderInES3 to skip when
testing ES 3.1+ contexts.
3. Instantiate GeometryShaderTestES3 for ES 3.0, 3.1, and 3.2.
Bug: b/409384875
Test: GeometryShaderTestES3
Change-Id: Ic5b4dbb167b8de7f24da285b4620f5257ed7df54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6794766
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: 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>
|
|
b61038bf
|
2025-07-28T21:55:11
|
|
Tests: Add ANGLE trace for Whiteout Survival
Test: angle_trace_tests --gtest_filter=*whiteout_survival
Bug: b/435147875
Change-Id: I09c429dca130321f2a7cd33abdb0521715637257
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6801131
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Reviewed-by: Cody Northrop <cnorthrop@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>
|
|
e286ef78
|
2025-07-24T21:19:54
|
|
ANGLE: Add validation test for GL_RENDERER string format
This change introduces a new ANGLE end-to-end test to validate the
format of the GL_RENDERER string, preventing regressions caused by
downstream modifications.
A recent issue (b/318636997) was caused by a partner modifying the
ANGLE GL_RENDERER string in a way that broke Skia's parser. This
revealed that the string format is a de-facto API contract that must
be enforced.
This new test, RendererTest.ValidateCanonicalFormat, serves as an
automated guardrail and will become part of the Android CTS.
The test enforces the following structural contract:
1. The overall structure must be "ANGLE (Vendor, Renderer, Version)".
2. The separator between components must be ", ".
3. The Vendor, Renderer, and Version components must not be empty.
This ensures the string is parsable by clients like Skia without
over-constraining the content of the component strings, which may
originate from underlying drivers.
The test correctly skips validation on the Null backend, which is not
subject to this contract.
Test: autoninja -C out/Android angle_end2end_tests && out/Android/angle_end2end_tests --gtest_filter="RendererTest.*" --num-retries=0
Bug: b/432805963
Change-Id: I1202074cc9f4413ee88e4534fb72fb71101721e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6788522
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b4d84458
|
2025-05-23T18:08:19
|
|
Move Buffer from VertexBinding to VertexArray
In later CL we will not taking shared context lock for certain
VertexArray API calls. VertexArray itself is per context, so this sounds
reasonable to do. The main challenge here is a lot of VertexArray
function end up accessing gl::Buffer object, which could be modified by
other shared contexts. In order to safely not taking the shared context
lock, we need to separate out Buffer object out of VertexArray itself so
that these lockless APIs will take VertexArray that does not have access
to buffer.
In this CL, VertexArray is split into two classes: VertexArrayPrivate is
everything in VertexArray except buffers. VertexArray is a subclass of
VertexArrayPrivate and owns all the buffers. Buffer is removed from
gl::VertexBinding class. In order to let back end access to buffers,
VertexArrayImpl holds a weak reference to
VertexArray::mVertexArrayBuffers (which is a vector of buffers).
Further, VertexArrayBufferBindingMask mBufferBindingMask is moved from
VertexArrayState into VertexArray class well, since it tracks which
index has a non-null buffer. The bulk of change are due to the
VertexARrayImpl constructor change, since it now takes
vertexArrayBuffers argument. Other bulk of changes are due to
VertexBinding no long has the buffer, but you need to get it directly
from VertexArray or VertexArrayImpl.
This CL also reverts some of the change in crrev.com/c/6758215 that
mVertexBindings no longer contains kElementArrayBufferIndex.
BYPASS_LARGE_CHANGE_WARNING
Bug: b/433331119
Change-Id: I15f4576f7c5c8d8f4d9c9c07d38a60ce539bfeea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774702
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8dca0efe
|
2025-07-21T15:29:10
|
|
Replace VertexArray::DIRTY_BIT_LOST_OBSERVATION with API call
This dirty bit was added so that back end can inspect buffers and set
proper VertexArray::DirtyBitType. The same thing can achieved by add a
virtual function on VertexArrayImpl class. The advantage of virtual
function on VertexArrayImpl is that all back end essentially have the
same implementation and we can just implemented in VertexArrayImpl
instead of duplicate in each back end. The other advantage is after this
CL DIRTY_BIT_BINDING_n and DIRTY_BIT_BUFFER_DATA_n will be well aligned
instead of offset by 1 caused by DIRTY_BIT_LOST_OBSERVATION. The other
motivation of this change is in later CL I want to move
mBufferBindingMask out of VertexArrayState, which means back end will
not have access to it. By using VertexArrayImpl API, I can pass
mBufferBindingMask directly to the back end via function parameter. So,
this CL removed DIRTY_BIT_LOST_OBSERVATION, added
VertexArrayImpl::checkBufferForDirtyBits().
Bug: b/433331119
Change-Id: I5c8cbc9bace63db416e86c2ae3631f74a12b20b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775986
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
130fb2a1
|
2025-07-29T08:16:57
|
|
Vulkan: Don't allocate ExternalFormatIDs for sampling usecases
Update the condition for allocating YUV ExternalFormatIDs to exclude
sampling-only usecases. Also, rename "isYuvResolve()" to
"isYuvExternalFormat()" to better reflect intent.
Bug: angleproject:386749841
Change-Id: I0e4f5b79937ea8ad98b5d00fdc7531b34ffa7e16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6797965
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
40a2a912
|
2025-07-15T14:39:10
|
|
Track mElementArrayBuffer in std::vector<VertexBinding>
Right now mElementArrayBuffer are treated a little bit differently from
other vertex buffers, mainly because of elementBuffer does not have
corresponding "attributeIndex" to bind to. But a lot of logic in
VertexArray are same for mElementArrayBuffer and mVertexBindings. In
recent CLs, we are using mBufferBindingMask to track both
mElementArrayBuffer and mVertexBindings with kElementArrayBufferIndex
represents element buffer. With that, some of logic handling buffers can
be merged, with looping of mBufferBindingMask bits. In later CL, we are
going to separate "binding" from "buffer" so that we can move buffer out
of VertexArrayState class. So this is also a preparation CL so that when
we move buffers out of VertexArrayState class, it does so for all
buffers (both element buffer and vertex buffers). In order to track how
many vertex buffers in mVertexBindings, a new variable
mMaxVertexAttribBindings is added. In later CL when we move buffers out
of VertexBinding, some of this CL's change will be reverted back,
mVertexBindings will be reverted back to track only bindings and
mMaxVertexAttribBindings will be deleted.
Bug: b/433331119
Change-Id: Idd2cfe4ce64bb22923bac70abb752e132fe1abd3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6758215
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
09bbe914
|
2025-07-28T12:53:53
|
|
Add test for mapBuffer and disable/enable attrib interaction
Added a test that mapBuffer while attribute is disabled, the draw call
should succeed. If attribute is then enabled, the next draw call should
fail with GL_INVALID_OPERATION error.
Bug: b/433331119
Change-Id: I61d9ff16b0d485309c58c2fe2939c3de8b25864a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6792268
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
4f4eab29
|
2025-06-30T14:58:28
|
|
Reset index buffer offset between indirect GL_LINE_LOOP draws
In two consecutive glDrawArraysIndirect with GL_LINE_LOOP mode, and
bound to a different Indirect Buffer, the variable value captured
through TransformFeedback is the same as the first result when the
second DrawArraysIndirect.
When calling DrawArraysIndirect the second time, DIRTY_BIT_INDEX_BUFFER
should be set to dirty so that it re-gets INDEX BUFFER to get the
correct result.
Bug: angleproject:428561247
Change-Id: I7f4ebb53e20cf8e362e67679b45185b8b68c56ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6687309
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Tingwei Guo <tingwei.guo@arm.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
866370dc
|
2025-07-28T22:12:00
|
|
Disable texture_compression_astc_decode_mode exts during capture
The GL_EXT_texture_compression_astc_decode_mode and
GL_EXT_texture_compression_astc_decode_mode_rgb9e5 extensions are
not widely supported outside of ARM and Qualcomm. Disable while
ANGLE capture is enabled.
Test: angle_trace_tests --gtest_filter=*whiteout_survival
Bug: b/434819166
Change-Id: I4cebf6942144c61a954dfd9dfe9bd9935638ff60
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6794776
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
9635df8e
|
2025-07-16T15:13:19
|
|
Move mCached*ArrayBuffers from VertexArrayState to VertexArray
The three cached AttributeMasks variables are mCachedMappedArrayBuffers,
mCachedMutableOrImpersistentArrayBuffers,
mCachedInvalidMappedArrayBuffer. They are currently declared in
VertexArrayState class. They are only accessed by VertexArray front end,
back end does not use them, which means they do not need to be in
VertexArrayState class. This CL moves these three variables to
VertexArray class in preparation for later CLs that VertexArrayState
will not have access to Buffer objects.
This CL also removed unnecessary
updateCachedMutableOrNonPersistentArrayBuffers call from
VertexArray::enableAttribute, since
mCachedMutableOrImpersistentArrayBuffers does not depend on any
variables enableAttribute() is modifying.
Bug: b/433331119
Change-Id: I8b1f0c7d511dbc6858d20f33863154e8fe3077f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6762902
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
214a48c4
|
2025-07-16T12:42:18
|
|
Vulkan: add support for yuv resolve with transient image
Add support for the YUV_target extension in cases where the
implementation supports VK_ANDROID_external_format_resolve without
supporting nullColorAttachmentWithExternalFormatResolve.
Bug: angleproject:386749841
Tests: ImageTest*YUV*
Change-Id: Iebcb4f843b962f3d0d2f4e42db479902b6c1f849
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6761834
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
2b12571c
|
2025-07-27T20:07:50
|
|
Tests: Add Last War: Survival Game trace
Test: angle_trace_tests --gtest_filter="*last_war_survival_game"
Bug: b/434548051
Change-Id: I25750ef43d58ee06a3149b9fce26b6d9b42c9931
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6789518
Reviewed-by: Mark Łobodziński <mark@lunarg.com>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|
|
1df94a64
|
2025-07-25T15:46:42
|
|
Tests: Add Dice Dreams ANGLE trace
Test: angle_trace_tests --gtest_filter=*dice_dreams
Bug: b/434552757
Change-Id: Ie56bd5fee6aebbddc9c613609d636acca11749a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6789519
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
c8209fec
|
2025-07-25T10:16:25
|
|
Tests: Add Avatar World trace
Test: angle_trace_tests --gtest_filter=*avatar_world
Bug: b/434146678
Change-Id: I3983c0720f541f5d28a82f4c3bcff7b6ea4252a3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785913
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|
|
e4007fff
|
2025-07-24T15:50:48
|
|
GL: Remove ARB_base_instance check for EXT_base_instance support
This is a speculative fix for reported flickering issues on Linux.
https://chromium-review.googlesource.com/c/angle/angle/+/6580170 changed
EXT_base_instance to only be supported when it is not emulated and fixed
the condition to include ARB_base_instance, possibly hitting driver bugs
on some devices.
Bug: angleproject:355645824
Bug: chromium:427956856
Change-Id: I869fa7f618e82ad46c1953f0bacef0767bbc793e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6777576
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6a03109f
|
2025-07-09T18:24:31
|
|
Refine getCompressionRate
As Vulkan spec states, vkGetImageSubresourceLayout should not be called
for the android swapchainimage when the image is not bound to memory.
Refine the path of getCompressionRate to make sure at least
swapchainimage[0] has been initialized when it is been called.
Bug: angleproject:433057375
Change-Id: I80b68874686940c0ef77df97b928b0e153c5bbf8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774721
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d38531e8
|
2025-07-23T09:39:11
|
|
Fix extension check for xfb mode validation
With geometry and tessellation shaders, it's possible to use different
primitive modes between transform feedback and draw, as long as they are
from the same class.
The code accidentally allowed this only if both extensions are
supported, but it should be allowed if either is.
Bug: angleproject:428561247
Change-Id: Ia18d4ac15a3d0739ce18dc0e1f3d3f0b1aea621c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6780744
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
13f6df49
|
2025-07-17T20:40:19
|
|
Fix the format of the "License" field in README.chromium files.
Add missing license for util/android/thrid_party based on license at the
source url.
Bug: chromium:421988485
Bug: chromium:421989135
Bug: chromium:421988956
Bug: chromium:421988537
Bug: chromium:421988894
Bug: chromium:421989250
Bug: chromium:421988522
Bug: chromium:421988185
Bug: chromium:421989147
Bug: chromium:421988875
Bug: chromium:421988779
Bug: chromium:421988799
Bug: chromium:421988324
Bug: chromium:421988930
Bug: chromium:421988996
Change-Id: I4008229b3031734dd2dc991026cdebe0894c352c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6768429
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Jordan Brown <rop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|