|
1b34d2a1
|
2025-03-28T00:00:00
|
|
Ensure ValidateUniform* consistency
Uniform calls are valid when
location is -1 or ignored.
Bug: angleproject:406922380
Change-Id: I7f829f7f8a67ba6bac39ff8ee06c7f26c1421417
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6408952
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
64dc6096
|
2025-03-28T00:00:00
|
|
Ensure ValidateDelete{Program|Shader} consistency
Deleting program zero is valid.
Deleting shader zero is valid.
Bug: angleproject:406922380
Change-Id: I2a26be8200585fae3a70c0a904be96ff590ebe7b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6409251
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
eb8deecd
|
2025-03-28T14:03:50
|
|
Remove VVL error skips that have been fixed
Bug: angleproject:42265220
Change-Id: I1588db6ec2846faf92eef9042ba483547c0f5127
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6410511
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
05d15800
|
2025-03-28T00:00:00
|
|
Ensure ValidatePixelStorei consistency
Added missing return and frontend assertion for
the GL_PACK_REVERSE_ROW_ORDER_ANGLE parameter.
Covered by
WebGLCompatibilityTest.EnablePackReverseRowOrderExtension
Bug: angleproject:406922380
Change-Id: Iafa7646c0429d1269315e1003fac98d61231af55
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6409831
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b1eecd41
|
2025-03-28T16:54:49
|
|
Skip flaky BlitFramebufferTest on Linux Intel GL
Bug: angleproject:404958319
Change-Id: I287723feeb7ba3a526a9b4eab91ef53d16f436bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6409092
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
9542be7f
|
2025-03-28T16:37:15
|
|
Allow uninstantiated ContextNoErrorTestES31
No ES31 on iOS Metal.
Bug: angleproject:406935597
Change-Id: I754c8bb7ba6a1798f7c55411ad5332eca8c7b86a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6409091
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
184a389f
|
2025-03-27T00:00:00
|
|
Ensure program state for indirect draw entry points
If the currently bound program is being relinked,
Context::prepareForDraw needs to wait until it's
ready before syncing the backend state.
Added the required logic and no-op handling
to indirect draw entry points.
Fixed: angleproject:406935597
Change-Id: I82fb426b02a275bc67f71f9bd07484fa5802bc09
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6404481
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0bd4e4fe
|
2025-03-20T17:34:47
|
|
Add EGL siblings check in eglCreateImage
If a renderbuffer/texture is created from an EGL image, then it is
an EGL target and considered as an EGL sibling. If it is used to
create EGL image, then it would also be an EGL source.
EGL_BAD_ACCESS should be returned. An end2end test is also added.
Bug: angleproject:406029225
Change-Id: I51fe5b70d8a6d1939ae1defc02edfe5cf8167684
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6389218
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4334125b
|
2025-03-14T16:12:32
|
|
Metal: Make StateCache descriptors hash consistent
Various descriptors would compare equality and do hashing based on the
underlying storage. The storage contains alignment padding and
bitfields. The contents of these are not defined, even when the
constructors tried to memset and memcpy.
The various hash and compare functions also seemed to be missing some
elements, like rasterSampleCount.
Missing == on fields and hashing unused memory may lead to inconsistency
where a==b is true but hash(a) != hash(b).
Fix by:
Remove the memset/memcpy and write out the operator== and
hash() consistently.
Initialize the members to their default values.
Use uint32_t : 1 instead of bool if the struct tries to optimize for
size, since mixing types stops the packing.
Use uint32_t to get the alignment to uint32_t, which is mostly what
is expected.
Use uint32 someVar : N where N is payload bits + padding bits for
the last member. This way the assignment clears the padding bits.
The goal os to get the operator== to compare the padding bits, which
lets the compiler elide the memberwise compares and use word-wise
compares where it makes sense.
This is an attempt to fix rare crashes related to map inserts
and lookups. std::unordered_map will crash if operator== is not
consistent with hash.
Bug: angleproject:403372465
Change-Id: I0a3a2ff327ac9f65e7d41bc9585cda54ce93ab86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355828
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
799d301f
|
2025-03-27T00:00:00
|
|
Ensure program state for multi-draw entry points
If the currently bound program is being relinked,
Context::prepareForDraw needs to wait until it's
ready before syncing the backend state.
Aligned all three no-op draw context helpers.
Fixed: angleproject:406814763
Change-Id: I10eed90bb2fe853b558291fc8fe17d13652e0420
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6405536
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7fb1ac40
|
2025-03-10T20:28:56
|
|
Support EGLImageTargetTexture2DOES + GenerateMipmap
According to the spec, If an application adds mipmap levels
to a texture originally created with EGLImageTargetTexture2D,
OpenGL will allocate new memory for the updated texture,
copying existing data, including from the EGLImage source.
So, relevant support is added.
Bug: angleproject:405840226
Change-Id: I4495df2d8ee1e18b4482808a290dcd861ef85b77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6335305
Auto-Submit: Robic Sun <Robic.Sun@arm.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8cf89716
|
2025-03-14T20:17:07
|
|
Vulkan: Remove perFrameWindowSizeQuery feature
Feature was enabled for all platforms in order for surface to be resized
before acquire next image (not only after swap). Remove it, as if it's
always enabled to simplify the code.
Bug: angleproject:397848903
Bug: angleproject:42262287
Bug: angleproject:42262286
Bug: angleproject:40096601
Change-Id: I768772e30f5f38f68992e5b82c84430732aa77d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6354166
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e4bfa483
|
2025-03-27T10:54:19
|
|
Remove VVL error skips that have been fixed
Bug: angleproject:42265220
Change-Id: I9d6cb7ee4ace27cad5ef3db84d83ded6ca9095f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6404613
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
081934f6
|
2025-03-12T15:22:31
|
|
Vulkan: Add avoidInvisibleWindowSwapchainRecreate feature
There is a bug on some NVIDIA drivers on Linux X11 when
`vkAcquireNextImageKHR()` constantly returns `VK_ERROR_OUT_OF_DATE_KHR`
if recreate the swapchain while window is not visible.
If not recreate the swapchain after window resize - nothing happens,
acquire and present works without errors. But if recreate the swpahchain
to the `VkSurfaceCapabilitiesKHR::currentExtent` the next
`vkAcquireNextImageKHR()` will return `VK_ERROR_OUT_OF_DATE_KHR`. ANGLE
will retry to recreate the swapchain one more time and fail the call.
Enabling the "avoidInvisibleWindowSwapchainRecreate" feature will avoid
swapchain recreation when window size changes while it is not visible.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.ResizeInvisibleWindow/*
Bug: angleproject:397848903
Bug: angleproject:42264022
Bug: angleproject:42263074
Change-Id: I48588bf467d15c0e84b923092e06a42c22084dcc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6348739
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
caf14998
|
2025-02-25T17:28:05
|
|
Vulkan: Fix window surface resize and size query
Added `mSizeState` enum member. When it is not `Resolved`, surface size
is not yet resolved and may change any time in response to native window
resize. Otherwise, surface size is resolved and will not change until
next swap.
Updated `getUserWidth()`/`getUserHeight()` methods. They return
current window size when surface size is not resolved, or current
surface size, otherwise. Window size is queried either by
`getCurrentWindowSize()`, when surface is sized by swapchain, or
by querying vulkan surface capabilities.
The "perFrameWindowSizeQuery" feature controls when `mSizeState` is
updated. Initially it is not resolved. Marked as not resolved in
`invalidateSwapchain()`, and in `deferAcquireNextImage()` when the
feature is enabled. It is marked as resolved after swapchain is created
when feature is disabled, or in `AcquireNextImageUnlocked()` function
after acquire next image, otherwise.
Enabled some tests that were previously failing. Replaced old resize
tests with new versions.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.Resize*/*
Bug: angleproject:397848903
Bug: angleproject:373659619
Bug: angleproject:153329980
Bug: angleproject:42266013
Bug: angleproject:42265843
Bug: angleproject:42265529
Bug: angleproject:42264022
Bug: angleproject:42263074
Bug: angleproject:42261800
Bug: angleproject:40096826
Change-Id: I3ad836960a68229fab6c94624022f1a0aaf2c3e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6300645
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
e44357c6
|
2025-03-25T15:50:15
|
|
Vulkan: Do not defer ANI in shared present mode
Calling ANI in shared present mode is not necessary after the initial
acquire. Skip calling `deferAcquireNextImage()` in that mode.
For code simplicity and as a preparation for (anglebug.com/400711938),
the `invalidateSwapchain()` method is now also defers ANI and notifies
`SubjectMessage::SurfaceChanged` to the parent class. `Framebuffer`
message handling was updated to also reset color buffer dirty bit and
to notify `SubjectMessage::DirtyBitsFlagged` if needed, as in the
`SubjectMessage::SwapchainImageChanged` message case (which will be
removed in future CL). This way, single `SubjectMessage::SurfaceChanged`
message is enough to handle swapchain recreate.
The `VK_SUBOPTIMAL_KHR` is no longer treaded as OUT_OF_DATE when in
shared present mode. Added for consistency (since we are already
skipping "perFrameWindowSizeQuery" checks), to preserve content, and to
match the Android native GLES driver behavior.
Call `invalidateSwapchain()` when swapchain operations fail to avoid
repeated swapchain use and to be able to recover from the error.
The `checkForOutOfDateSwapchain()` was split into two methods:
- checkForOutOfDateSwapchain():
- Called only after present.
- Checks present out of date result and present mode compatibility.
- Invalidates the swapchain and updates the present mode if the above
checks fails.
- prepareSwapchainForAcquireNextImage():
- Calls `queryAndAdjustSurfaceCaps()` and `recreateSwapchain()`
if swapchain is invalid.
- Calls `queryAndAdjustSurfaceCaps()` and checks surface properties
when "perFrameWindowSizeQuery" is enabled. Then calls
`recreateSwapchain()` if something changed.
Other changes:
- The `prepareForAcquireNextSwapchainImage()` method was replaced with
`prepareSwapchainForAcquireNextImage()`.
- Removed `doDeferredAcquireNextImageWithUsableSwapchain()` and
`postProcessUnlockedAcquire()` methods because of redundancy.
- Move image invalidation code into `acquireNextSwapchainImage()` to
make `doDeferredAcquireNextImage()` simpler.
- Convert `resizeSwapchainImages()` into `createSwapchainImages()` for
simplicity.
Updated old and added new tests.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.ReadFramebufferBindingSyncState/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.OnCreateWindowSurface/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.OnSetSurfaceAttrib/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WindowResize/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WindowRotation/*
Bug: angleproject:400711938
Bug: angleproject:397848903
Bug: angleproject:42262606
Change-Id: I2247417aa8b7b5afc10a8420083aeb845895aec9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387920
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
a0f54ac0
|
2025-03-26T21:44:38
|
|
Remove DIRTY_BIT_READ_FRAMEBUFFER_BINDING sync during draw
Remove `state::DIRTY_BIT_READ_FRAMEBUFFER_BINDING` synchronization from
`prepareForDraw()`, since it does not synchronize the
`DIRTY_OBJECT_READ_FRAMEBUFFER`. This is to avoid synchronizing with
invalid read framebuffer state.
It seems that in the current code this bug does not cause any real
problems and it is not possible to write test that will fail. On Vulkan
back-end, this is because `DIRTY_BIT_READ_FRAMEBUFFER_BINDING` is always
reset after new swapchain is created (`SubjectMessage::SurfaceChanged`).
Therefore, each time `DIRTY_OBJECT_READ_FRAMEBUFFER` is synchronized,
`DIRTY_BIT_READ_FRAMEBUFFER_BINDING` will be also set.
However, in the follow up CL the problem becomes possible. Without this
change some gold trace tests will fail.
Bug: angleproject:400711938
Change-Id: I375578a848a7cee044ca4d768266f3d3efa97e44
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6396863
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
e339f91c
|
2025-03-21T10:22:59
|
|
Vulkan: Split asyncCommandBufferResetAndGarbageCleanup into two
Right now this one feature flag controls garbage clean up and command
buffer reset. If this is enabled, we are seeing command buffer reset
some times runs on small core and some times gets blocked by mutex lock
inside vulkan driver. This could take quite long while main rendering
thread is blocked by ANGLE's CommandPoolAccess lock. This CL splits this
feature flag into two separate feature flag: asyncGarbageCleanup
controls garbage clean up in the async thread or not.
asyncCommandBufferReset controls commandBuffer.reset in the async thread
or not.
This CL also disables commandBuffer.reset in async thread only on ARM
given there is no data shows other GPUs suffer form the same problem.
Bug: angleproject:378718508
Change-Id: Ice87b5b91568a0a95e0064da2b70243516ff6753
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6381893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
94e93cb5
|
2025-03-14T10:24:02
|
|
Add validation of type mismatch for glQueryCounterEXT
The list of modified validation API:
- ValidateQueryCounterEXT
Bug: angleproject:403313561
Change-Id: Iff0b5c90417df7c1ae6ecf871892fa5bad7533d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355765
Auto-Submit: Xinyu Fang <xinyu.fang@arm.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1a24f8f8
|
2025-03-26T17:34:26
|
|
Update formatting in EGLPrintEGLinfoTest
Replace all occurrences of "\t" with 4 spaces and remove trailing
whitespace
Bug: angleproject:42262676
Change-Id: I7378669a7d080a9db10ac100d00a3d3aa5292abb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6396628
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e265a38d
|
2025-03-26T09:32:47
|
|
Tests: Update ChangeFBOSizeWithNoAttachments test
Replace `GL_DRAW_FRAMEBUFFER` with `GL_FRAMEBUFFER`. This should not
make any difference, since test does not use the read framebuffer, but
it causes failure on Intel GPU on Window. Test works as expected if bind
default framebuffer to the `GL_READ_FRAMEBUFFER` binding.
GL beck-end internally uses `GL_FRAMEBUFFER` in many places. Correct
draw and read framebuffers are restored at draw time. Note, that
syncing `DIRTY_BIT_READ_FRAMEBUFFER_BINDING ` during draw is
unnecessary and may even cause bugs (because
`DIRTY_OBJECT_READ_FRAMEBUFFER` is not also synchronized). This may be
fixed in future CL, which will cause this test to fail even if keep it
as-is. It is because read framebuffer binding will be left in dirty
state after internal `GL_FRAMEBUFFER` bindings.
Test: angle_end2end_tests --gtest_filter=FramebufferTest_ES31.ChangeFBOSizeWithNoAttachments/*
Bug: angleproject:42266132
Change-Id: Ic6b7cdc2f0c94905f8387624d514a1d18e5b2572
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6396635
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
253ceef5
|
2025-03-27T10:38:17
|
|
Skip PixelLocalStorageTest.TextureCubeFaces on iOS Metal
Fails since it was added
https://chromium-review.googlesource.com/c/angle/angle/+/6394235
https://ci.chromium.org/ui/p/chromium/builders/ci/ios-angle-intel/75904/overview
Bug: angleproject:40096838
Change-Id: I850ca3c9abe9548c0ff04ec3dbec7a660ea4d4ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6400617
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
f841d12a
|
2025-03-26T14:22:16
|
|
Remove VVL error skips that have been fixed
Bug: angleproject:42265220
Change-Id: Ieb0638e3c28dd4dacaeebdcc45de381c994f4bdb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6397943
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
f94b8ed1
|
2025-03-24T00:00:00
|
|
Allow PLS planes backed by cube map faces
Adjusted extension validation and spec language.
Bug: angleproject:40096838
Change-Id: I6e36fe63ed9d9d91a92298e3471b084b225ecfd9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6394235
Reviewed-by: Chris Dalton <chris@rive.app>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
c2679dbc
|
2025-03-10T12:15:08
|
|
Key vertex array index range cache on restart
Key vertex array index range cache on primitive restart enablement.
Add the test to WebGLCompatibilityTest as otherwise the
VertexArray::getIndexRange() is not testable. Currently WebGL
compatibility contexts allow changing primitive restart.
Bug: angleproject:401284933
Change-Id: I48a53770d7dcb2276b89fd743f4834c53c8d8d1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333538
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
09c7dc63
|
2025-03-24T00:00:00
|
|
Fix cube map array dimensions validation
* Used correct caps for width, height, and depth limits
in TexImage entry points with cube map arrays.
* Used correct dimensions for checking max possible level
in TexStorage3D entry point with cube map arrays.
* Used correct caps for width, height, and depth limits
in TexStorage3D entry point with cube map arrays.
Fixed: angleproject:406012438
Change-Id: I935de34db0854627a8a0b00cfc0bfa8cf0de06e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387919
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3bedb294
|
2025-03-26T13:04:52
|
|
Skip flaky BlitSmallColorLargeDepthAttachments on Mac Intel GL
Bug: angleproject:404959032
Change-Id: Idf972e36a0f10b14e89df54fd94572e2c6cede1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6394382
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
7831e2ad
|
2025-03-25T19:45:58
|
|
Allow uninstantiated ClearTextureEXTTest tests on iOS
ClearTextureEXTTestES31Renderable
ClearTextureEXTTestES31Unrenderable
Not instantiated, since iOS Metal backend doesn't support ES3.1
https://ci.chromium.org/ui/p/chromium/builders/ci/ios-angle-intel/73740/overview
Bug: angleproject:384967031
Change-Id: If01cdcd40224856233dde836cbd8a76129172052
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6394256
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
5024ccef
|
2025-03-25T11:37:19
|
|
WebGPU: Emulate line loops with primitive restarts
Bug: angleproject:383356846
Change-Id: Iab1d658cb3c5e32f88241f6757d1c2e5a84bf8ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297524
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
66914aac
|
2025-03-25T02:03:18
|
|
Revert "Tests: suppress -Wunused-private-field warning"
This reverts commit 6808ef839ad26a21465e877e810792ff8b6ebf06.
Reason for revert:
The unused member variable was removed in
https://github.com/KhronosGroup/VK-GL-CTS/commit/d07776ce3fe452cd22f28acd82325e82d4ca07ac
which was rolled into Angle in
https://chromium-review.googlesource.com/c/angle/angle/+/6342525
Original change's description:
> Tests: suppress -Wunused-private-field warning
>
> The latest version of Clang warns about an unused member variable in
> es31fSRGBDecodeTests.cpp. Suppress it for now.
>
> Bug: chromium:393942204
> Change-Id: Ic03c2f8f2710ff3ccf44c102d1fd991bc4d1d380
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6226805
> Auto-Submit: Hans Wennborg <hans@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Bug: chromium:393942204
Change-Id: I92ac62b708c72b24c9909b047165466c8eb94da5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6388618
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
3cf0e755
|
2025-03-24T18:37:30
|
|
Allow uninstantiated TextureFixedRateCompressionTest on iOS
Not instantiated, since iOS Metal backend doesn't support ES3.1
https://ci.chromium.org/ui/p/chromium/builders/ci/ios-angle-intel/72008/overview
Bug: angleproject:352364583
Change-Id: I8dc2c19d90ac2d78a71b365492676b9caf575826
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6388616
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
34db1c20
|
2025-03-20T12:56:42
|
|
Vulkan: glReadPixels should nearest sample the YUV render target
Vulkan backend uses texture except texelFetch to obtain the YUV image
value for glReadPixels. According to the chroma filter set in the image,
it may apply LINEAR sampling.
* Change this filter to NEAREST inside glReadPixels to get the correct
pixel values.
* Modify the fragment shader used in glReadPixels to make sure sampling
from the center of the pixel.
* Add a new end2end test.
Bug: angleproject:404394628
Change-Id: I0e574a464639e11671f0a09eee3e9f38b5abd919
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6366299
Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
99037f70
|
2025-03-24T08:51:58
|
|
Remove unnecessary virtual specifiers
Clang has added a new warning for virtual specifiers on methods of
`final` classes. This cleans them up in preparation for enabling that
warning.
Bug: chromium:403236787
Change-Id: I7acee9b2b99f13279d50ebe2cef832e734792546
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6388035
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
316c99e1
|
2025-03-24T19:42:03
|
|
Suppress 3 PixelLocalStorageTest on iOS Metal
PixelLocalStorageTest.ColorAttachment0Workaround
PixelLocalStorageTest.CopyTexSubImage
PixelLocalStorageTest.RasterizerDiscard
Bug: angleproject:40096838
Change-Id: I92d403d67495907042b37ffc5a689eea8b18b1da
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387040
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
dba77589
|
2025-03-21T14:02:29
|
|
Translator: Fix output-variable-init vs after-main declarations
Bug: chromium:400504716
Change-Id: I105180cd10dda5238c228d16c9f4e15f1bf49e77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6383079
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ea58cc5d
|
2025-03-21T10:06:18
|
|
PLS: Validate mip level bindings are within base/max range
It is undefined behavior for imageLoad/imageStore to access a mipmap
level outside the effective base/max range. Since PLS may be implemented
with shader images, we need to require that the mip level bindings on
active planes are within this range.
Bug: angleproject:40096838
Change-Id: I539016d94db161f1af0ae1bd496a123b78fb51dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6382273
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
22744d7e
|
2025-03-24T18:29:29
|
|
Skip GLSLTest_ES3.MaxVaryingWithFeedbackAndGLline on iOS Metal
Bug: angleproject:375244081
Change-Id: Id29dc201ff93f880c4de104e3194d7b4c51b118f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6388615
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
3cfc0ce2
|
2025-03-24T07:41:33
|
|
Revert "Vulkan:Dont use Subject/Observer for SwapchainImageChanged"
This reverts commit 48103cb2f2b292cb50cc5a29546b358b2e47fd29.
Reason for revert: assert fails
https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/7085/overview
I 22:27:33.697 77.533s _RunTestsOnDevice(17221FDF6000A4) [ RUN ] EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture
INFO:root:ERR: SurfaceVk.cpp:3165 (getCurrentFramebuffer): ! Assert failed in getCurrentFramebuffer (../../src/libANGLE/renderer/vulkan/SurfaceVk.cpp:3165): mAcquireOperation.state == ImageAcquireState::Ready
Original change's description:
> Vulkan:Dont use Subject/Observer for SwapchainImageChanged
>
> Because we do deferred ANI (VkAcquireNextImage) call until image is
> needed, we need a way to force Context to go through
> FramebufferVk::syncState call (FramebufferVk::syncState calls
> WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
> Right now we uses subject/observer mechanism, by sending
> angle::SubjectMessage::SwapchainImageChanged to all observers of
> WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
> redirects this message to its observers, which are all gl::Framebuffer's
> attachments: color, depth, stencil. Even though only color attachment
> needs to be notified, but because we don't have a separate list of
> observers, depth/stencil attachment also receive the notification and
> they early out. Then gl::Framebuffer sets
> DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
> angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
> and ReadFBO and dirty cached state. Note that this is specific for swap
> image changed case, there is no surface property change (surface
> property change will still trigger the subject/observer message with
> SubjectMessage::SubjectChanged message, but this occurs rarely). This
> gets worse for apps that uses multiple contexts, for the example
> pokemon_masters_ex has three contexts, each context has its own default
> frame buffer that attach to the same surface, and we never remove
> non-current context from the observer list. This end up with
> egl::Surface has 12 observers and for every frame, it loop over the list
> of 12 observers and send message (virtual function call) to each of
> them. Color attachment also ends up sending two messages to Context, one
> for Read FBO and another for Draw FBO. There are total 21 virtual
> function calls. Even for single context usage, you have 6 virtual
> function calls, for every frame.
>
> EGL spec says "an EGLSurface must be current on only one thread at a
> time", any other context must call EGLMakeCurrent in order to use this
> surface, which will add all necessary dirty bits at that time. So we
> really only need to notify current context. In this CL,
> SwapchainImageChanged no longer uses subject/observer mechanism, so this
> message is removed.
>
> This CL still uses subject/observer mechanism to send DirtyBitsFlagged
> from Framebuffer back to context. We could call setDrawFramebufferDirty
> and setReadFramebufferDirty directly, but that will require to remove
> the "const" decoration out of gl::Context which generates too much code
> diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
> used.
>
> Bug: angleproject:400711938
> Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:400711938
Change-Id: Ib7899d1ac63a1f86af0953a1d25922578c470fc9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387755
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ad3aa70d
|
2025-03-24T15:12:18
|
|
Skip TraceTest.respawnables also on Android
Already skipped on Windows and Linux.
Bug: angleproject:42266627
Change-Id: Ia0a50f3357d8f7e60a3bde669c87f66e994063be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387159
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
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>
|
|
cbe26d0c
|
2025-03-04T16:56:26
|
|
Wrong texture coordinates sent to VULKAN for blit
In ANGLE's Vulkan backend, complex blit operations are implemented using
draw calls that utilize samplers and shaders, with texture coordinates
passed via push constants.
In this test case, texture coordinates are calculated based on the
effective framebuffer size, which is determined by the smallest
attachment dimensions. However, the draw call is executed on an
attachment with its original size, leading to unexpected texture
coordinates and incorrect sampling results.
Use ReadImageExtent size instead of framebuffer effective size to
calculate the sample texture coordinate.
Bug: angleproject:400584608
Change-Id: I06f0a1e48463f36aef7189f772515561d2e752d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6321348
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Jiaqi Li <Jiaqi.Li@arm.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d314868d
|
2025-03-21T16:13:45
|
|
Translator: prune `side_effect,noop` to `side_effect`
... if the result is unused. If `noop` includes a reference to a struct
that's entirely made of samplers, the transformation that removes
samplers from structs doesn't know what to do with the empty
expressions.
Bug: chromium:390467743
Change-Id: I62ccce6031e1bb4a0c875d0f7dce9adefb7e208d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6383081
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1166eec4
|
2025-03-20T02:02:50
|
|
Move TRACE_EVENT inside acquireNextSwapchainImage()
The `acquireNextSwapchainImage()` is no longer called from surface
initialize, which allows to move the trance event inside the function.
Change also uses loop to handle repeated ANI retry instead of call
duplication. This is done to further reduce code duplication in the
next CL.
Additionally, fixed assert that was missed in recently merged CL:
Vulkan: Remove recreateSwapchain ContextVk dependency
https://crrev.com/c/angle/angle/+/6298733
Bug: angleproject:397848903
Bug: angleproject:42261625
Change-Id: Iae2ce35018d4fe105430271b56804af8c74152c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6372565
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
48103cb2
|
2025-03-03T16:43:33
|
|
Vulkan:Dont use Subject/Observer for SwapchainImageChanged
Because we do deferred ANI (VkAcquireNextImage) call until image is
needed, we need a way to force Context to go through
FramebufferVk::syncState call (FramebufferVk::syncState calls
WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
Right now we uses subject/observer mechanism, by sending
angle::SubjectMessage::SwapchainImageChanged to all observers of
WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
redirects this message to its observers, which are all gl::Framebuffer's
attachments: color, depth, stencil. Even though only color attachment
needs to be notified, but because we don't have a separate list of
observers, depth/stencil attachment also receive the notification and
they early out. Then gl::Framebuffer sets
DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
and ReadFBO and dirty cached state. Note that this is specific for swap
image changed case, there is no surface property change (surface
property change will still trigger the subject/observer message with
SubjectMessage::SubjectChanged message, but this occurs rarely). This
gets worse for apps that uses multiple contexts, for the example
pokemon_masters_ex has three contexts, each context has its own default
frame buffer that attach to the same surface, and we never remove
non-current context from the observer list. This end up with
egl::Surface has 12 observers and for every frame, it loop over the list
of 12 observers and send message (virtual function call) to each of
them. Color attachment also ends up sending two messages to Context, one
for Read FBO and another for Draw FBO. There are total 21 virtual
function calls. Even for single context usage, you have 6 virtual
function calls, for every frame.
EGL spec says "an EGLSurface must be current on only one thread at a
time", any other context must call EGLMakeCurrent in order to use this
surface, which will add all necessary dirty bits at that time. So we
really only need to notify current context. In this CL,
SwapchainImageChanged no longer uses subject/observer mechanism, so this
message is removed.
This CL still uses subject/observer mechanism to send DirtyBitsFlagged
from Framebuffer back to context. We could call setDrawFramebufferDirty
and setReadFramebufferDirty directly, but that will require to remove
the "const" decoration out of gl::Context which generates too much code
diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
used.
Bug: angleproject:400711938
Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
b9567391
|
2025-03-20T14:10:21
|
|
Prefer Device type requests over adapter LUID in D3D11.
When the user requests both a non-hardware device type and a specific
DXGI adapter LUID, prefer to honor the device type request.
Chrome always requests LUIDs of the first available GPU to make sure
that it prefers integrated GPUs over discreet. It only requests
non-hardware device types when software rendering is desired. This
behaviour change satisfies Chrome's intentions in both cases.
Bug: chromium:402163834
Change-Id: Idc714498260591cafc37d810c83de08a364a72f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6377165
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
c0001bcf
|
2025-03-21T10:09:26
|
|
Skip flaky test on SwiftShader
Bug: angleproject:405286904
Change-Id: Id96b0603ccdd0237a06d334b7530974d2cff3d40
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6382799
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
ac37e500
|
2025-03-18T14:07:28
|
|
Validate PLS texture slice collisions
Generate errors when:
* A single texture slice is bound to more than one active pixel local
storage plane.
* A single texture slice is simultaneously bound to an active pixel
local storage plane and attached to an enabled drawbuffer.
Bug: angleproject:40096838
Change-Id: I51f7260a36df94ac35deaaa2fbf7e81f56f06563
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6370082
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
c0483900
|
2025-03-20T14:38:53
|
|
Tests: Add EGLSurfaceTest.MSAAResolveWithEGLConfig8880 test
Test is for the fix:
Vulkan: Use correct actual FormatID for MSAA swapchain image
https://crrev.com/c/angle/angle/+/6275968
SM-G996B (Mali-G78) has these errors in the new test without the fix:
VUID-vkCmdResolveImage-srcImage-01386:
srcImage and dstImage must have been created with the same image
format
VUID-VkFramebufferCreateInfo-pAttachments-00880:
If flags does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each
element of pAttachments must have been created with a VkFormat value
that matches the VkFormat specified by the corresponding
VkAttachmentDescription in renderPass
It looks like that in the CL with the fix, above device was incorrectly
tested and commit message noted that the fix is cosmetic because RGB8 is
generally emulated with RGBA8. Turns out, Mali-G78 can render into RGB8.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.MSAAResolveWithEGLConfig8880/*
Bug: angleproject:42265147
Change-Id: I7e90dd7f8c9138a439bc77ed5643214ac4260c73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6375366
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1b494f3d
|
2025-03-11T19:40:51
|
|
Add validation of null pointers for certain APIs
Bug: angleproject:397315932
Change-Id: I1b4758e326efd2e28d5a4f589c7b156065594911
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6342394
Auto-Submit: Robic Sun <Robic.Sun@arm.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ac242c1a
|
2025-03-20T11:18:45
|
|
Vulkan: Fix the feature flag typo
Bug: b/333987915
Change-Id: Iea21592532352d95c69c0cf8dfcad96b58563ec5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6377544
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
|
|
00d99277
|
2025-03-19T17:22:24
|
|
[WGSL] Emit sampler types and texture lookup builtins
The split texture/sampler WGSL variables will now have the correct
types corresponding to their GLSL types.
Texture builtins are translated as faithfully as possible. There are
some issues with the translation:
1. Texture builtins using an implicit level-of-detail in a vertex
shader are supposed to sample from the base mip level. Right
now these are translated into WGSL functions that cannot be used
in a vertex shader at all.
2. Some texture builtins that take integer samplers do not have
corresponding WGSL versions, e.g. the sampling GLSL function
texture() takes integer samplers but the mostly equivalent
WGSL builtin, textureSample(), will only take float samplers.
3. A number of GLSL texture builtins are not supported in WGSL
when uses on shadow samplers, e.g. anything with a bias
parameter, an explicit LOD parameter, or explicit gradients,
Bug: angleproject:389145696
Change-Id: Idfd75721f88181db9643235b954629ac477163e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6372082
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
c36d0cf0
|
2025-03-14T14:09:41
|
|
Metal: Improve ColorBlitUtils shader key hash
Did not hash transformLinearToSrgb.
Bug: angleproject:403372465
Change-Id: Ie06cf3535775f753e0468505e8b31fd513130b98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6356891
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
6bd7a518
|
2025-03-19T13:35:48
|
|
Vulkan: Allow pipelineStatisticsQuery substitute PGO
Some devices are missing VK_EXT_primitives_generated_query
extension and primitivesGeneratedQuery (PGO) feature, which are
required for GLES3.2 extensions geometryShaderEXT and
tessellationShaderEXT. On such devices, when app requests to create
a GLES 3.2 context, the eglCreateContext call will fail due to not
able to support GLES 3.2.
We add a new feature flag
allowPipelineStaticsForPrimitivesGeneratedQuery,
and enable it on devices where we can fallback to using
pipelineStatisticsQuery (PSQ) as an approximation for
VK_EXT_primitives_generated_query, to broaden support for GLES 3.2
contexts. This is an opt-in feature for vendors that can functionally
substitute PGQ with PSQ.
Expose geometryShaderEXT and tessellationShaderEXT
extensions if allowPipelineStaticsForPrimitivesGeneratedQuery feature
is enabled.
Bug: b/333987915
Change-Id: I9f0affbc3cc383ed6c50bcfc5d4d6f7f8a708aaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6362627
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
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>
|
|
5b5a5e21
|
2025-03-17T17:59:18
|
|
Reformat VVL error message part1
Remove the string entries from skipped VVL error message.
TraceTest.manhattan_31 with SwiftShader no longer runs
into VVL error, remove the corresponding comments.
Bug: angleproject:316337308
Bug: angleproject:42265196
Change-Id: I113d2e7953b3f14ed9811df91204d046a5fe4fb4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6364335
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0b98cf97
|
2025-03-14T16:42:32
|
|
Translator: Fix a bug with struct-with-sampler rewrite
Bug: chromium:388884060
Change-Id: I8843e0ab9698224020628bedc7a528865d91d2bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6354207
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2657dba2
|
2025-03-17T10:07:52
|
|
restricted_trace_perf: Use run-as when needed
On non-rooted devices, commands that access storage need
to use run-as.
Test: restricted_trace_perf.py
Bug: b/404239853
Change-Id: I38bc54c4f4eb9c986106e1773cb1e0796577eaeb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6361299
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
d668a13c
|
2025-03-14T17:18:18
|
|
Fix sync issue between XFB output and texture buffer input
For the following scenario, where the first draw writes to the
transform feedback buffer and the second draw reads from the
same buffer as a texture buffer, it is necessary to end the
render pass between the two draws and add a pipeline barrier.
// xfb write to tex_buffer
glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, tex_buffer);
glBeginTransformFeedback();
glDrawArrays();
glEndTransformFeedback();
// Draw with texture buffer tex_buffer
glBindBuffer(GL_TEXTURE_BUFFER_EXT, tex_buffer);
glTexBufferEXT(GL_TEXTURE_BUFFER_EXT, ..., tex_buffer);
glDraw();
Bug: angleproject:403319685
Change-Id: I9381a336ce61dea696c93158bb617a41afcfc583
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6356070
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Mavis Deng <mavis.deng@arm.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
f20fd2fe
|
2025-03-14T12:41:11
|
|
Tests: Make unpacked tarball files from tests world-readable
If the origin system did not have these world-readable, tests can fail
to open these files during runtime.
Also makes SELinux warning in multiuser mode more noticeable since
permissive mode is necessary for the test to run successfully.
Bug: b/403616641
Change-Id: Id23ce572d46054fea60c03cfa9c30871ab5e50dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6357935
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Renato Pereyra <renatopereyra@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
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>
|
|
fca3fed3
|
2025-03-18T11:06:10
|
|
Manual roll vulkan-deps from 552ac332629b to bf9998679aee (25 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/552ac332629b..bf9998679aee
Also rolling transitive DEPS:
https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang/+log/0051b92b6fff2fd3dbc99b7dae316fa51a7f4767..8842cf92e3de290f275c46d55cbfe42b7d0775a6
https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools/+log/9e470ef0f95d6923fa19dc5c5dc48c1442eb5a8b..ba1359d203e544bd458373ba249a47c44e97b071
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader/+log/8491f31d36a8c642e588220b89729129721fec31..54cbefd25dbcaeb2bb03da207afce6cad7fb5dd1
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/74a6b7dc828078cf2f1524d3947f65a29a1562e9..b2c8bd421aa5c1502fd56c3c07fb2831a8ceb882
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: angleproject:404418769
Change-Id: I359e903e2d061b7bbde6b18d234d8927d2cca56c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6368274
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
dae3c851
|
2025-03-14T11:44:53
|
|
Vulkan: Bake non-shader state into linked pipeline
When using VK_EXT_graphics_pipeline_library, previously ANGLE would
create three pipelines libraries:
* The Shaders library was created based on the GL program's shaders + a
few static states. This typically hit the program's own pipeline's
cache that was warmed up during link.
* The VertexInput and FragmentOutput libraries were created at draw
time, which used the global pipeline cache
At draw time, immediately after creating the non-Shaders libraries, the
three libraries were linked into the final pipeline to be used by the
draw call.
This caused an inefficiency; because the non-Shaders libraries were
created independently from the Shaders library, they had to be compiled
pessimistically, for example because they could not be optimized to take
into account the precision of the fragment shader's outputs or whether
any value is const (typically alpha being set to one).
Given the creation of VertexInput and FragmentOutput libraries is
typically quite fast (the former being no-op and dynamic state anyway),
this change removes the need for creating those libraries, and directly
specifies the vertex input and fragment output state when creating the
final pipeline out of the Shaders library.
In this way, the same fragment output state can be tailored to the exact
shaders it is being used with and incur a smaller overhead. In this
change, the linked pipeline is cached in the GL program's pipeline
cache, which is never synced to the blob cache as producing it is
assumed to be fast already.
Bug: angleproject:42265839
Change-Id: I8496ea37771555522bdc9de94043a1b56fa5967e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6354205
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
531e8791
|
2025-03-12T17:29:04
|
|
Change error set in ValidateCreateContext
According to EGL spec, if specified version number is not
a defined version of GLES, EGL_BAD_MATCH error should be generated,
but ANGLE generate EGL_BAD_ATTRIBUTE. Fix this and modify
the assert in the end2end test.
Bug: angleproject:403414983
Change-Id: I09ee779fc3008a420aeeb5c1416a44c9c82d2ec4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355745
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
fac33bb3
|
2025-03-13T09:40:56
|
|
Refine InterfaceVariablesMatch
During glDraw, in function GetMergedVaryingsFromLinkingVariables,
function InterfaceVariablesMatch does permissive check, so that
two backshader outputs may match one front shader input. Refine
that function to do more strict checking.
Bug: angleproject:402562396
Change-Id: I04f89dea97809e9621a125ca9385fb7416f7dcc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6347539
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shufen Ma <Shufen.Ma@arm.com>
|
|
ae71cc1c
|
2025-03-11T16:36:52
|
|
Don't destroy blend or color mask state in PLS
The browser caches this state, so conditionally destroying it would
invalidate the browser's cache. Instead, cache modifications to
overridden PLS blend & color mask state in ContextPrivateState, and
restore it upon ending PLS.
Also update the spec to specify that FRAMEBUFFER_DEFAULT_WIDTH and
FRAMEBUFFER_DEFAULT_HEIGHT may be overridden during PLS in ES 3.1.
Bug: angleproject:40096838
Change-Id: Ic2c0aa6dc33ada7350e15e27bef22c79ca5f6c7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6350727
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
f64a9547
|
2025-03-15T23:45:33
|
|
Metal: remove "Compute" from EnsureComputeShaderInitialized() name
Previously this function was named EnsureComputePipelineInitialized()
because it would create a compute pipeline. However at some point, the
pipeline's creation was moved to a pipeline cache. Thus this function
now only creates a shader function. This can be used to create both
compute & graphics shader functions so we should remove the "Compute"
part from its name.
Bug: None
Change-Id: I73d101142ec1fc72d150579bc409b1dea3196940
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6357511
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
5c2789e0
|
2025-03-14T15:17:30
|
|
Inline Context::uniform*
(most of?) these are called exactly once, such as
GL_Uniform2f [entry_points_gles_2_0_autogen.cpp]
Context::uniform2f [Context.cpp]
ProgramExecutable::setUniform2fv [ProgramExecutable.cpp]
Note how due to the different translation units each of these becomes a
separate function, and the intermediate one (uniform2f) is completely
unnecessary as it's only called by GL_Uniform2f. This CL reduces
the .so size a bit and improves code locality by avoiding
the intermediate functions.
Bug: b/383305597
Change-Id: Ia4afe651fabd25e55cd19a30bca71891d3e5a34a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355328
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b600a42c
|
2025-03-13T15:18:40
|
|
Remove the PLS allow list
All the interactions with render passes have been properly solved now,
and there is no longer a need for the allow list.
Bug: angleproject:40096838
Change-Id: I0219fb8824820e076c128f10f49c85f0f76270ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355312
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
c935e06d
|
2025-02-24T20:13:46
|
|
Revert "Vulkan: Fix Wayland surface size queries"
This reverts commit a277f1bce563999296620c29d83c760c0fb9763d.
Reason for revert:
No longer required, because `mIsSurfaceSizedBySwapchain` is always true
on Wayland which will provide same behavior as the reverted override
methods.
It is also a preparation for the follow up change.
Bug: angleproject:397848903
Bug: angleproject:40096815
Change-Id: If83ef133b422494d73565068e06e2d6a737f6315
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298737
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
daaae2bd
|
2025-02-24T19:36:39
|
|
Vulkan: Remove surface caps query from createSwapChain
This is mainly a refactoring with minor bug fixes.
The `createSwapChain()` is called at initialize and at swapchain
recreate. Before recreate there is always `queryAndAdjustSurfaceCaps()`
call, which queries current surface sizes and min image count. However,
surface capabilities may be queried again from `createSwapChain()` to
get compatible present modes and the min image count.
Problem is that surface caps `currentExtent` may change after the second
query in the `createSwapChain()`, while the `extents` parameter is
already calculated. Such situation will violate the specification.
To eliminate the possibility of the above problem and to simplify the
code, query of compatible present modes is moved to the
`queryAndAdjustSurfaceCaps()`. To save performance,
`mCompatiblePresentModes` is only updated if swapchain is already
invalid (recreate is imminent). Function is now also handles
`mEmulatedPreTransform` to further simplify the code.
The `mSurfaceCaps` member was replaced with local variable. The
`mIsSurfaceSizedBySwapchain` boolean is added instead to check it in the
`getUserWidth()`/`getUserHeight()` methods. This also fixes a possible
bug (anglebug.com/168327817) on Fuchsia when this expression could be
false:
mSurfaceCaps.currentExtent.width == kSurfaceSizedBySwapchain
This is because previously `queryAndAdjustSurfaceCaps()` updated
`mSurfaceCaps` with the values from `getCurrentWindowSize()`. It
seems that the bug never happened on practice, otherwise the ASSERT
in the same function would fail.
The `prepareForAcquireNextSwapchainImage()` is used at initialize
instead of `createSwapChain()` to remove code duplication.
Fixed (anglebug.com/168327817) checking `mPreTransform` without enabled
"enablePreRotateSurfaces" feature.
Bug: angleproject:397848903
Bug: angleproject:168327817
Change-Id: I02e8e3b815b30350e12476853d8dcffed3fe7c38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298736
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8154cfc2
|
2025-03-13T15:37:17
|
|
Inline Framebuffer::getNumViews()
On Android it totals ~100 bytes of assembly, and includes a loop which
appears to be above clang heuristics thresholds with -O2 so I had to
force-inline throughout to get the desired behavior. There are only a
few callers so this has almost no effect on the binary size.
Bug: b/383305597
Change-Id: Iad3d9120f8b3f072c1db34134de8b3787efc13ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6351145
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
f86d0711
|
2025-03-07T13:30:58
|
|
Tests: Add My Talking Angela 2 Trace
Test: angle_trace_tests --gtest_filter=*my_talking_angela_2
Bug: b/401473491
Change-Id: Ic0416ba7c6ab3db82865e9da01a69802590f33c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6352326
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
00e0b31a
|
2025-03-10T15:17:50
|
|
Vulkan: Don't generate OpTypeSampledImage for sampler buffers
That is banned in SPIR-V 1.6.
Bug: angleproject:402056128
Change-Id: Ie30880628228b6949632dbe99b85b2abc9e991d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6340667
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fbb1829d
|
2024-12-08T01:46:39
|
|
Allow glClear while PLS is active
It just makes sure to not clear any draw buffers that may be in use for
pixel local storage.
Bug: angleproject:402810076
Bug: angleproject:40096838
Bug: angleproject:42266150
Change-Id: I60a573d5e9e5dbadce12d79e3f4b6fc57747e655
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6312336
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
44853559
|
2025-02-25T17:29:54
|
|
Correct GLES renderbuffer default values
For GLES renderbuffer, the initial value queried for
RGBA bits should be 0, and the component type should be
GL_NONE according to spec. Correct the default values on
ANGLE now. An end2end test is also added.
Bug: angleproject:399693196
Change-Id: If8366b3d2350add917054813d3cb9a6a23727da7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6312514
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ac251fa8
|
2025-02-24T17:31:58
|
|
Vulkan: Remove doDeferredAcquireNextImage ContextVk dependency
This is the continuation of the previous CL. After this change
`lockSurface()` calls `doDeferredAcquireNextImage()` as the rest of the
code do.
The `ImageHelper::invalidateSubresourceContentImpl()` required
`ContextVk` pointer before this change.
The `ContextVk` is only used to print the performance warning when
`layerIndex` exceed the maximum count, which is not possible in case of
a `WindowSurfaceVk`. Added `layerLimitReachedOut` pointer instead of
writing the warning. It is processed in
`invalidateSubresource[Stencil]Content()`. Added
`invalidateEntireLevel[Stencil]Content()` which do not require
`ContextVk` to use in the `WindowSurfaceVk`.
Bug: angleproject:397848903
Bug: angleproject:42264593
Change-Id: I58451a4818ad56fa196c3c971df3a5f7793f2bfe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298735
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
2f5a91ba
|
2025-02-24T17:25:10
|
|
Vulkan: Remove checkForOutOfDateSwapchain ContextVk dependency
This is the continuation of the previous CL. After this CL it is now
possible to call `prepareForAcquireNextSwapchainImage()` from
`lockSurface()` that will also do necessary swapchain recreation in
case of window resize.
These methods required `ContextVk` pointer before this change:
- RenderTargetVk::releaseImageAndViews()
- replaced with `releaseSwapchainImage()` that does not release
framebuffer because Window Surface framebuffers are not managed by
the cache.
- added `release()` method that does release the framebuffer.
- WindowSurfaceVk::releaseSwapchainImages()
- use `Renderer::collectGarbage()` instead of
`ContextVk::addGarbage()`.
- use `ImageHelper::releaseImage()` instead of
`ImageHelper::releaseImageFromShareContexts()`. The
`finalizeImageLayoutInShareContexts()` was not required since
renderpass must be already ended, because swapchain recreate is only
possible after present. Removal of `addToPendingImageGarbage()` is
not going to cause OOM problems, because repeated swapchain
recreate calls are not possible without swap (submissions).
Bug: angleproject:397848903
Bug: angleproject:42264593
Change-Id: Iacfa3a144aa980659569b7100be25a44ebb9f0a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298734
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3d96268d
|
2025-03-12T12:48:36
|
|
Vulkan: Fix dev mem report feature adding
The Vulkan device feature flag for VK_EXT_device_memory_report
is currently being queried from the physical device. However, the
feature is not added to the device's list of enabled features. This
can result in some devices not properly using the feature, e.g.,
showing 0s instead of the data.
* Added the memory report feature flag (mMemoryReportFeatures) as
an enabled feature before creating the device when one of the
following corresponding ANGLE features are enabled:
* logMemoryReportCallbacks
* logMemoryReportStats
Bug: b/380295966
Bug: angleproject:173636655
Change-Id: I7afad55e2582298ded75762f2cd666c05bb51f3d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6349539
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e6a27504
|
2025-03-07T20:14:50
|
|
Vulkan: Swapchain recreate workaround for shared present mode
On Android, `vkCreateSwapchainKHR` may return
`VK_ERROR_NATIVE_WINDOW_IN_USE_KHR` if use `mLastSwapchain` as an
`oldSwapchain` when in shared present mode. This happens on three
different devices: SM-G996B (Mali-G78), SM-S921B (Xclipse 940), SM-S921U
(Adreno 940).
Bug: angleproject:397848903
Bug: angleproject:42262606
Change-Id: I1541c06c254f3e8231b165fb0c53eff5d810e8bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6329488
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
354a5463
|
2025-02-24T16:52:06
|
|
Vulkan: Remove recreateSwapchain ContextVk dependency
In the upcoming change, swapchain will be invalidated in swap, while
recreate deferred until ANI. After such invalidation, `lockSurface()`
wold not be possible. Even that currently swapchain may be invalid only
after previous recreate failure, this change adds `recreateSwapchain()`
call into `lockSurface()` because it is now possible and as a
preparation for the upcoming change.
The `recreateSwapchain()` is split into `invalidateSwapchain()` and
`recreateSwapchain()` methods. The invalidate must be called before the
recreate.
Bug: angleproject:397848903
Bug: angleproject:42264593
Change-Id: Ida4a98a985f9fbb527cdf8c81c088ae1210f409c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298733
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
db48967f
|
2025-03-05T09:07:10
|
|
Reland "Add GL_BGRA_EXT as a sized renderable format"
This reverts commit 4bfb9da6f98b3e28905cc759a77bff750dfe3ff7.
Reason for revert: More mapping fixes for GL backend
Original change's description:
> Revert "Reland "Add GL_BGRA_EXT as a sized renderable format""
>
> This reverts commit 8f2fbbd1a0d16471596afad57c88f950a1ee3032.
>
> Reason for revert: http://anglebug.com/399913714
>
> Original change's description:
> > Reland "Add GL_BGRA_EXT as a sized renderable format"
> >
> > This reverts commit 22dfe435daa7c680c07bb8d4f1d98ab765e60ad0.
> >
> > Reason for revert: Fixed mapping back to BGRA_EXT for GL backend
> >
> > Original change's description:
> > > Revert "Add GL_BGRA_EXT as a sized renderable format"
> > >
> > > This reverts commit 80093a7d8f850c3ab551ddb4972c2f1f27511433.
> > >
> > > Reason for revert: suspect for blocking rolling ANGLE into Chroimum
> > > https://chromium-review.googlesource.com/c/chromium/src/+/6283973
> > > https://ci.chromium.org/ui/p/chromium/builders/try/chromeos-amd64-generic-rel-gtest/372754/overview
> > >
> > > Original change's description:
> > > > Add GL_BGRA_EXT as a sized renderable format
> > > >
> > > > dEQP tests were updated to cover GL_BGRA_EXT as a sized renderable
> > > > format. It was apparently always supposed to be, based on the
> > > > wording of the spec.
> > > >
> > > > This CL adds that support and updates expectations, along with a few
> > > > extra tests.
> > > >
> > > > Includes contributions from Robic.Sun@arm.com.
> > > >
> > > > Test: angle_end2end_tests, angle_deqp_*_tests
> > > > Bug: b/42267264
> > > > Bug: angleproject:394384906
> > > > Change-Id: Ia10bcd61f66c5d99a3d27a2cfd6008c991ddcaa7
> > > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6235444
> > > > Reviewed-by: Geoff Lang <geofflang@chromium.org>
> > > > Commit-Queue: Cody Northrop <cnorthrop@google.com>
> > > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> > >
> > > Bug: b/42267264
> > > Bug: angleproject:394384906
> > > Change-Id: I64572361cfed33b4ea17eabf278f580471d045c2
> > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6285628
> > > Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
> > > Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
> > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> > > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> >
> > Bug: b/42267264
> > Bug: angleproject:394384906
> > Change-Id: I1bd9df904d93fd54286cbfce53fe89db89e842b9
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6310699
> > Commit-Queue: Cody Northrop <cnorthrop@google.com>
> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> > Reviewed-by: Geoff Lang <geofflang@chromium.org>
>
> Bug: b/42267264
> Bug: angleproject:394384906
> Bug: angleproject:399913714
> Change-Id: I9f79f39a6d9cba3b23c261005bc3e012d70cd1cf
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6312977
> Auto-Submit: Cody Northrop <cnorthrop@google.com>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bug: b/42267264
Bug: angleproject:394384906
Bug: angleproject:399913714
Change-Id: Ifc98fcbb0883dc4a55ad358825e9c1935fa26eaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6330036
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
62bf97d9
|
2025-03-10T14:23:31
|
|
Metal: Fix line loop indexes for primitive restart
Use the existing code to generate line strips from line loops.
Bug: angleproject:401284933
Change-Id: Ie131199c23b93364fabb8f0dc6766f7e8d5f2b8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333539
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
9f9a0dfd
|
2025-03-06T21:20:40
|
|
Fix framebuffer attachment format sizes query for Surface
Surface as framebuffer attachment is always specified and should return
valid format sizes even if extents is empty.
At the same time, accessing Window surface sizes without previously
acquiring next swapchain image (Vulkan backend) may result in outdated
values. In other words, without framebuffer synchronization.
This change not only fixes the bugs, but also removes dependency on
surface size.
Test: angle_end2end_tests --gtest_filter=PbufferTest.ZeroSizedSurfaceFormatQuery/*
Bug: angleproject:402532204
Bug: angleproject:397848903
Bug: angleproject:42261031
Change-Id: I736a484caf99e0ff306c244ca13e1eb181222e64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6329487
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
97083463
|
2025-03-10T09:07:16
|
|
Polish PLS interactions with xform feedback & QCOM_tiled_rendering
For the simplest integration with WebGL, it was decided that
glBeginTransformFeedback() and glStartTilingQCOM() should implicitly
disable PLS, whereas glBeginPixelLocalStorageANGLE() should fail if
either of these modes are active.
Bug: angleproject:40096838
Change-Id: I859a496c99c60c5b040c5eac542f43d85872eb30
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6339788
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
4b39a6a9
|
2025-03-08T14:16:29
|
|
Generate errors for framebuffer invals during PLS
Generate GL_INVALID_OPERATION for InvalidateFramebuffer,
InvalidateSubFramebuffer, and DiscardFramebufferEXT (and add them to the
PLS allow list so we can test the new validation).
This is part of a final preparation before deleting the allow list.
Bug: angleproject:40096838
Change-Id: If8ffb9c1998ca739798171ae4643a3c9ad3ee049
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6335750
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bdff6ade
|
2025-03-10T17:49:35
|
|
Correct glGet* values for stencil masks
Using CastMaskValue for GL_STENCIL_VALUE_MASK,
GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_WRITEMASK and
GL_STENCIL_BACK_WRITEMASK would cast them from 0xFFFFFFFF
to 0x7FFFFFFF, which makes glGetInteger* and glGetFloat*
return wrong value for them. CastMaskValue is not
needed now, so we should delete it. Also, glGetFloat*
return value should be positive, so additional cast
is added for those masks.
Bug: angleproject:399774386
Change-Id: Ibc2a5fd232be25c854b33df513e3cc0c74cfe8a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6342590
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1ead4cbd
|
2025-03-07T09:49:21
|
|
Allow texture modification commands while PLS is active
Just do a little extra validation and bounce modifications if they would
modify an active PLS plane.
Bug: angleproject:40096838
Change-Id: I6f27951f5d0ef5dfaf23b5a005a2d94a749e2c4f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6337703
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
235c0be1
|
2025-03-07T13:48:48
|
|
Fix program cache on relink with glTransformFeedbackVaryings
glTransformFeedbackVaryings updates
mState.mTransformFeedbackVaryingNames, which was then saved to cache
during a post-link that might happen after this was executed.
Change ::serialize() to save
mState.mExecutable->mTransformFeedbackVaryingNames
instead, as according to Shabi this is the intended behavior.
Also do the same for isSeparable and transformFeedbackBufferMode.
Adds a repro where this led to tfvaryings getting loaded from cache into
a new program that didn't specify tfvaryings.
This resolves the interaction between these tests executed sequentially
(such as with --bot-mode):
GLSLTest_ES3.UnsuccessfulRelinkWithBindAttribLocation/ES3_Vulkan
MultithreadingTest.ProgramLinkAndBind/ES3_Vulkan
Bug: angleproject:401554049
Bug: angleproject:383164783
Change-Id: I66c599bc68c537e0cd47fbb99dd61d1d7a8a2824
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6329734
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
79faadf7
|
2025-02-19T16:04:19
|
|
Vulkan: Simple WindowSurfaceVk refactoring
Changes:
- Update `ImageAcquireState` enumeration.
- Make `getCurrentWindowSize()` const. Some implementations are now
using local `surfaceCaps` variable instead of `mSurfaceCaps`, however
this will not affect reset of the logic.
- Remove `extentsOut` parameter from `createSurfaceVk()` and call
`getCurrentWindowSize()` explicitly only when needed.
- Remove `forceSwapchainRecreate` parameter since it is always has false
as an argument.
- Remove redundant `impl::` namespace.
- Make `queryAndAdjustSurfaceCaps()` const.
Bug: angleproject:397848903
Change-Id: I955be15fb4709e137f2ad8a165fd04a3fe626fbf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298732
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
35ffe55c
|
2025-03-09T15:00:27
|
|
Block framebuffer queries on overridden PLS state
Generate an error from glGetFramebufferAttachmentParameteriv() when
querying a color attachment that has been overridden by PLS.
Bug: angleproject:40096838
Change-Id: I83e68c3527f034f9a24822cf4f57789f81b9b6af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6338390
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5b343e8f
|
2025-03-11T11:35:08
|
|
Vulkan: Remove support for Stadia
Bug: angleproject:42262714
Change-Id: Icae5fe828fe4e0bcd287d297df1bc586708ef86e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6344390
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
668a7a2e
|
2025-02-19T14:55:49
|
|
Revert "Vulkan: Return cached width and height for eglQuerySurface"
This reverts commit db833869131eddb36e695717a823a540e3cdc8ba.
Reason for revert:
Native GLES driver behavior on Android is different from what was tested
by "EGLPreRotationSurfaceTest.CheckSurfaceCapabilities" test. More
precisely, behavior is different depending if native Window is resided
using `ANativeWindow_setBuffersGeometry()` or resized by the user
(screen rotation or resizing of a floating window).
In case of `ANativeWindow_setBuffersGeometry()` resize (used by tests),
surface will have size of the Window up until image is acquired
(dequeued). In other words, size will be fixed after draw and will match
current Window size until draw.
In case of resizing by the user, surface size will be fixed until the
next swap. This is the behavior that was tested by the reverted test.
Bug: angleproject:397848903
Bug: angleproject:153329980
Change-Id: I8fc8d194c1591aff714dd255acd25392b4963e0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6298731
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
d62bc095
|
2025-03-10T16:01:02
|
|
Remove unused VVL skip message
Following test
angleproject:42265049
MultisampledRenderToTextureES31Test.DrawCopyThenBlendAllAttachmentsMixed/ES3_1_Vulkan
no longer fails due to VVL error.
Tested on Pixel 8.
Remove the outdated VVL suppression.
Bug: angleproject:42265049
Change-Id: I6e4ba623439a3705e0b897af0af1d1174ef34854
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6341271
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9a753dba
|
2025-01-16T13:00:07
|
|
Metal: remove unused, buggy primitive restart code
Remove functions related to primitive restart that are not used and
are buggy.
Bug: angleproject:401284933
Change-Id: I4b64fda45f2d1654fafd180aeaaf17fe365d5016
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333537
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f38a081c
|
2025-03-06T12:34:20
|
|
WGPU: when copying to mip levels, copy correct size
Bug: angleproject:389145696
Change-Id: I78a2a573de371c1439033ef4e43f84906b076d41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333237
Reviewed-by: Liza Burakova <liza@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
|
|
1bfeb8a5
|
2025-03-03T00:00:00
|
|
D3D11: Set SV_Position interpolation for conservative depth
HLSL requires centroid interpolation for PS input
position if conservative depth output is used and
the shader is executing at pixel-frequency.
Bug: angleproject:397720825
Change-Id: I2b314e39e40a63cb58e2bdef99ffa842ddaaff0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6336827
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f1a29079
|
2025-02-27T16:47:17
|
|
Add validation of invalid parameters for certain APIs
The list of modified validation APIs:
- ValidatePixelPack
- ValidateDebugMessageControlKHR
Bug: angleproject:399412222
Change-Id: I07a5603431db6b0f89139fdd21d2d0a050b30027
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6307365
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Xinyu Fang <xinyu.fang@arm.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6c2737be
|
2025-03-06T13:09:44
|
|
Allow RASTERIZER_DISCARD while PLS is active
Writes to pixel local storage can just be discarded as normal.
The only special interaction we need is that BeginPixelLocalStorageANGLE
always clears the PLS attachments, even if RASTERIZER_DISCARD is
enabled.
Bug: angleproject:40096838
Change-Id: I43d00af96b287134d73f08802cea58694fe7d717
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6332026
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e41cbdb5
|
2025-02-26T17:51:06
|
|
Complete the implementation of GL_EXT_buffer_storage
Currently, glBufferStorageEXT doesn't set buffer usage to
DYNAMIC_DRAW. Also, validation of glGetBufferParameter* misses
check for GL_BUFFER_IMMUTABLE_STORAGE_EXT and
GL_BUFFER_STORAGE_FLAGS_EXT. This patch fixes these issues.
Also, an end2end test is added.
Bug: angleproject:399689628
Change-Id: Iecf6bd921f4fff849a5f059adf40043d08edfb7a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6312515
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|