|
f56c8e02
|
2025-03-28T00:00:00
|
|
Fix & cleanup advanced blend equations support
* Made advanced blend equation extensions
enableable to facilitate better testing.
* Made initial BLEND_ADVANCED_COHERENT state to be
unconditionally true regardless of the extension
support. If the coherent extension is unsupported,
that state must not be observable anyway.
* Ensured that advanced blend equation functionality
is supported on unextended OpenGL ES 3.2 contexts.
* Removed redundant ES 2.0+ context version checks
because these extensions must never be enabled
on ES 1.x contexts.
* Fixed ValidateBlendBarrierKHR to set the correct
error code and properly mark invalid calls.
* Added more negative test cases and enabled
tests on OpenGL ES 3.0 contexts.
Bug: angleproject:42262258
Bug: angleproject:406922380
Change-Id: I709376ad40b09972a31a691ca3813e87dd2c8165
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6421857
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
45de9be0
|
2025-03-27T16:38:28
|
|
num_views layout qualifiers are allowed only in vs
Bug: angleproject:385038758
Change-Id: I415c9d83b227673f9fbeeb30e8f51d69c34212ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6414749
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Robic Sun <Robic.Sun@arm.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
eec873ed
|
2025-03-28T00:00:00
|
|
Fix FramebufferTexture2DMultisampleEXT validation
Generate an error when the samples value is negative.
Bug: angleproject:406922380
Change-Id: I508f3ddf82e30291fdcc3086ab19ebfa4f84947c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6421716
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
0d1478f3
|
2025-03-27T18:40:05
|
|
Fix dFdx() dFdy() in frag shader not work as expected
When render to FBO0, Y axis will flipping, Angle's compile module
will handle this, but only when glsl version > 300, that's a mistake
as glsl 100 also have dFdx/dFdy when have GL_OES_standard_derivatives.
Bug: angleproject:406819301
Change-Id: I656cfcfdeff1e80db374cfa083578adda6064e69
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6407233
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Neil Zhang <Neil.Zhang@arm.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
de71760b
|
2025-03-28T00:00:00
|
|
Ensure ValidateGetMemoryObjectParameter entry point consistency
Invalid calls must not reach the context.
Bug: angleproject:406922380
Change-Id: I6b4fadabe93215839fcd6c8d35952f37d5a6755b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6417007
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
4536457b
|
2025-03-28T00:00:00
|
|
Ensure ValidateCompressedTex[Sub]Image*Robust consistency
Invalid calls must not reach the context.
Bug: angleproject:406922380
Change-Id: I3c3849c08f17fda76f4cf1f2b4ec989d3da81431
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6415818
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
85fe2671
|
2025-02-25T16:54:20
|
|
Set length or infoLog when they are not NULL
For glGetProgramPipelineInfoLog, spec says that if length is NULL,
then no length is returned. Also do this to infoLog to avoid crash.
Bug: angleproject:398904340
Change-Id: I1f87a8932f72a0d5c44c2344936ee18c674a802b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6300356
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
9bdc6763
|
2025-03-03T15:54:46
|
|
GetProgramPipelineiv may create a new state vector
For glGetProgramPipelineiv, spec says that If pipeline is a name
that has been generated (without subsequent deletion) by
GenProgramPipelines, but refers to a program pipeline object that
has not been previously bound, the GL first creates a new state
vector in the same manner as when BindProgramPipeline creates a new
program pipeline object.
Also creates a new state vector in glValidateProgramPipeline if the
pipeline has not been previously bound.
Modify the ProgramPipeline's validate function so that when the
program pipeline is generated, but has never been bound, the
validation status would be false.
Bug: angleproject:400254603
Change-Id: I906669a4e80aa12283156bae8a72a2dbf0b63b90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6316349
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
1a0c9db3
|
2025-02-27T10:43:00
|
|
Vulkan: Disable monolithic pipeline creation with GPL
As it violates OpenGL ES rules. This change also removes Vulkan perf
counter tests that attempt to verify that warmed up programs hit the
cache... this fails in non-trivial ways especially with graphics
pipeline library due to:
- Warm up tasks being async, they may finish after the test reads the
perf counters to set expectations
- Some drivers report a cache miss when fast-linking libraries... but
likely they don't even look at the cache (so both hit and miss would
have been inaccurate)
- There is no 100% guarantee that the warmup really leads to a draw-time
cache hit.
Things are made worse by
https://chromium-review.googlesource.com/c/angle/angle/+/5421594 because
we don't necessarily even wait for the warm up tasks if ANGLE's view of
the pipeline description doesn't match what was used for warm up (even
if internally to the driver some of the state does not affect the binary
blobs).
Bug: angleproject:42265839
Change-Id: Iaf96e4f64e2187abc666ff07fe1304d7474a0e86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6309696
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
4fae3323
|
2025-03-03T14:21:07
|
|
ValidateEGLImageObject should not skip 3D EGLImage
* Vulkan and GL backends already support 3D EGLImage, so remove related
part in ValidatioinEGLImageObject.
* Add a new end2end test for 3D EGLImage.
Bug: angleproject:399774384
Change-Id: I6c39298a2f2d4c2dded2d6ddd8b98cdb8a22616a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6311581
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Aurora Zhang <Aurora.Zhang@arm.com>
|
|
2e65d3d4
|
2025-02-03T16:26:46
|
|
Vulkan: Fine-tune submission for multiple RPs
This CL aims to fine-tune submission based on a certain command
buffer size. This allows us to perform one submission for multiple
smaller render passes.
* Added mCommandsPendingSubmissionCount to ContextVk.
* In ContextVk::syncState(), preferSubmitAtFBOBoundary is only used
if the render pass pending command count exceeds the threshold:
kMinCommandCountToSubmit
* Currently set to 32.
* For now, we still submit if the command is a clear (for example
glClearBufferfv()).
* For now, we also still submit if the command is an invalidate
(for example, glInvalidateFramebuffer()).
* In ContextVk::flushImpl(), if the pending command count exceeds the
threshold (kMinCommandCountToSubmit) and the device is found to be
idle, the work is submitted to keep the device busy.
* Modified the following unit test from VulkanPerformanceCounterTest:
VerifySubmitCounterForSwitchUserFBOToDirtyUserFBO
* Since there is now a minimum command count for submission, the
number of draw calls has been changed so that the submission is
still issued at the new FBO boundary.
* After this CL, life_is_strange shows the following improvements:
(From the latest measurements)
* +19% wall_time
* +38% cpu_time
Bug: angleproject:42265052
Change-Id: I18452cc1d39ca7e0ac376f6012974b498153cce8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6182927
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
bd8bc105
|
2025-02-19T18:08:32
|
|
vulkan: disable pipeline cache data serialization for nvidia device.
we still see the big cache data issue after driver version 520.
rename hasEffectivePipelineCacheSerialization to
skipPipelineCacheSerialization.
Bug: b/358380399
Change-Id: Idd8354f95c3eb4c2e58678a4cf50c8b6af20f371
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6284126
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Hailin Zhang <hailinzhang@google.com>
|
|
1f4708b2
|
2025-02-28T16:38:36
|
|
Fix nullptr argument to std::string constructor
Passing nullptr to std::string's constructor is not allowed and the
latest libc++ version warns about it.
Bug: chromium:399683086
Change-Id: Id43d2d58b8e9df99a811345e46cfe0d8b60c0cca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6311612
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Hans Wennborg <hans@chromium.org>
|
|
4bfb9da6
|
2025-02-28T12:49:28
|
|
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>
|
|
055123f8
|
2025-02-27T10:45:56
|
|
Vulkan: Don't maintain SharedCacheKeyManager for BufferBlock
Dynamic descriptor type uses the underlying BufferBlock in the
descriptorSet. There could be many BufferHelper objects sub-allocated
from the same BufferBlock. And each BufferHelper could combine with
other buffers to form a descriptorSet. This means the combination for
BufferBlock could potentially be very large, in thousands with some app
traces like seeing in honkai_star_rail. The overhead of maintaining
mDescriptorSetCacheManager for BufferBlock could be too big. In this CL
I have chosen to not maintain mDescriptorSetCacheManager in the
BufferBlock. The only downside is that when BufferBlock gets destroyed,
we will not able to immediately destroy all cached descriptorSets that
it is part of. They will still gets evicted later on if needed (see
evictStaleDescriptorSets for detail). After this CL, running with all
app traces we have, the max vector size of
SharedCacheKeyManager::mEmptySlotBits is no more than 2, versus ~70s
before the CL.
Bug: b/384839847
Bug: b/293297177
Bug: b/237686097
Change-Id: I7c7c91cd0aeacba4145575ac4270b713bf38b742
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6310837
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8f2fbbd1
|
2025-02-27T13:33:06
|
|
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>
|
|
ca7e8882
|
2025-02-26T14:39:47
|
|
Account for relaxed precision conversion data loss
1. Add highp precision qualifier for "expect" uniforms
2. Change EXPECT_EQ -> EXPECT_*NEAR when using mediump
Bug: angleproject:391002353
Change-Id: I5a75ec81e622718f989f357fc263ae287c2c7dbc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6306684
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ca8f072e
|
2025-02-13T16:46:30
|
|
Implement EGL_LARGEST_PBUFFER
When EGL_LARGEST_BUFFER is set to true during creating a
EGL pbuffer surface, it requires the largest available pixel buffer
surface when the allocation would otherwise fail. This means if
width/height is bigger than config's maxPbufferWidth/maxPbufferHeight,
it should be clamp to maxPbufferWidth/maxPbufferHeight. An end2end
test is also added.
Bug: angleproject:397315935
Change-Id: Ic160d9693478c87b59ece0a421d3acd5d6699ddc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6277912
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e3178f0e
|
2025-02-24T14:38:36
|
|
Add AHB clear tests using glClearTexImage
* Add tests to clear AHB images before readback, but using
glClearTexImage() instead of using a framebuffer and glClear()
* AHBClearAppliedViaClearTexImageBeforeReadBack
* AHBTwiceClearViaClearTexImageAppliedBeforeReadBack
Bug: b/223456677
Change-Id: Ic5ad2b5202aa24f38dc1783205900a0dab5125f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6299797
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
5775a974
|
2025-02-21T11:00:05
|
|
Vulkan: Fix transition to FORIEGN and back in same submission
Image layout transitions are typically automatically handled. In some
cases however, the image layout is specifically "finalized". For
foreign images, the relevant cases are all about the point in time when
the image is being released.
When a foreign image's layout is finalized, a barrier is generated to
transition it to the FOREIGN queue on submission. Previously, an
incorrect assumption was made that after such a point, the VkImage will
no longer be used by any commands.
This was incorrect because of EGL Images, which let the same VkImage
(and ImageHelper) be shared between multiple textures. The following
scenario broke that assumption:
- Texture is bound to the (foreign) EGL image
- Texture is used and deleted
* VkImage's transition back to foreign is cached, but not executed
- Another texture is bound to the same EGL image
- Texture is used
* At this point, the texture is re-acquired from foreign, but it
wasn't released in the first place!
In this change, a vkQueueSubmit is issued after the foreign image's
layout is finalized to make sure the transition back to FOREIGN is
applied.
Bug: angleproject:42263241
Bug: angleproject:42262454
Bug: angleproject:390443243
Bug: chromium:382527242
Change-Id: Ibe3e6d60f282f9fb0eed1deba3325456017c3617
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6292804
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
34faa3db
|
2025-02-08T15:17:10
|
|
Fix issue that stride setting is incorrect when rotation is true
When rotateXY is true, stride should increase or decrease
on the Y axis.
Bug: angleproject:395131251
Change-Id: I0f5363c9952ccdf0a036499a9f918853eff7cd10
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6242496
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Robic Sun <Robic.Sun@arm.com>
|
|
3972cfa1
|
2025-02-18T19:52:06
|
|
YUV should support on all the shader stages
* The spec requires all shader stages should support YUV. Therefore,
move YUV related functions out of the switch.
* Add a new end2end test that sampling YUV in the vertex shader.
Bug: angleproject:391919465
Change-Id: I7811d419d5f1461c2499c522a902c3b2149289a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6263325
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ba174a76
|
2025-02-19T16:35:15
|
|
Vulkan: Bugfix for nullColorAttachmentWithExternalFormatResolve
When nullColorAttachmentWithExternalFormatResolve is VK_TRUE,
* The imageView in VkRenderingAttachmentInfo for dynamic rendering
should be VK_NULL_HANDLE.
* Push YUV resolveImageView as if it is the color attachment to ensure
the coherency between ops, clearValues and attachmentViews for both
dynamic rendering and render pass objects. Then pack the YUV resolve
information first as well.
* Add end2end tests that render and clear YUV with a depth attachment.
Bug: angleproject:395212980
Change-Id: I8b6173b41723ed7dc12359e181791fb1ac22fc41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6262510
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
f9566385
|
2025-02-06T00:00:00
|
|
Fix GetBooleani_v validation
That entrypoint must require OpenGL ES 3.1.
Fixed: angleproject:394610814
Change-Id: I9ee80d1497afadfdc0d714e49bb97b741ad57b63
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6243878
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
be98f841
|
2024-11-30T02:11:05
|
|
Implicitly end PLS for framebuffer reads and writes
In preparation for removing the PLS allow list, convert more problematic
methods to the new paradigm of implicitly ending PLS instead of
generating errors.
Also simplify the disable logic for framebuffer modifications, and just
blindly disable PLS for framebuffer updates, regardless of whether it's
GL_READ_FRAMEBUFFER or GL_DRAW_FRAMEBUFFER.
Bug: angleproject:40096838
Change-Id: Ie4390a219f5f05ef0a3d00f405d4914592726283
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6077335
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
22dfe435
|
2025-02-20T06:46:07
|
|
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>
|
|
80093a7d
|
2025-02-03T08:50:21
|
|
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>
|
|
bc40362b
|
2025-02-18T13:24:31
|
|
Add line loop emulation for draw arrays
Bug: angleproject:383356846
Change-Id: I43f4835e17ecb2401418f77555fd70332612e1bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6090912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
|
|
d252425d
|
2025-02-06T14:51:36
|
|
Vulkan: Check source image usage flags in copy paths
... instead of the format feature flags. If the source of the copy is
has external format (allowed with glCopy[Sub]TextureCHROMIUM), the
format feature checks are unable to query the format features. However,
the image usage flags already have the required information (whether the
image can be copied from, sampled from, etc).
Bug: chromium:383056998
Change-Id: I2ba8820751eb526ef497a8be724193276fd46160
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6238265
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
b5584cfd
|
2025-02-05T15:14:52
|
|
ValidTexLevelDestinationTarget should add external related cases
GL_TEXTURE_EXTERNAL_OES is not documented in OES_EGL_image_external
spec, but we consider that to be an omission in the spec.
Bug: angleproject:394380758
Change-Id: Idb5523c173ae0a5910af97639dadff3c5adf9fdf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6232504
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
eaf06ea7
|
2025-02-06T13:58:07
|
|
Vulkan: Bugfix in resolvePrecisionMismatch(...)
Early-return if a varying is not active in either the front or back
shader
Bug: angleproject:386749841
Test: GLSLTest.MismatchedInactiveVarying*
Change-Id: Ie0c6dfd6616afcb94bec043d36d4f8188df8abb3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6239031
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
82e25a32
|
2025-02-03T15:07:33
|
|
Make all " < 0" error messages consistent
Use the form:
Error is due to reason: <error message>
Bug: angleproject:392938089
Change-Id: I9e72858cf76a46ab874ffc211afdae1eb93ca05d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6225600
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9c6af5ce
|
2025-02-04T22:50:01
|
|
Vulkan: Fix crash in SPIR-V transform with varying precision fix
Bug: angleproject:386749841
Change-Id: I5743eb049dde6c8a093b175e857251bad9b2bc9a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6232948
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
aa94da02
|
2025-02-04T12:41:36
|
|
Revert "Vulkan: Bugfix in SPIRV entrypoint transformation"
This reverts commit 9975e80b9d98a2158ae859b3f4eff7340baa540d.
Reason for revert: Crashes on platforms with varyingsRequireMatchingPrecisionInSpirv
Original change's description:
> Vulkan: Bugfix in SPIRV entrypoint transformation
>
> Perform varying precision fixer transformation before
> other shader-stage-specific transforms that could
> potentially modify the interfaceList.
>
> Also enhance EXTBlendFuncExtendedDrawTest by enabling
> additional config with VaryingsRequireMatchingPrecisionInSpirv
> feature enabled
>
> Bug: angleproject:386749841
> Change-Id: Ife4a2f932415296f1565527e50a2b8646cd7697d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207741
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Change-Id: I07064136f962a7d73ce5c80289da300d474faa22
Test: professional_baseball_spirits trace
Bug: b/394299327
Bug: angleproject:386749841
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6227993
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
7d37d970
|
2025-01-30T13:47:59
|
|
Make error messages end in a dot
Some messages had dot and some not.
Fix by adding dot to all error message string literals.
Best effort, for free form string literals, check ANGLE_CHECK invocation
sites only.
Bug: angleproject:392938089
Change-Id: Idedc3fe1d1e186fb91b5e54407df87f6830995a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218460
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
03019646
|
2025-01-29T10:36:38
|
|
Vulkan: Fix invalidate of emulated format followed by more draws
If invalidating a color image with emulated channels, a clear is
automatically staged so the emulated channels don't contain invalid data
later. This is problematic with deferred clears; the clear marks the
framebuffer attachment as dirty, and the next command causes
`FramebufferVk::syncState` to pick the clear up as a deferred clear.
This is normally correct, except if the following command is another
draw call; in that case, the render pass does not close, yet the clear
is cached in `mDeferredClears`. When the render pass later closes, it
undoes the invalidate and attempts to remove the clear from the image...
but it does not exist there anymore (it's in `mDeferredClears`). Next
usage of the image then clears it, undoing the draws after invalidate.
In this case, the simplest approach is to close the render pass right
away here. Note that it is not possible to make
`FramebufferVk::syncState` avoid picking up the clear in
`mDeferredClears`, not apply the clear, _and_ keep the render pass open;
because future uses of the image (like with |glReadPixels|) will not
trigger `FramebufferVk::syncState` and the clear won't be done.
Bug: angleproject:353167428
Change-Id: Ie677bd12d9f11953cdcd5e4c374b59c4f63e7456
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6214331
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
40523499
|
2025-01-29T12:13:45
|
|
WebGPU: Emulate line loops for drawElements
Bug: angleproject:383356846
Change-Id: I82a6dfad4a1c5d434f029701611e4b61344655f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6086120
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9975e80b
|
2025-01-28T17:25:38
|
|
Vulkan: Bugfix in SPIRV entrypoint transformation
Perform varying precision fixer transformation before
other shader-stage-specific transforms that could
potentially modify the interfaceList.
Also enhance EXTBlendFuncExtendedDrawTest by enabling
additional config with VaryingsRequireMatchingPrecisionInSpirv
feature enabled
Bug: angleproject:386749841
Change-Id: Ife4a2f932415296f1565527e50a2b8646cd7697d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207741
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
0f75fc3d
|
2025-01-20T14:10:41
|
|
Vulkan: Transition foreign images to the FOREIGN queue on submit
Vulkan's interaction with AHB and dmabuf images is through the FOREIGN
queue family. When ANGLE uses these images, it must take ownership of
the images by doing a queue family ownership transfer (QFOT) away from
the FOREIGN queue family and into the graphics queue family used by the
Vulkan backend.
Prior to this change, ANGLE would do the QFOT away from FOREIGN once
such a foreign image is imported into an EGL image. Afterwards, usage
in ANGLE works correctly. What ANGLE did not handle is when a foreign
entity wants to use these images _after_ ANGLE has used them.
For the above to work correctly, ANGLE must do a QFOT back into FOREIGN
before the image can be used by the foreign entity. Unfortunately,
EGL does not provide a clear point for this hand-off to happen. ANGLE
has no choice then to proactively transition the images back into
FOREIGN at some point "just in case".
For some native drivers, this hand-off to FOREIGN can be quite frequent.
For example, on Android for most vendors there is no actual layout
transition between graphics and FOREIGN queue families (the actual data
layout is the same), so a cache flush/invalidate at strategic points
(such as the end of the command buffer) is sufficient as equivalent to
transition to FOREIGN (and another at the beginning of the command
buffer as equivalent to transition from FOREIGN).
As a layer over Vulkan's formalism, ANGLE is less lucky; it has to
enumerate exactly which image is being transitioned to and away from
FOREIGN. Transitions away from FOREIGN are in principle easy. As long
as the image is marked as being in the FOREIGN queue family, it will
automatically transition to the graphics queue family on first use.
In this change, when a foreign image is transitioned out of the FOREIGN
queue, it's added to a list of images to be transitioned back to FOREIGN
at submit time. Once submission is done, the image may or may not
actually be used by a foreign entity, but ANGLE cannot know that. The
next time the image is used in ANGLE, it is transitioned out of FOREIGN.
Verifying correctness with multi-threading is tricky, and relies on GL's
requirement that access in one context is followed by a synchronization
and rebind in another context before it can be used there. This means
that the image's transition to FOREIGN (at the end of one submission)
naturally happens before the transition back from FOREIGN (at the
beginning of the next submission). Because the set of images to
transition is tracked in the context, submissions in other contexts
don't interfere with the above logic.
The situation can be more complicated with one-off submissions, but
fortunately, no such usage of foreign images is present.
Another wrinkle is simultaneous usage of the image as read-only in two
contexts. According to GL, this is not a hazard and requires no
synchronization. However this is broken in ANGLE even for non-foreign
images (see http://anglebug.com/42266349), because as what _seems_ like
read-only usage of the image from GL's point of view (like sampling from
the image), there are associated write operations from Vulkan's point of
view (image layout transitions and QFOT). This change does not attempt
to address this corner case.
Bug: angleproject:42263241
Bug: angleproject:42262454
Bug: angleproject:390443243
Bug: chromium:382527242
Change-Id: Idd4ef1fecfa3fccf1a4063f1bddb08d28b85386b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6184604
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0554e7f0
|
2025-01-09T10:05:12
|
|
Vulkan: Resume render pass queries when render pass reactivates
Bug: angleproject:388144480
Change-Id: Ibcf3b247f347705feed4aa43d237406ccb142704
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6185098
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
c7cfbbc9
|
2025-01-20T22:31:42
|
|
Check if the GLES resources are bound to EGL image
Per spec, The resource that will be used to create egl image
must not itself be an EGLImage sibling, so validation for the
resource in this case should be include.
Bug: angleproject:388310036
Change-Id: I2b47e3de4f92beca7ff7a80383a7598c79fdedb0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6170833
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0dabfe5a
|
2025-01-16T16:00:51
|
|
Tests: Supplement EXT_clear_texture tests
* Added negative tests in ClearTextureEXTTest.Validation.
* According to spec, divided format lists into color renderable and
unrenderable two sets.
* Bind the renderable format texture as a color attachment to test
EXT_clear_texture.
* Sample the unrenderable format texture then call glDraw to test
EXT_clear_texture.
Bug: angleproject:384967031
Change-Id: I71d77ef57772fbb5b174929e9ac2892e7dc3215f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6108999
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
aa6a9fae
|
2025-01-16T17:18:59
|
|
Vulkan: Selectively enable input attachment usage bit
Add VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT iff
supportsShaderFramebufferFetchDepthStencil feature is enabled.
Also, add noncoherent qualifier in a few FramebufferFetchTest
Bug: angleproject:352364582
Change-Id: I09c54a8d738b5cb4cbcf2716cdbff0c0ec9e31cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6181497
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc33f0a0
|
2025-01-15T11:23:25
|
|
Add a ReadPixels test for offset alignment check
An INVALID_OPERATION error is generated if a pixel pack buffer object
is bound and data is not evenly divisible by the number of basic
machine units needed to store in memory the corresponding GL data
type from table 8.4 for the type parameter. Add a test for this.
Bug: angleproject:352963094
Change-Id: I81eda446df5ff29da1326a1f75f5d5aa0825aafd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6170763
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
8ee72cc7
|
2025-01-13T13:44:31
|
|
WGSL: support matCx2 in uniforms
matCx2 in WGSL does not match std140 layout and so it needs to
be translated as array<ANGLE_wrapped_vec2, C> when in a uniform.
On use it needs to be converted to a WGSL-native matCx2.
This also includes the optimization of an array<matCx2> in a
uniform--when indexing into it, only the indexed element
will be converted to a native matCx2, instead of converting
the entire array and then indexing.
Bug: angleproject:376553328
Change-Id: I1d84471234b3d3cf4cf361ae89cb61675d5bf9a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6157788
Reviewed-by: Liza Burakova <liza@chromium.org>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3675ca04
|
2025-01-07T17:59:30
|
|
Vulkan: Bugfix for xfb GL_SEPARATE_ATTRIBS mode in PPO case
The new executable state transformFeedbackBufferMode should hold
the result of the link.
An end2end test is added.
Bug: angleproject:385662281
Change-Id: I52398ad9a9fe76344b94dac787cae7141924d1dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6156277
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4c1354d9
|
2025-01-03T14:41:27
|
|
Make sure the AHB is not corrupt when bound to egl image
The AHB bound to egl image could be corrupt or not a valid
ANativeWindowBuffer, it should be validated when creating
egl image.
Bug: angleproject:387226848
Change-Id: Iefc5506746ceaad92d16b02d5c0838156eee2f9d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6126739
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0501d32f
|
2024-12-23T18:02:54
|
|
Draw call with un-aligned index buffer should be checked
Bug: angleproject:385264236
Change-Id: I1ff7e93bf4b9ea9020e82f3558e4157b74cb7078
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6151227
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
65513240
|
2025-01-03T17:26:55
|
|
Fix initializing output variables
... by compiling a list of TVariables instead of names that are later
looked up. The latter results in wrong symbols being initialized when
the output variables are shadowed.
Bug: chromium:376738756
Bug: chromium:377553431
Change-Id: I76b9688c035476c547ac73cff380629161210406
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6143374
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fe76d70b
|
2025-01-10T14:41:06
|
|
Vulkan: Enable 16-bit norm support for tex buffers
According to the spec for EXT_texture_norm16, it enables texture
buffers to support the following additional formats:
* GL_R16_EXT
* GL_RG16_EXT
* GL_RGBA16_EXT
All of the above are unsigned short normalized values.
* Updated validation to support the aforementioned formats in texture
buffers in case of support for the norm16 extension.
* Updated AdjustViewFormatForSampler() to also support norm16 values.
* Added the condition for advertising textureNorm16EXT that the 16-bit
UNORM formats above should have the buffer feature bit for texture
buffer support: VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
* Added support check for renderSnormEXT after textureNorm16EXT,
since the check for former currently uses the support for latter
as a parameter.
* Added unit tests to draw using a texture buffer with norm16 formats.
* Added TextureBufferTestBase in order to test the API calls in the
extensions and the core ES 3.2 version, which the following suites
are derived from:
* TextureBufferTestES31 (existing)
* TextureBufferTestES32 (new)
* Extended the tests to similar 8-bit formats.
Bug: angleproject:381313704
Change-Id: I49157e8c2c9b5438eaf8d56c1932d12e56489318
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6169006
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
cfe87e34
|
2024-12-16T16:29:39
|
|
Add multisample support for glCopyImageSubDataEXT
As GL_TEXTURE_2D_MULTISAMPLE/GL_TEXTURE_2D_MULTISAMPLE_ARRAY
been introduced by GLES3.1, glCopyImageSubDataEXT should support
those types.
Bug: angleproject:381727390
Change-Id: Ib3571ea38dc8d8ceb1bc9ad0c8a6e04d28b0ec33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6146194
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
c289b30f
|
2025-01-09T12:49:27
|
|
WGSL: Add test for failure case of uniform struct rewrites.
Using a uniform struct outside of the uniform address space fails
if we've rewritten any of the member types and want to assign to
that member.
E.g. this line of GLSL, assigning to a member of a struct used in
the uniform address space:
privUnis.x = float[3](1.0, 1.0, 1.0);
Produces this WGSL warning:
ERR: DisplayWgpu.cpp:295 (operator()): Error: 2 - message: Error while parsing WGSL: :50:63 error: expected ')'
(ANGLE_Convert_ANGLE_wrapped_float_ElementsTo_float_Elements((_uprivUnis)._ux)) = (array<f32, 3>(1.0f, 1.0f, 1.0f));
This adds a test and suppresses it on WGSL.
Future design options:
https://docs.google.com/document/d/17Qku1QEbLDhvJS-JJ9lPQAbnuZtLxWhG-ha5eCUhtEY/edit?tab=t.0#bookmark=id.r89s1r69tl77
Bug: angleproject:376553328
Change-Id: I57304e9d2a889d00ac4fa02f265198ce3d78e7e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6165290
Reviewed-by: Matt Denton <mpdenton@google.com>
Commit-Queue: Matt Denton <mpdenton@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
b1a0d60f
|
2025-01-08T15:10:41
|
|
WGSL: Fix accidentally overloaded functions
Small-stride arrays in uniforms with the same element type, but
different array sizes, would cause the WGSL generator to produce
conversion functions with the same name but different array sizes.
This CL puts the array size in the name of the function to
avoid overloading, which is unsupported in WGSL.
Bug: angleproject:376553328
Change-Id: I446e91ccb9da2872c88f1a4e05283aacc9d6f8b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6160334
Commit-Queue: Matt Denton <mpdenton@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Matt Denton <mpdenton@google.com>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
2de256cb
|
2024-12-30T17:26:38
|
|
Change some error type in eglCreateImageKHR
Following the spec, for eglCreateImageKHR, if target is
EGL_LINUX_DMA_BUF_EXT and attribute value is not expected,
then EGL_BAD_ATTRIBUTE should be returned. However, ANGLE would
return EGL_BAD_PARAMETER. Now change these error handlings to
return EGL_BAD_ATTRIBUTE. Also, a end2end test is added.
Bug: angleproject:387892107
Change-Id: I73ecfc3da273c0fb5ac362e451fd186209f1a52b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6146196
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
19ef77a2
|
2025-01-09T15:37:34
|
|
Validate glEGLImageTargetRenderbufferStorageOES renderbuffer
glEGLImageTargetRenderbufferStorageOES changes the renderbuffer.
Avoid crashing if there is no renderbuffer bound.
Bug: angleproject:388616184
Change-Id: I05eacb7a5907d2ca9cde8e91aa7814daa3008c71
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6163503
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
363f6264
|
2025-01-07T10:35:09
|
|
WGSL: unwrap single array element from uniform
...instead of unwrapping the entire array when only one element is
being accessed.
The is step #4 from the implementation plan in
https://docs.google.com/document/d/17Qku1QEbLDhvJS-JJ9lPQAbnuZtLxWhG-ha5eCUhtEY/edit?tab=t.0#bookmark=id.dt9vmixnpdvo
Bug: angleproject:376553328
Change-Id: I6c559f44b75cd1d3c4a478141c11f65a33d76bdf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6102117
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Matt Denton <mpdenton@google.com>
Reviewed-by: Matt Denton <mpdenton@google.com>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
6f32ed6c
|
2025-01-03T23:54:22
|
|
Fix struct sampler rewrite vs comma
Bug: chromium:377614665
Change-Id: I2c0e8230e31405c9e7fd165a9fca68b7e9f31a76
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6142516
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d1496a22
|
2025-01-03T22:54:27
|
|
Produce same compile errors for op= as op
Bug: chromium:376787367
Change-Id: Ic2c1415c184c603b86876e5eb70eee602639abbf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6142515
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
15b1fb37
|
2024-12-29T00:38:43
|
|
Fix mixing multisampled renderbuffers and textures
When querying a renderbuffer's render-to-texture sample count, the
number of samples was returned. This made it look like the renderbuffer
attachment is MSRTT even if it was really multisampled. When mixed with
a multisampled texture (where this mistake wasn't made), the framebuffer
completeness code marked the framebuffer incomplete because it looked
like one attachment is MSRTT and the other is not.
Test credit zephyrxiao@tencent.com
Bug: angleproject:382393146
Change-Id: I9fe516d6a92033512646414f88a9848aa1e1edc9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6138979
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|