|
86b22745
|
2024-07-17T19:05:51
|
|
Vulkan: Fix mPipelineCache is not initialized after terminate
Very old regression:
https://chromium-review.googlesource.com/c/angle/angle/+/1683807
Problem happens only if call `eglInitialize()` again on terminated
display without also calling `eglGetDisplay()`.
Note: calling `eglGetDisplay()` on terminated display will call
`setupDisplayPlatform()`, which will destroy old `mImplementation`.
Test: angle_end2end_tests --gtest_filter=EGLDisplayTest.InitializeDrawSwapTerminateLoop*
Bug: angleproject:3318
Change-Id: I94bc7eba97be2d9b194c1a22a37662a2836f60b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5717753
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eda67d7e
|
2024-07-11T11:16:08
|
|
Avoid including fstream from angleutils.h
SaveFileHelper is mostly useful for / specific to FrameCapture,
so move it there.
The other couple of uses just write a string.
Bug: angleproject:42266508
Change-Id: Ia1dcd4531f9d5671f40611a1887dcfe7c5dbc1ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5696025
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
6052d0f4
|
2024-07-03T15:17:23
|
|
Vulkan: Fix EGL_EXT_buffer_age with single buffered surface
The specification:
4) What is the buffer age of a single buffered surface?
RESOLVED: 0. This falls out implicitly from the buffer age
calculations, which dictate that a buffer's age starts at 0,
and is only incremented by frame boundaries. Since frame
boundary functions do not affect single buffered surfaces,
their age will always be 0.
Test: angle_end2end_tests --gtest_filter=EGLBufferAgeTest.SingleBuffer*
Bug: angleproject:3529
Change-Id: Iab5da26d1bce56d928398cc250d900465fc5d261
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5675986
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
04632734
|
2024-06-20T17:23:27
|
|
Add EGL query option for minor version
* Added the following:
* EGL_CONTEXT_MINOR_VERSION
* Added since EGL 1.5
* EGL_CONTEXT_MAJOR_VERSION
* Another alias for EGL_CONTEXT_CLIENT_VERSION.
* Added unit tests to query major and minor versions.
Bug: angleproject:349179609
Change-Id: I99989c0f9f6659995caf9d7987551b97d477f22f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5648675
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
d193d51b
|
2024-06-17T22:46:08
|
|
Replace issue ids post migration to new issue tracker
This change replaces anglebug.com/NNNN links.
Bug: None
Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6aad8a89
|
2024-05-31T14:46:28
|
|
Vulkan: Remove combineAllShadersInPipelineLibrary
If we have VK_NULL_HANDLE as the descriptor set layout handle for both
pre-rasterization and fragment shader subset pipelines
we run into VVL - VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681
Need to work around this by having the renderer store a placeholder
descriptor set layout handle for an empty DescriptorSetLayoutDesc
that can be reused across all contexts
Bug: angleproject:8677
Tests: EGLMultiContextTest.NonSharedContextsReuseDescritorSetLayoutHandle*
Change-Id: I22e7f39c497d7f668afe7cb26690f6a9de49831b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5587990
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ccd9a43b
|
2024-05-22T11:15:39
|
|
Split EGL_ANGLE_device_d3d into D3D9 and D3D11 versions.
Add EGL_ANGLE_device_d3d9 and EGL_ANGLE_device_d3d11 which make it
possible to know what type of device can be queried ahead of time
without generating EGL errors.
Refactor the DeviceD3D class into Device9 and Device11. Remove the
getType method now that it's not needed for internal validation.
Keep EGL_ANGLE_device_d3d for backwards compatibility.
Bug: angleproject:342096132
Change-Id: Ib950abad58e46a5be269891ea7afd0cb8534cbe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5559163
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d0bdec30
|
2024-05-13T18:11:17
|
|
EGL: Handle null resultOut for sync tail call destruction
Syncs can be destroyed during eglDestroySync or as part of display
destruction. During display distruction there is no result so
swallow any errors.
Bug: angleproject:8434
Change-Id: I172d268c91fd0d6ba534eceff8914f9c719bdf39
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5533777
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0044f4d1
|
2024-05-13T00:29:30
|
|
Metal: fix IOSurface's render targets invalidated by max level change.
This CL fixes a bug in the following tricky situation:
- Client binds an IOSurface to a texture.
- Previously this would internally intialize the texture's max level
to the default value 1000.
- Client changes the texture's max level to 0.
- Client attachs the texture to FBO 1.
- Client binds FBO 1 and clear it.
- This triggers TextureMtl::getAttachmentRenderTarget() that
initializes the RenderTargetMtl of the texture.
- Client binds FBO 0 and sample the texture.
- Previously this could trigger TextureMtl::onBaseMaxLevelsChanged()
which would invalidate the texture's RenderTargetMtl.
- Client binds FBO 1.
- Client blits FBO 0 to FBO 1.
- This will set DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 in FBO 1.
- Client calls glFlush to restart render command encoder.
- Client issues a draw call.
- DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 would cause FrameBufferMtl to
re-initialize RenderPassDesc from invalid RenderTargetMtl.
- A new render encoder would be created from the invalid
RenderPassDesc.
- the draw call would be encoded to a render command encoder without
any valid color attachment.
The fix in this CL is that when we bind an IOSurface to a texture, the
texture's max level will be automatically set to 0. This will avoid its
RenderTargetMtl from being invalidated if users explicitly change the
max level to 0 in future.
Note: this is not a foolproof fix for every scenario concerning the
base/max level in IOSurface bound/or immutable textures. We will fix
them in future CLs.
Bug: b/335353385
Change-Id: I3a2da6991764f22393178f40c1d7bbe60503cba4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5531388
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
a70ef7fc
|
2024-04-25T14:19:50
|
|
Add EGL_ANGLE_no_error for disabling EGL validation.
Chrome makes many small EGL calls that can have proportionally
expensive validation.
Bug: angleproject:8434
Change-Id: I4f4d0e6eff64839f76a0f7bf48e5c94b8df9d809
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5491459
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6a6192c8
|
2024-05-08T08:42:24
|
|
Tests: Add native to EGLPrintEGLinfoTest
For comparisons, it is useful to run the EGLPrintEGLinfoTest
against native drivers.
Test: angle_end2end_tests --gtest_filter=EGLPrintEGLinfoTest.*/ES3_2_EGL
Bug: b/337554150
Change-Id: If7c94296fbbd9f3057449d54581f334a37e59216
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5525656
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
e41286e1
|
2024-04-10T11:05:09
|
|
Vulkan: Fix internal caching missing
Since the backend wait for post-link tasks was made possible [1], the
front-end may never get a chance to internally cache its binary. This
is because the decision to cache the binary was based on the existence
of post-link tasks, and the backend clearing that list made the
front-end confused.
In this change, a specific bool tracks whether binary is cached, and
that is checked at various times to make sure the binary cache is
eventually done.
[1]:https://chromium-review.googlesource.com/c/angle/angle/+/5427001
Bug: angleproject:8297
Change-Id: Iceefd0bca79d570d4910983be3660d6e725684a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5445484
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d9943e44
|
2024-04-09T23:53:48
|
|
Remove Program::syncState
The last bit of responsibility still left in Program::syncState was to
wait for post-link tasks for the sake of EGLBlobCacheTest tests. A new
extension, GL_ANGLE_program_binary_readiness_query is created so that
the wait can be done in the test itself.
This extension is ultimately useful for applications as well, so they
can avoid blocking the CPU by calling glGetProgramBinary prematurely.
Bug: angleproject:8297
Change-Id: Ied6b755cb9b060198f82c7948bfd03441435a578
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440302
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
e73c0c6d
|
2024-04-09T11:20:18
|
|
EGLProtectedContentTest: move sleep behind compile-time var
Multiple tests with multiple steps wasting ~20s in automated runs
Bug: b/333113001
Change-Id: I494f6e3ea373945ad79edbc23eb267dfef71ef87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440412
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Roman Lavrov <romanl@google.com>
|
|
13829f20
|
2024-03-26T23:03:12
|
|
Vulkan: Optimize depth/stencil resolve with glBlitFramebuffer
Like color resolve, depth/stencil resolve is now also possibly done by
modifying the render pass and attaching a depth/stencil resolve
attachment.
Bug: angleproject:7551
Change-Id: I045e3875e24006d2473a55b6c3856dd768fe8b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5398004
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4a5d47df
|
2024-04-04T16:41:46
|
|
Test that binary is not saved after being loaded
Bug: angleproject:8297
Change-Id: I2e7e2ffb8fff37aba828d25825fe7ab3262406ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426396
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e85bc345
|
2024-03-29T13:43:46
|
|
Account for disableProgramCaching
Blob cache tests rely on implicit caching of programs. Account for
disableProgramCaching frontend feature when saving and retrieving
from cache. Also skip EGLBlobCache tests if the feature is enabled.
Bug: angleproject:8297
Change-Id: Ib101eb5712deb7c04dd19c7092f93a6c6b42cd40
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5408103
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
318e5e02
|
2024-03-24T08:17:56
|
|
Vulkan: Update EGL_EXT_buffer_age implementation
1. Buffer age is always 1 when swap behavior is EGL_BUFFER_PRESERVED.
2. WindowSurfaceVk::getBufferAge no longer acquires a swapchain image.
See commit: b46cf6989f6fe8db5f0759001f633681a96fadde
3. It is valid to pass attributes of eglQuerySurface API to
eglQuerySurface64KHR API
4. Add deadlock fix to eglQuerySurface64KHR
Bug: angleproject:3529
Bug: angleproject:6851
Tests: EGLLockSurface3Test.QuerySurfaceAndQuerySurface64Parity*
Tests: EGLBufferAgeTest.QueryBufferAge*
Change-Id: Idf3c4fc08364f671fb02e99111be2beb7a1d9f3d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5389461
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ad013650
|
2024-03-22T03:42:44
|
|
Revert "Rename LinkSubTask -> PostLinkTask"
This reverts commit 00eb6edba074a22389b09990ab856adfd417dd64.
Reason for revert: Sub tasks are not actually post-link tasks for all
the other backends (other than Vulkan), but they are a real part of
the link job.
Original change's description:
> Rename LinkSubTask -> PostLinkTask
>
> This is a renaming change, no behavior changes are expected.
>
> Bug: angleproject:8297
> Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8297
Change-Id: Iaebf9d165d810344bfc524042206ca427d270034
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386432
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8899e18d
|
2024-03-21T14:30:50
|
|
Add skip conditions for a few tests
1. Skip EGLBlobCacheTest if `CacheCompiledShader` feature is disabled
2. Skip RGBAHBUploadDataColorspace test if allocating RGB8 AHB with
requested usage flag is not supported
Bug: angleproject:7036
Bug: b/298037344
Change-Id: I07c48df327a879c1d46873f47bb5bd305e07a758
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386030
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
00eb6edb
|
2024-03-20T06:49:38
|
|
Rename LinkSubTask -> PostLinkTask
This is a renaming change, no behavior changes are expected.
Bug: angleproject:8297
Change-Id: I734c7959f5ed6db2447853cc6f6256e3c8e86213
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5382224
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7220307b
|
2024-03-13T16:13:45
|
|
Conditionally support EGL_OPENGL_API
Advertize support for EGL_OPENGL_API only if
angle_enable_gl_desktop_frontend is enabled.
Bug: b/322142833
Tests: EGLQueryContextTest.DesktopGlApi*
Change-Id: I680ea985e45e793d92fc087d21f38fd5d38f0241
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5369641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
1c2d2417
|
2024-03-01T14:50:43
|
|
Bugfix in CreateWithEGLConfig1010102Support test
Create a context with config that supports RGBA1010102 format
Bug: angleproject:8330
Tests: EGLSurfaceTest.CreateWithEGLConfig1010102Support*
Change-Id: Ic8dfca01b253e6ae5ea1f0b99b6ac781288805c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5337608
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8346addb
|
2024-02-06T15:40:31
|
|
Contain X11 includes and free usage of common terms
This change undoes workarounds where some terms were avoided so there is
no clash with X11 (such as Success, Bool and None). In particular, this
helps us make sure we never include the X11 headers in such an
unconstrained manner as to clash with our code.
Bug: angleproject:8520
Change-Id: I53d9657c5a33164064d2c80a206b96fd52f607f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5273491
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
b380ed1f
|
2024-02-14T09:31:26
|
|
Vulkan: Add EGL_ANGLE_global_fence_sync
Chrome has an implicit assumption that due to context virtualization,
signaling a fence in one context results in synchronization with _all_
contexts that have previously made submissions.
This is not per EGL spec, but the functionality is easily implementable
in the Vulkan backend. In the Vulkan backend, each context is given its
own "timeline" of submissions (tracked by serials associated with
"indices"). The required functionality is implemented through a new EGL
fence sync object whose sole difference is that it synchronizes with all
the existing timelines rather than the one of the current context.
Bug: b/318721705
Change-Id: I6c45d065e592d0d4ed627ce9695196b1086d5021
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5297396
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
341906d5
|
2024-01-22T10:19:25
|
|
Vulkan: Never delay device and queue selection
Previously, when multiple queue families where eligible, ANGLE delayed
the decision on which queue family to use and delayed device creation
until a window surface was created.
This assumption was never correct. The application may start rendering
to pbuffers or using EGL_KHR_surfaceless_context long before it creates
a window surface. So a queue may need to be chosen regardless of its
surface present capabilities. Once done, ANGLE has no mechanism to
change that queue should a window surface require a different queue.
This change drops the pretense to support multiple queue families
properly and makes ANGLE always choose the first graphics queue family
it encounters. So far, only MoltenVk seems to expose multiple graphics
queue families, and choosing the first one ultimately correct for the
purposes of presenting to a MacOS surface.
Bug: angleproject:8478
Change-Id: I8efbfe0c8036be5f9cee01eb657f83f85a4864fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5225081
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f43db42c
|
2024-01-17T15:18:41
|
|
Enable LogGles32Capabilities test for vulkan backend
Allow for LogGles32Capabilities test to no longer
be skipped for the vulkan backend.
Test: angle_end2end_tests.exe --gtest_filter=*PrintGLESCapabilities*
Bug: angleproject:4093
Change-Id: I1711f016f63fa58ce3521cc8d2a2e75f189fb877
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5214007
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3a33cbb0
|
2024-01-15T15:40:54
|
|
Test for making context current before surface creation
Support for this use-case is currently broken.
Bug: angleproject:8478
Change-Id: I62fa6b6ac4481e36ce488a4667aa7edb7ff35e33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5200241
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
91c981c5
|
2024-01-11T22:37:48
|
|
Robust shader compile after shader binary is rejected
If ANGLE finds a shader binary in the cache, it populates the compiled
shader state. If the deserialization rejects the blob, the compiled
shader state was not reset. After the rejection, ANGLE proceeds to redo
the shader compilation, in which case it risks bugs as it tries to
accumulate info on top of the previous half-complete shader state.
Note that currently there are no errors if the shader state is not reset
before compilation, so this change is merely a precaution.
Bug: angleproject:8471
Change-Id: I2e08ecc2e5d940c88a32b5a05dca8afe8d8d897c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5189154
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
572323cc
|
2024-01-11T16:20:02
|
|
Fix program link after backend rejects program binary
If ANGLE believes the program binary is fine, it populates the program
executable. If the backend then rejects the program binary, the
executable was not reset. After the rejection, ANGLE proceeds to redo
the program link, in which case it fails in various ways (ASSERT
failures, incorrect data etc) as it tries to accumulate info on top of
the previous executable.
Bug: angleproject:8471
Change-Id: Ia4d626f5f9643c39a81062da3d5d58aa4c6be762
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5189152
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7d9c1d5f
|
2024-01-11T23:09:22
|
|
Add a test to check eglInitialize works in multithread
Bug: angleproject:8265
Change-Id: Ib87c5e66be1387c21642353cb3f3dc8841150ba9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5190063
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e3708149
|
2024-01-11T15:23:30
|
|
Add a test to ensure multiple eglInitialize calls work
Bug: angleproject:8265
Change-Id: I186942a7830a35c563df503aa2b06e407288eef3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5191165
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
706b5abe
|
2023-12-21T00:00:00
|
|
Avoid UB in 16-bit IOSurface tests
* Removed incorrect R16UI mappings from backends
* Fixed the enum used in RenderToR16IOSurface
* Added more 16-bit tests
Fixed: angleproject:7445
Change-Id: I7d5fb8b6a5fc7a57de8f988fdcc21e66606f875d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5148211
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
bd5dce9a
|
2023-11-21T15:39:04
|
|
Metal: Use MTLEvent instead of MTLSharedEvent when possible
Refactor mtl::Sync to be abstract and have multiple implementations
using either MTLEvent or MTLSharedEvent. Use MTLEvent in all cases
except for EGL Syncs when the user sets the sync type to
EGL_SYNC_METAL_SHARED_EVENT_ANGLE.
Determine completion of the sync object by watching for completion of
the command buffer where the event's signaling was enqueued. Avoid any
sleep loops by waiting on a condition_variable which is notified
when the completed queue serial is updated.
Forked from CLs by sky@ and kbr@
Bug: angleproject:8153
Change-Id: I4547444b596366496c811cb9954872b85ab14ad8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5133706
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
d7077e9f
|
2023-12-05T00:00:00
|
|
Update macOS end2end expectations
Bug: angleproject:2273
Bug: angleproject:2408
Bug: angleproject:3837
Bug: angleproject:5325
Bug: angleproject:5360
Bug: angleproject:5594
Bug: angleproject:6358
Bug: angleproject:6418
Bug: angleproject:6454
Bug: angleproject:6457
Bug: angleproject:6540
Bug: angleproject:6702
Bug: angleproject:6751
Bug: angleproject:7068
Bug: angleproject:7309
Bug: angleproject:7445
Change-Id: I7f4c012ed2de6af83188ed69170b19f8d2bb19de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5087774
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3680a5dc
|
2023-11-17T13:51:07
|
|
Vulkan: Let program warmup continue passed link
The warmup task does not actually affect the link results, so there is
no reason to wait for it when the application queries the link status.
This change allows the warm up task to continue in parallel until the
program is used at draw time. This allows the warm up to be more
efficient when the link itself is not parallelized.
For applications that create programs in the middle of every frame, it's
still likely best to disable warm up (as the following immediate draw
will already effectively do the warm up).
Note that currently the warm up code in the Vulkan backend is not
completely thread-safe, and so the program still blocks on that task
before the first draw can happen (or the program is modified in any
way).
Bug: angleproject:8417
Change-Id: I0877fef39a0585c3279e32699ce817d4643d7cd6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5037538
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3b28bca0
|
2023-10-11T09:49:54
|
|
Allow using RGBA IOSurfaces with GL_RGBA format for EAGL backend
As https://crrev.com/c/4877334 switched RGBA IOSurfaces to GL_RGBA
to work with ANGLE/Metal, some tests(e.g. web tests) on iOS failed
to create an IOSurface because ANGLE'S EGL backend still still
binds IOSurfaces as GL_BGRA_EXT even though we expect the IOSurface
to really be RGBA. To fix it, this CL allows using RGBA IOSurfaces
with GL_RGBA format by adding a GL_RGBA entry to kIOSurfaceFormats.
See also the comment[1] for better explanation.
[1] https://crrev.com/c/4918590/comments/1e44e971_50c3d780
Bug: chromium:1489586
Change-Id: Ifa215318401edb892fd5527c35c7d30871e82a83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4930309
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
961ed7a2
|
2023-10-02T15:07:44
|
|
RepeatedEglInitAndTerminate: 100 -> 50 repetitions
One of the variants
ES3_1_Vulkan_SwiftShader_EnableParallelCompileAndLink
is taking >60s which seems a bit too much time for this kind of test
Bug: b/303089709
Change-Id: I75584bf376cfac8e4ddd61b21ccd75b9ac6d2967
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4908348
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6b0ddce0
|
2023-09-22T13:13:38
|
|
Backends need to handle invalid render area during a clear
1. Frontend no longer noops empty scissors during clear
2. FramebufferVk is updated to handle invalid render area by restaging
deferred clears in clearImpl(...) if render area is invalid
Bug: angleproject:8348
Tests: EGLSurfaceTest*WindowThenScissoredClear*
Change-Id: Iec51914a083a59bad7f939798c932dffada56a6c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4867641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
7b1b8a01
|
2023-09-21T20:15:29
|
|
Metal: Allow using GL_RGB with either RGBA/BGRA IOSurface.
Previously we only allowed GL_RGB internal format to be used with BGRA
IOSurface and GL_RGBX8_ANGLE to be used with RGBA IOSurface
respectively.
However, there are currently many places in Chrome prefer GL_RGB to be
able to be used with both RGBA and BGRA IOSurface.
This CL allows such combinations. Instead of deducing angle::FormatID of
the IOSurface pbuffer based on the input GL internal format & type, we
will take into account the pixel format of the IOSurface as well.
For example, when we call eglCreatePbufferFromClientBuffer with GL_RGB
internal format attribute:
- if IOSurface's pixel format is 'RGBA' ->
deduced angle::FormatID is R8G8B8A8_UNORM.
- if IOSurface's pixel format is 'BGRA' ->
deduced angle::FormatID is B8G8R8A8_UNORM.
This CL also removes GL_RGBX8_ANGLE support from Metal backend. Because
there are many places in Chrome that use this format enum for both RGBA
& BGRA IOSurface when the extension is available. It's redundant to
support that since GL_RGB already covers most of the required cases.
Bug: angleproject:8350
Change-Id: I5a121a97e031a42d0779721d4348f373dfaee9a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4881742
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
|
|
bfae8072
|
2023-09-20T06:48:06
|
|
Metal: Support RGBA IOSurface pbuffer.
Currently only BGRA IOSurface is supported by ANGLE.
This CL adds RGBA IOSurface support to Metal backend.
- Added GL_RGBX8_ANGLE & GL_UNSIGNED_BYTE attributes combo to specify
that the IOSurface is RGBX. Only supported on Metal backend for now.
- Added GL_RGBA & GL_UNSIGNED_BYTE combo to specify that the IOSurface
is RGBA. Only supported on Metal backend for now.
Bug: angleproject:8350
Change-Id: I0e05762870c9c034bca78e8989aedf346406df57
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4874484
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
f1345d1c
|
2023-08-02T14:23:59
|
|
Call ReleaseThread() entry point from ThreadCleanupCallback
Change relevant only for the Android platform.
Fixes problems:
1. Current code calls `thread->setCurrent(nullptr)` in
`Display::threadCleanup()` method, while not executing other code
that will actually unmake Context from current. This will affect
following EGL calls from the application's side in its own thread
cleanup callback. For example, calls to `eglMakeCurrent()` (to unmake
from current) or `eglReleaseThread()` will be no-op. This may lead to
memory leak if context was previously marked for destruction.
2. The `Display::threadCleanup()` did not also clears
the `CurrentValidContext`. This may cause crashes or other UB if an
application will call some GLES API in its thread termination
callback (for example `glFinish()`), if ANGLE already destroyed the
context in its ThreadCleanupCallback (use after delete).
3. Context will remain current to a thread that terminated. Current
implementation of GLES drivers on Mali/Adreno GPUs automatically
unmade context from current, so the application may make this context
current to some other thread. ANGLE should mimic this behavior to
avoid possible bugs.
All of the above problems may be fixed by simply calling from the
ThreadCleanupCallback either:
- MakeCurrent(t, d, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)
- ReleaseThread(t)
This CL choose to call `ReleaseThread()` because this is the API that
the application may call in its own thread cleanup callback. And if
application's callback will be called later than ANGLE's callback, then
application's `eglReleaseThread()` call we be a no-op.
Even if the application does not have its own thread cleanup callback
(like most of the applications), there is no harm to call
`ReleaseThread()` anyway. The only difference with `MakeCurrent()` is
that it will also cleanup invalid objects and some other memory
depending on the backend.
This CL naturally replaces existing logic with Display termination when
there is no active threads thanks to the previous CL:
"Perform Display terminate(InternalCleanup) from makeCurrent()".
Bug: angleproject:6723
Bug: angleproject:8283
Test: angle_end2end_tests --gtest_filter=EGLContextSharingTest.ThreadCleanupCallback*
Test: angle_end2end_tests --gtest_filter=EGLContextSharingTest.UnmakeFromCurrentOnThreadExit*
Change-Id: I8c5b31f34f91c4bfdac165ac30c213ff5fef992e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742383
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
ffd6ec26
|
2023-09-07T15:39:19
|
|
Reland "Make egl surface uncurrent when being destroyed"
This relands commit 497440cdcb7d2ee59bca612dd07fc13cf09a6a57.
This is to workaround errors when app does below behaviors:
1) while there is a context still bound to the current
rendering thread and the surface, call eglDestroySurface()
2) create a new surface eglCreateWindowSurface()
3) call eglMakeCurrent() with the surface created in step 2)
4) does work on the new surface
The old surface won't be destroyed in step 1) because
it was still bound by the context of the current rendering
thread. When creating new surface on step 2), some hardware
will return error code EGL_BAD_ALLOC, because the old egl
surface is still associated with the native window.
To workaround, when destroying surface, if the surface
is still bound by the context of the current rendering
thread, release the context and surface by passing
EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
The workaround is controlled by a frontend feature
uncurrentEglSurfaceUponSurfaceDestroy. This feature
is only enabled on vulkan backends.
Bug: b/292285899
Change-Id: Id4c47f1b20e0f90d1013a68893fd70e917c030e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4867066
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
b4852ef9
|
2023-02-08T14:18:06
|
|
Vulkan: Drop support for Vulkan 1.0
Bug: angleproject:7959
Change-Id: Ib673679ea1a503af22b37092dbff1ee1fd34fba6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4233092
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
8a7ad933
|
2023-09-13T15:11:46
|
|
Revert "Make egl surface uncurrent when being destroyed"
This reverts commit 497440cdcb7d2ee59bca612dd07fc13cf09a6a57.
Reason for revert: this caused chromium webview tests failures: https://chromium-review.googlesource.com/c/chromium/src/+/4860891.
Original change's description:
> Make egl surface uncurrent when being destroyed
>
> This is to workaround errors when app does below behaviors:
>
> 1) while there is a context still bound to the current
> rendering thread and the surface, call eglDestroySurface()
> 2) create a new surface eglCreateWindowSurface()
> 3) call eglMakeCurrent() with the surface created in step 2)
> 4) does work on the new surface
>
> The old surface won't be destroyed in step 1) because
> it was still bound by the context of the current rendering
> thread. When creating new surface on step 2), some hardware
> will return error code EGL_BAD_ALLOC, because the old egl
> surface is still associated with the native window.
>
> To workaround, when destroying surface, if the surface
> is still bound by the context of the current rendering
> thread, release the context and surface by passing
> EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
>
> The workaround is controlled by a frontend feature
> uncurrentEglSurfaceUponSurfaceDestroy. This feature
> is only enabled on vulkan and gl backends.
>
> Bug: b/292285899
> Change-Id: I872d2e116ba6860f58d1176f011a5ef7c5a5af4e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851255
> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Bug: b/292285899
Change-Id: I760054d856294e6691e79e165fd73ce9e560621f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4862958
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
497440cd
|
2023-09-07T15:39:19
|
|
Make egl surface uncurrent when being destroyed
This is to workaround errors when app does below behaviors:
1) while there is a context still bound to the current
rendering thread and the surface, call eglDestroySurface()
2) create a new surface eglCreateWindowSurface()
3) call eglMakeCurrent() with the surface created in step 2)
4) does work on the new surface
The old surface won't be destroyed in step 1) because
it was still bound by the context of the current rendering
thread. When creating new surface on step 2), some hardware
will return error code EGL_BAD_ALLOC, because the old egl
surface is still associated with the native window.
To workaround, when destroying surface, if the surface
is still bound by the context of the current rendering
thread, release the context and surface by passing
EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
The workaround is controlled by a frontend feature
uncurrentEglSurfaceUponSurfaceDestroy. This feature
is only enabled on vulkan and gl backends.
Bug: b/292285899
Change-Id: I872d2e116ba6860f58d1176f011a5ef7c5a5af4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851255
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
ce263437
|
2023-09-11T12:25:28
|
|
Vulkan: Perform CPU wait in clientWait outside the global lock
Leverage UnlockedTailCall and move the CPU side wait
during a clientWait outside of the global mutex lock.
Bug: angleproject:8340
Tests: FenceSyncTest.BasicOperations*
Tests: EGLSyncTest.EglClientWaitSync*
Change-Id: I8c05e62e74cc64d38bf8797d28faaf49135e71fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851649
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
0d67d1bb
|
2023-08-29T11:19:35
|
|
Vulkan: Support EGL_EXT_gl_colorspace_bt2020
Add support for following 3 BT2020 colorspace extensions
1. EGL_EXT_gl_colorspace_bt2020_hlg
2. EGL_EXT_gl_colorspace_bt2020_linear
3. EGL_EXT_gl_colorspace_bt2020_pq
Bug: angleproject:8330
Tests: EGLSurfaceTest.CreateWithEGLConfig1010102Support*
Change-Id: I3a6ca0daa9ad4400da3834f43678b0db816ba6e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4824045
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
f395f34b
|
2023-08-03T13:58:43
|
|
features: frontload feature overrides
This allows us to have features that depend on the state of other
features more reliably.
For example, let's say you have two features:
ANGLE_FEATURE_CONDITION(&mFeatures, allowX, (benefitsFromX || isSpecificHardware) && !isBadHardware);
ANGLE_FEATURE_CONDITION(&mFeatures, supportsX, hardware.featureXSupported && mFeatures.allowX.enabled);
Before this change, if you overrode allowX, the override would be
applied too late for the supportsX test.
This also helps with disabling dependent features via overrides. For
example, if you disable "supportsRenderpass2", it will also disable
features depending on it, such as "supportsDepthStencilResolve" and
"supportsFragmentShadingRate".
By frontloading the feature overrides, we can have cross-dependencies
between "feature supported on this platform" and "allow this feature by
policy".
Bug: angleproject:8291
Change-Id: Id6da2c89428fa896d677fe8d5a41369277a21b31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749524
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a990ba34
|
2023-08-02T17:21:00
|
|
Fix write out of bounds on non robust contexts crashes
dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds_non_robust.reset_status.writes.*
tests are failing, because the test expectes EGL_SUCCESS
upon eglMakeCurrent(EGL_NO_CONTEXT), regardless of whether
the context was lost.
This CL:
1) Changes the validation function of eglMakeCurrent:
if the EGLContext passed to eglMakeCurrent
is EGL_NO_CONTEXT, do not return EGL_CONTEXT_LOST even if
the context is already lost.
2) Adds a lost context check in checkOneCommandBatch.
If the context is lost, do not check fence status and
assume all of the vulkan commands have finished execution,
so that we can properly destroying all
the resources before destroying the context.
3) Changes the GL error code from GL_INVALID_OPERATION
to GL_CONTEXT_LOST when there is a vulkan device lost.
Bug: b/286921997
Bug: b/289544394
Change-Id: I91e8a4105f0d7a3ec3b59bae58da80bc64ffa94a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4728466
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
c95ffadf
|
2023-07-24T13:00:32
|
|
Perform Display terminate(InternalCleanup) from makeCurrent()
Current state:
- Call to `eglTerminate()` is canceled if there are Contexts current.
- All not current Contexts are invalidated in `eglTerminate()` call.
- Full Display termination will happen only when last Context is
actually destroyed in `eglDestroyContext()` or last active thread
terminates (Android only).
Problem:
- Context is not marked invalid after it is unmade from current when
`eglTerminate()` was already called.
- If `eglDestroyContext()` was called while context was current, it
will be destroyed when unmade from current - in this case actual
Display termination will NOT happen.
After this change:
- Context immediately invalidated after it is unmade from current when
`eglTerminate()` was already called.
- Full Display termination will happen after the last Context is unmade
from current (all Contexts are invalid).
Bug: angleproject:6798
Test: angle_end2end_tests --gtest_filter=EGLDisplayTest.ContextLeakAfterTerminate*
Change-Id: Idcce94b041649db58d3d879858fba99109347baf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4708328
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
959ccb96
|
2023-08-02T13:40:16
|
|
Add EGL_BAD_ACCESS validation into ValidateMakeCurrent
Current code does not generate EGL_BAD_ACCESS in `eglMakeCurrent()`
according to the specification:
- If context is current to some other thread, or if either draw or read
are bound to contexts in another thread, an EGL_BAD_ACCESS error is
generated.
Additional changes:
- replace `Context::getRefCount()` with `isReferenced()` for
consistency with added `Surface::isReferenced()` method.
- remove duplicate `ValidateSurface` call for the
`drawSurface` in case if `readSurface` is the same.
- remove duplicate `ValidateCompatibleSurface()` call for the
`readSurface` in case if `drawSurface` is different.
- Fix EGLContextASANTest.DestroyContextInUse test.
- Fix EGLContextSharingTestNoSyncTextureUploads.NoSync test.
Bug: angleproject:8282
Change-Id: I2af0d7f50019c2445b42279bdd0e0197dd8ad20f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742382
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
113f847b
|
2023-06-26T12:07:52
|
|
centralize basic OS/platform detection functions
We had multiple different places that defined these, and with varying
naming schemes. Centralize them to be defined in platform_helpers.h.
Also renaming the IsApple(uint32_t) functions to IsAppleGPU(uint32_t) to
avoid ambiguous meaning: "IsApple" should mean "is Apple-vended OS"
while "IsAppleGPU" should mean "is Apple GPU vendor ID".
Bug: angleproject:8229
Change-Id: If4e3fc5ac1b5b8ad416663950a1b2ee912ccad99
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4647291
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Steven Noonan <steven@uplinklabs.net>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cfb5d2de
|
2023-04-06T16:06:35
|
|
Remove thread from mActiveThreads during eglTerminate
When eglTerminate is called remove the thread from the
active thread set if there is no context current.
This allows for proper cleanup of invalid EGL objects
during certain EGL terminate related end2end tests.
Also perform appropriate cleanup in EGLBlobCacheTest test.
Bug: angleproject:6723
Bug: angleproject:6798
Test: EGLMultiContextTest.ReuseUnterminatedDisplay*
Change-Id: I5a637938d463d6556f594d8bb0cf457efca92355
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4408364
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
1ad4ae4d
|
2023-06-05T18:45:19
|
|
Clean up EGLPreRotation Test
EGLPreRotationBlitFramebufferTest are passing on
Pixel 6. Skip the failed tests on Pixel4 devices only.
Bug: b/172867704
Bug: angleproject:5044
Change-Id: I23744cec20bf7e74272532a00420d1488398cda8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4590228
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
da41e7d9
|
2023-05-29T19:17:48
|
|
Vulkan: Account for queueSubmitOneOff() in SurfaceVk::mUse
There is a possibility to destroy EGLSurface without waiting for
`queueSubmitOneOff()` submission. One possible way to reproduce the
problem is to query `EGL_BUFFER_AGE_EXT` without any rendering in the
EGL_SINGLE_BUFFER mode.
This is a regression from:
Reland "Vulkan: SurfaceVk should only wait for GPU work that uses it"
https://chromium-review.googlesource.com/c/angle/angle/+/4406891
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WaitOneOffSubmission*
Bug: b/267806287
Change-Id: I9478fcc4fd64b38747cbd80dea51137da9ef5f21
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567549
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
903d9fdf
|
2023-01-19T15:37:45
|
|
Vulkan: Implement ExternalFence for use in SyncHelperNativeFence
`ExternalFence` allows concurrent usage in `CommandQueue` and
`SyncHelperNativeFence` classes eliminating need of additional
`vkQueueSubmit()` call.
Waiting in `CommandQueue` on `QueueSerial` or `ResourceUse` will ensure
corresponding state of the native FD (because `CommandQueue` will wait
on the same FD instead of some other fence).
After this change there will be only single `vkQueueSubmit()` call
from the `SyncHelperNativeFence::initializeWithFd()` method.
This CL and the follow-up is sufficient to fix the bugs below.
Bug: angleproject:8115
Bug: angleproject:8117
Test: angle_end2end_tests --gtest_filter=EGLSyncTest.AndroidNativeFence_ExternalFenceWaitVVLBug*
Change-Id: Ic562ecc71a95203454a1dc438589a13bcf3bff7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392879
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e350330d
|
2023-05-02T09:57:42
|
|
Fix EGLContextCompatibilityTest registration
Before this CL these tests are not registered at all.
Avoid test name duplicates by skipping configs.
Bug: angleproject:8088
Change-Id: I0d9b8260bd2ed76bda7fb46e6a131c4d2624c55f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4492920
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
d58fbf04
|
2023-04-05T12:32:09
|
|
Vulkan: Wait for surface ANI semaphore only if image is used
Right now there is a bug that surface's ANI semaphore is added to
context when WindowSurfaceVk::getAttachmentRenderTarget get called,
which gets called from FramebufferVk::syncState, which is before we end
the previous render pass, due to the endRenderpass usually is deferred
until next renderPass starts. This caused ANI semaphore gets added to
the previous render pass's submission, which does not use surface, and
thus a bubble in GPU execution pipeline where the user FBO rendering
gets unnecessarily blocked until ANI semaphore is signaled. This lowers
GPU utilization and thus GPU frequency gets dropped and frame time
increased. This CL stores ANI semaphore to ImageHelper object and when
barrier is generated, the ANI semaphore is moved to CommandBuffer. When
CommandBuffer gets flushed and submitted, it gets added to the
waitSemaphores vector and submitted to vulkan. Since all use of swap
chain image must go through barrier code first (you need at least change
layout), this ensures ANI semaphore gets waited in exact and robust way.
Only the submission that references the swap chain image will be waited.
With this CL, professional_baseball_spirits reduces frame time from 3.8
ms to 2.7 ms, achieving parity with native GLES on pixel 7 pro.
Bug: b/275624771
Change-Id: Ifa6cacf9e3bc147bfde54eb7def2fca48c50aca0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400011
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a1319e7f
|
2023-03-29T20:09:48
|
|
Tests: Fix EGLContextSharingTestNoFixture.SwapBuffersShared.
Sometimes `swapThread` may finish until `renderThread` wait for
`Step::TextureInitialized` step. In this situation `swapThread` will
change `currentStep` to `Abort` in the `ThreadSynchronization<>`
destructor, causing wait for `Step::TextureInitialized` to fail.
Bug: angleproject:6851
Change-Id: Ib08b6de11873e9959eaa810bcf8cb404c95c80d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4381626
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
f176027f
|
2023-03-31T13:37:03
|
|
CGL: implement EGL_ANGLE_wait_until_work_scheduled
It is as important to wait until scheduled in CGL, as it is in Metal.
CGL waits until scheduled when glFlush() is called.
Fixed: angleproject:8112
Change-Id: Id4a9e87804c6df1828b35cfd30c8427314820e52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4386400
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
50dec716
|
2023-03-17T11:39:15
|
|
Linux skips RegisterContextCompatibilityTests altogether.
It is already effectively disabled by skipping all configs but that
still makes egl* calls leading to sporadic process corruption due to
loading desktop drivers under xvfb.
Note that it currently fails to register tests on all platforms as
RegisterContextCompatibilityTests is called after TestSuite
instantiation which leads to tests not being registered at all.
+some cleanups
Bug: angleproject:8083
Change-Id: I075dc67b73d627548efb3f80186ec408481e2707
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4348334
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
ca2378b7
|
2023-03-08T18:44:58
|
|
Assert that waitForStep steps go in increasing order.
This should make race conditions like the one in
https://crrev.com/c/4321809 much more obvious from the logs and catch
some of the issues when writing or updates tests.
The test that has to be updated here is an example why we probably don't
want to just replace `== step` with `>= step`
Bug: angleproject:8071
Change-Id: I2c740931046bb5a9115474b7d67f76e9a21c30a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4322049
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
aa5b97de
|
2023-03-06T17:59:43
|
|
ANGLE_metal_shared_event_sync: Control signaling external events
It was assumed that the external MTLSharedEvent passed to eglCreateSync
should be signaled by the GL. This change adds
EGL_SYNC_METAL_SHARED_EVENT_SIGNALED_ANGLE, which when passed as the
value for EGL_SYNC_CONDITION during eglCreateSync, changes the behavior
to not insert a fence command into the command stream.
Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.AngleMetalSharedEventSync_WaitSync_ExternallySignaled
Bug: angleproject:8064
Change-Id: Ia1b8615b976f293d411b7d2be506b0ac87d64dee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307152
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
|
|
1365f5b3
|
2022-09-09T17:19:26
|
|
Vulkan: Fix Swapchain Acquire Image Semaphore wait stage flags.
There is a screen tearing on G996B with single
"glClear(GL_COLOR_BUFFER_BIT)" no scissor in the frame.
Fixed by defining "kSwapchainAcquireImageWaitStageFlags" and
adding "VK_PIPELINE_STAGE_TRANSFER_BIT" stage flag.
Also added "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT" stage, because first
use of the Swapchain Image after Acquire may be in the
"glBlitFramebuffer()" command.
This fix may slightly affect performance. In such case, a better fix
should be implemented (include only stages based on the actual first
use). However, this may be not trivial.
Additionally, "kSwapchainAcquireImageWaitStageFlags" is used as a source
stage mask in the "ImageLayout::Present" pipeline barrier. This is
needed in order to build a dependency chain from the Acquire Image
Semaphore to the layout transition's first synchronization scope, so
that layout transition happens after acquire semaphore is signaled.
Reference:
https://github.com/KhronosGroup/Vulkan-Docs/wiki/Synchronization-Examples#combined-graphicspresent-queue
https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Rendering_and_presentation
Alternative fix of both issues is to define:
kSwapchainAcquireImageWaitStageFlags = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
This might potentially delay command buffer execution relative to the
Swapchain Acquire Image Semaphore signal operations, but will relax
the pipeline barrier.
Bug: angleproject:8030
Test: angle_end2end_tests --gtest_also_run_disabled_tests --gtest_filter=EGLSurfaceTest.DISABLED_RandomClearTearing*
Change-Id: I29f58862c4b369524b2555dd944e2fb67eebe956
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4271377
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
8cac53cd
|
2023-01-17T19:22:57
|
|
Vulkan: Fix incorrect "SharedPresent" barrier.
Previous fix swapped top/bottom barriers:
629da7fc9cd4886dd87f07a069c259551e892936
Fix dEQP-EGL.functional.mutable_render_buffer#basic
Above fix is only partial, because it only includes execution dependency
without memory barriers (top/bottom stages has no memory access).
Fixed by forcing all possible stages for "SharedPresent" images.
Better solution requires creating specific versions
of "ImageLayout::SharedPresent".
Added new test that skips "glFlush()" before "glReadPixels()".
Performing flush executes present and may "fix" the barrier problem.
New test fails on "Samsung Galaxy S22+ S906B"
Bug: b/264420030
Test: angle_end2end_tests --gtest_filter="EGLSingleBufferTest.SharedPresentBarrier*"
Change-Id: Icbb50900d99e42d2e9482cd6109981bbc460348a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4262068
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ceb49b1c
|
2023-01-17T19:21:43
|
|
Vulkan: Fix crashes when Surface is not current.
It is possible to destroy Surface while some resources are still
in use (by CPU/GPU):
1. Make Surface current.
2. Draw something.
3. Make other Surface current (same Context).
4. (optional - if test Surface is Window Surface) Draw something.
5. Delete Surface.
6. UnMake the Context from current.
7. Different crashes possible depending on Surface type and what
is done in step 2.
Bug: angleproject:8017
Test: angle_end2end_tests --gtest_filter="EGLSurfaceTest.DestroyNotCurrent*Surface*"
Change-Id: I3102aa237075b301b3222b420415753c83ba192a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227073
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
629da7fc
|
2023-01-26T12:25:04
|
|
Fix dEQP-EGL.functional.mutable_render_buffer#basic
These are vulkan commands submitted between
glClear() and glReadPixels() when the EGL_RENDER_BUFFER
is EGL_SINGLE_BUFFER (ImageLayour is SharedPresent):
```
vkCmdClearColorImage()
vkCmdPipelineBarrier: (
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,//srcStageMask
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,//dstStageMask
VK_ACCESS_MEMORY_WRITE_BIT,//srcAccessMask
VK_ACCESS_MEMORY_WRITE_BIT|VK_ACCESS_MEMORY_READ_BIT//dstAccessMask
)
vkCmdCopyImageToBuffer()
```
This means that operations at the bottom of pipeline
in vkCmdCopyImageToBuffer() need to wait for operations
at the top of pipeline in vmCmdClearColorImage(), which
translates to vkCmdCopyImageToBuffer() does not have
to wait for vkCmdClearColorImage() to finish.
Even the dstAccessMask ensures that
vkCmdCopyImageToBuffer() will invalidate cache before
copying image, it is possible that it will retrieve the
old Framebuffer color attachment data as the
vkCmdClearColorImage() has not finished.
This CL fixes the bug by making the srcStageMask to
be VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT and the
dstStageMask to be VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
when the ImageLayout is SharedPresent.
This ensures that vkCmdCopyImageToBuffer() waits for
vkCmdClearColorImage() to finish.
This CL also addresses similar issue in some other
rx::vk::ImageLayout items in kImageMemoryBarrierData.
Bug: b/264420030
Change-Id: If47ab071afaf96e396357cb0f50131339fa58509
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4198476
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9e33b83a
|
2023-02-14T11:47:17
|
|
Vulkan: Fix bug in EGLMultiContextTest.ReuseUnterminatedDisplay
This test is not destroying the context properly, which leads to
eglTerminate(dpy) not actually destroying the RendererVk. When the next
test app runs, it calls RendererVk::initialize again and calls
volkLoadInstance(mInstance). Because the previous RendererVk object is
still there, and the two CommandQueue shares the same volk instance,
writing to volk function table causes tsan to complain that other thread
is still using the old function pointer that now gets overwritten.
The test really should clean up properly here in order to have other
test to continue to run.
Bug: angleproject:7602
Change-Id: I93cd2439194aba9f28ce478aaf79ae8b81c6426b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4249984
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
48b6ebad
|
2023-02-13T16:37:15
|
|
Test: Move code of EGLSurfaceTest::runWaitSemaphoreTest().
To improve readability, code moved from class body closer to the tests.
Bug: angleproject:7995
Change-Id: I2c0aef593b28cfffe2b04de308274d0007d863c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4245177
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cad19f01
|
2022-02-01T17:36:03
|
|
Vulkan: Wait forever when waiting on fences
If a timeout occurs while waiting for the VK queue to be idle during
context destruction, there is no way to safely delete the resources
without potentially crashing as the driver is still reading them.
Instead, wait forever and let Chrome's watchdog tear the process down.
Bug: chromium:1223346
Change-Id: Ifa91465270f54b62a5ead88e8f26b3315072c380
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3430243
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0d0e8c37
|
2023-02-08T17:33:39
|
|
Vulkan: Fix mutable render buffer with protected content.
Original implementation used Unprotected submission unconditionally.
In case of protected content/commands this may cause undefined
behavior.
New test works OK despite the bug.
VVL also did not show error, but should report:
VUID-VkSubmitInfo-pNext-04120
If the pNext chain of this structure does not include a
VkProtectedSubmitInfo structure with protectedSubmit set to VK_TRUE,
then each element of the pCommandBuffers array must be an
unprotected command buffer
Also from spec:
protectedSubmit specifies whether the batch is protected.
If protectedSubmit is VK_TRUE, the batch is protected.
If protectedSubmit is VK_FALSE, the batch is unprotected.
If the VkSubmitInfo::pNext chain does not include this structure,
the batch is unprotected.
It is a bug in VVL. It ignores check entirely if VkSubmitInfo::pNext
chain does not include VkProtectedSubmitInfo structure.
Bug: angleproject:3966
Test: angle_end2end_test --gtest_filter="EGLProtectedContentTest.ProtectedContextWithProtectedMutableRenderBufferWindowSurface*"
Change-Id: I0e0762e5fdfe19ce6c2184a36d057a95c2c79f00
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4232115
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b6cc5754
|
2023-01-17T16:17:22
|
|
Vulkan: Fixed Wait Semaphores problems.
This feature fixes 2 problems.
1. Swapchain Image Acquire Semaphore added to wait list AFTER
rendering commands:
- Make Window Surface current.
- Clear Window Surface (Image is Acquired).
- Perform rendering to the Window Surface.
- Change to other Surface (for example: PbufferSurface) using
the same Context.
- Unmake Context from current to ensure commands are submitted.
- Rendering commands to the Window Surface will be submitted
without Acquire Semaphore.
2. Context from other thread may submit command of another Context
without proper Wait Semaphores:
- Make Window Surface current in the first context.
- Clear Window Surface (Image is Acquired).
- Perform rendering to the Window Surface.
- Call "glBeginQuery()/glEndQuery()" (or other commands) - this will
flush command to the Primary Command Buffer without submitting.
- In other Thread and Context make some Surface current
(for example: PbufferSurface).
- Clear that surface with scissor and unmake Context from current
to ensure commands are submitted.
- Rendering commands to the Window Surface from the first Context
will be submitted without Acquire Semaphore.
- Problem will happen even if add Wait Semaphore BEFORE writing
rendering commands.
Bug: angleproject:7995
Test: angle_end2end_tests --gtest_filter="EGLSurfaceTest.WaitSemaphoreAddedAfterCommands*"
Test: angle_end2end_tests --gtest_filter="EGLSurfaceTest.CommandsSubmittedWithoutWaitSemaphore*"
Change-Id: I28174ff98fdd09b4117962fc0810cfeeb2a4d1f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194182
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
0ee67145
|
2023-02-06T18:08:26
|
|
Vulkan: Fix bug with ContextVk::mWaitSemaphores processing.
Regression:
2e5ca217ca134a7ae4e241e2f7e4cfa637305af7
Vulkan: Let each current context has its own QueueSerial.
Problem details:
- Call to finishImpl()/flushImpl() will skip mWaitSemaphores processing
when there are no pending commands.
- finishImpl() will call clearAllGarbage() that will clear
all mCurrentGarbage.
- However, some mWaitSemaphores may be in the mCurrentGarbage
(Semaphore created in SyncHelperNativeFence::serverWait()).
Bug: angleproject:8007
Test: angle_end2end_tests --gtest_filter="EGLSyncTest.AndroidNativeFence_VkSemaphoreDestroyBug*"
Change-Id: Ia51663eae739b505ca00437cea4ae71526dedbfb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4225392
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
3e65d0b6
|
2023-02-01T15:17:43
|
|
Test: Fixed EGLContext leak in the EGLSurfaceTest tests.
"EGLSurfaceTest.RobustResourceInitAndEmulatedAlpha/*" causes
"EGLContext" leak. This test calls "initializeSingleContext()" on
"mContext" that was already implicitly initialized in the
"initializeSurface*()".
Added assertions in order to catch EGLContext/EGLSurface leaking.
Fix details:
- removed implicit "initializeContext()" call, to remove confusing
when it is necessary make explicit call or not.
- rename "initializeContext()" into "initializeAllContexts()" to better
reflect what it does.
- "initializeContext()" now creates contexts unconditionally, like once
before. Lazy initialization is not required, because there is no
longer implicit call in the "initializeSurfaceWithAttribs()".
- Created "initializeMainContext()" instead of calling
"initializeSingleContext()" directly.
Bug: angleproject:7996
Change-Id: I05954f7a044c12798ac857b877ecede6989526eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4208870
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6a5e61cd
|
2023-01-11T16:49:52
|
|
Vulkan: Make ThreadSafeCommandQueue's wait without lock
This CL makes all wait functions in ThreadSafeCommandQueue class to wait
without holding the lock, so that other contexts can still submitting
commands or make calls into CommandQueue. To make this work,
Shared<Fence> has been refactored into SharedFence class which is RAII
and manages refcounted VkFence object. It's copy constructor simply adds
a reference to the underline fence object, so that the local copy of a
SharedFence object guarantees underline vkfence will remain valid. RAII
makes sure that local copy of SharedFence will not leak refcount. The
ThreadSafeCommandQueue wait functions makes a local copy of SharedFence
so that it can unlock and wait and then relock.
This CL also adds a new test for this:
EGLMultiContextTest.ThreadBCanSubmitWhileThreadAWaiting
Bug: b/261106868
Change-Id: I96ecfa1d9f7a3dc646ff2287d789313a9f8fb75d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4159871
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
6338909e
|
2023-01-19T13:18:41
|
|
EGL: Remove protected content test case
Remove Protected content test:
Protected context with unprotected texture since it is a
spec violation to render to an unprotected texture from a
protected context
Bug: angleproject:7967
Change-Id: I40ce205a962614fe726417b0ed921b3a5133c079
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4182560
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Jeff Vigil <j.vigil@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
be9e8e7b
|
2022-12-14T14:13:39
|
|
Add EGL_ANGLE_wait_until_work_scheduled extension
We're changing eglReleaseTexImage so it calls
flushCommandBuffer(mtl::NoWait) instead of
flushCommandBuffer(mtl::WaitUntilScheduled)
and then adding an extension to allow us to
WaitUntilScheduled.
This is because Chrome calls eglReleaseTexImage for
every canvas and having it WaitUntilScheduled per call
is very slow. So instead we'll call eglWaitUntilWorkScheduledANGLE
once which will effectively wait just once.
Bug: angleproject:7890
Change-Id: I87bc9f9a1a7f4a0f99d93736cc3083799e76afeb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4109311
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
2de99d47
|
2022-11-17T12:19:35
|
|
Reset instance/device extensions in RendererVk::onDestroy()
RendererVk::initialize() adds a nullptr to the end of
RendererVk::mEnabledInstanceExtensions (presumably to ensure the
VK implementation crashes if it tries to read past?). If
RendererVk::onDestroy() fails to clear this nullptr, it can lead
to a crash when sorting the extension lists when the renderer
is re-initialized the second time.
Bug: b/249457381
Test: cvd start --gpu_mode=guest_swiftshader
Test: EGLDisplayTest.InitalizeTerminateInitalize/ES3_Vulkan_NoFixture
Change-Id: Ib24af11024cad6b28284f3a75cc862c48abec258
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4035646
Commit-Queue: Jason Macnak <natsu@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
68b47e58
|
2022-11-16T10:46:59
|
|
Vulkan: Initial support for VK_EXT_graphics_pipeline_library
When available, this change uses VK_EXT_graphics_pipeline_library to
create pipelines. Currently, it is only used when
graphicsPipelineLibraryFastLinking is available. This restricts the use
of this extension to devices where monolithic pipelines are not any more
performant than linked libraries.
A future change adds support for other implementations by providing
async pipeline creation.
Bug: angleproject:7369
Change-Id: I1e3b7ac4aa56e75c7d6f4d0d5ea91cb0b862e581
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031489
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Steven Noonan <steven@valvesoftware.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
386ef2ee
|
2022-11-17T13:16:27
|
|
Fix EGL validation of core robustness attribute.
Implement EGL validation of EGL_CONTEXT_OPENGL_ROBUST_ACCESS.
Previously, only the _EXT flavour was validated.
Note that EGLRobustnessTest was changed to only exercise the
core version.
Bug: chromium:1385480
Change-Id: I51f93d6cd344d073cd9656c9fff9636ca4eac99d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4030882
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
|
|
4be8294c
|
2022-10-06T09:50:28
|
|
Tests: Enable EGL_ANGLE_iosurface_client_buffer tests on iOS
This enables EGL_ANGLE_iosurface_client_buffer extension tests on iOS
platform. A few OpenGLES related tests had to be suppressed though. I'm
getting the following:
[==========] 96 tests from 1 test suite ran. (960 ms total)
[ PASSED ] 66 tests.
[ SKIPPED ] 30 tests, listed below:
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRX8888IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRX8888IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToRG88IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToRG88IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToR8IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToR8IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES2_Metal
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToR16IOSurface/ES3_Metal
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRA1010102IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToBGRA1010102IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRA1010102IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRA1010102IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToRGBA16FIOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToRGBA16FIOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToRGBA16FIOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToRGBA16FIOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToYUV420IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToYUV420IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToYUV420IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToYUV420IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToP010IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.RenderToP010IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToP010IOSurface/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromToP010IOSurface/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.MakeCurrent/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.MakeCurrent/ES3_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRX8888IOSurfaceWithTexBaseMaxLevelSetToZero/ES2_OpenGL
[ SKIPPED ] IOSurfaceClientBufferTest.ReadFromBGRX8888IOSurfaceWithTexBaseMaxLevelSetToZero/ES2_Metal
Test: iPhone 13 and ./iossim -d 'iPhone 13' -c \
'--gtest_filter=\*IOSurfaceClientBufferTest\*' angle_end2end_tests.app
Bug: angleproject:5491
Change-Id: Id7c489ae41b11442a2dd06174b2c279894e83401
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3957539
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
0b7f3f5e
|
2022-10-12T17:47:06
|
|
More robustness tests
Similar test to what was introduced in
https://chromium-review.googlesource.com/c/angle/angle/+/3943534, but
for vertex and compute shaders.
Bug: angleproject:7629
Change-Id: I743233136125358edb6a15760b1ece63c36d3f85
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949915
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
135022e4
|
2022-10-11T00:03:11
|
|
Vulkan: Create robust pipelines based on context state
Previously, pipelines were made robust based on whether any context in
the share group has so far been made robust. This means that pipelines
created on non-robust contexts would still be compiled as robust.
Inefficiency aside, this was buggy because robustness was not part of
the pipeline cache key, so if a pipeline was created as non-robust
first, then recreated in a robust context, it would reuse the non-robust
variant.
With VK_EXT_pipeline_protected_access, a similar situation arises for
context protected-ness. However, it is incorrect in that case to create
pipelines as protected unnecessarily.
This change makes pipeline robustness a part of the pipeline cache key,
in preparation for protectedness to be added similarly. Compute
programs may now generate multiple pipelines as a result too.
Bug: angleproject:7629
Change-Id: Ie95f10eff878f8c8b221c1018da44385c7aad15e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3943534
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
583fd03e
|
2022-09-29T16:28:05
|
|
Translator: Fix ClampIndirectIndices vs. unsized arrays
A deepCopy() was missing from this code path, which led to an AST
validation error. However, clamping indices for unsized arrays is not
strictly correct. For example, an out of bounds write with robustness
is expected to be dropped, not overwrite the last element.
Since robustness already covers storage blocks, this clamping is no
longer done.
Bug: angleproject:7712
Change-Id: I96dd18ef47cd453f19391bdccbd4372c24854ade
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3924863
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
163e56e4
|
2022-09-20T00:40:55
|
|
Allow feature overrides to end in * (wildcard)
Makes it easier to apply overrides to features with long names. Also
works around Android's limit of 92 characters for debug properties.
Bug: b/238024366
Change-Id: I8f417287f92b2439de1a7b7d6abbaf9e61b405e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3906222
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
d2a58f00
|
2022-09-08T14:19:21
|
|
EGL: Implement eglCopyMetalSharedEventANGLE
Add eglCopyMetalSharedEventANGLE function to the
ANGLE_metal_shared_event_sync extension. This brings the extension on
par with the EGL_ANDROID_native_fence_sync extension.
eglCopyMetalSharedEventANGLE allows for copying the Metal event object
from EGLSync objects implemented by the ANGLE Metal renderer. This
function follows Objective-C convention for "copy" methods and increases
the retain count of the Metal event object. The EGL API user is thus
responsible for ensuring to release the returned object to avoid memory
leaks.
Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.*
Bug: angleproject:7561
Change-Id: I8c35b559014b85cb8c6a0e76ac2ab7891eed5da0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3881423
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
a89f678f
|
2022-06-16T13:59:16
|
|
EGL: Implement ANGLE_metal_shared_event_sync on metal
Implement creation of fence sync object taking an external
MTLSharedEvent and optional value to use when signaling completion of
prior commands.
Extended end2end test suite with metal shared event test cases.
Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.*
Bug: angleproject:7561
Change-Id: I0e72b5417275a20a24e535670ceb995ecc87abcb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3865060
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
fc51d98f
|
2022-08-11T03:29:16
|
|
Add Direct Composition offset to gl_FragCoord
DComp usually gives us an offset at (0, 0), but this is not always
the case. It is valid for DComp to give us an offset into a texture
atlas, for example with some video overlays. If we do have an offset,
gl_FragCoord must also be offset to point to the correct pixel in the
surface.
Bug: chromium:1269749
Change-Id: I3ca39860d176bcf9f1d520d781cfed2d1d1ad1dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827081
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
9c17232a
|
2022-09-02T16:05:48
|
|
Vulkan: Make robustness affect all of share group
Since contexts in a share group can share their program, if any context
in the share group is robust, programs in all contexts in the share
group need to be created with robustness in mind.
This fixes the situation when the programs are created after a robust
context has been created. However, if programs are created first, then
a robust context is added to a share group, there remains a bug where
the old programs aren't recreated to have robust behavior.
Bug: angleproject:7629
Change-Id: I4922091962a32ca75a6107343df0cd87e5e9592d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3872506
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ba4b6913
|
2022-08-23T09:34:27
|
|
Fix data race in BlobCache
* Re-enable shader cache feature
* Improve BlobCache thread-safety test
* Improve EGLProgramCacheControlTest to not check the size
of the BlobCache, since the shader cache interferes with this.
* Include the arguments to ConstructCompiler() and Compile()
in the key hash for the shader cache.
Bug: angleproject:7036
Change-Id: Ied4e11f9160552f2f9358d99b5656315239ba856
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3851161
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Eddie Hatfield <eddiehatfield@google.com>
|
|
aa2a558e
|
2022-08-23T09:47:02
|
|
Vulkan: Add support for setting timestamp surface attribute
On Android the EGL wrapper handles most of the functionality required
by EGL_ANDROID_get_frame_timestamps. However if for some reason the
swapchain is recreated, the timestamp state would be lost resulting in
stuttering.
Introduce EGL_ANGLE_timestamp_surface_attribute extension that adds
support for toggling the EGL_TIMESTAMPS_ANDROID attribute of a surface.
Cache this state and recreate the swapchain accordingly.
Bug: angleproject:7489
Test: EGLSurfaceTest.TimestampSurfaceAttribute*
Test: dEQP-EGL.functional.get_frame_timestamps*
Change-Id: I3660f7137c006d904164d243a682a4ff520eabd8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3753396
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
f10625d3
|
2022-08-11T14:32:45
|
|
Enable Robustness Extension on ARM
These dEQP tests failed due to Robustness was disabled:
dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#readn_pixels
dEQP-GLES31.functional.debug.negative_coverage.log.buffer#readn_pixels
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#readn_pixels
dEQP-GLES31.functional.debug.error_filters#case_12
dEQP-GLES31.functional.debug.error_groups#case_12
Re-enable the Robustness Extension on ARM to check if
mali driver supports GL_EXT_robustness extension now. If it does
we can enable the robustness feature in ANGLE so that the above
dEQP tests can pass.
Bug: angleproject:7351
Bug: angleproject:4823
Bug: angleproject:2330
Change-Id: Ifce20e410607f2d4b6b3b55235081fef690c983c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3828441
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
13456bfc
|
2022-08-23T13:33:13
|
|
Propagate device type in another eglGetPlatformDisplayEXT call.
Same as https://crrev.com/c/3759712 for another test.
Also use !platformSupportsMultithreading() to skip tests.
However, need to skip separately from capture/replay where
multi-threaded tests seem to run into issues.
Bug: angleproject:7494
Bug: angleproject:7423
Change-Id: Ief87b4163aedd26b440987540c06ceb7ae8a575b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3851166
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
bd1484f3
|
2022-08-22T13:53:35
|
|
Temporarily disable shader caching feature
This will be re-enabled when the BlobCache test flakes are resolved.
Bug: angleproject:7036
Change-Id: I38829ffcd5869679bf65017475e8a10d165f369b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3846403
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Eddie Hatfield <eddiehatfield@google.com>
Reviewed-by: Lingfeng Yang <lfy@google.com>
|
|
955adb77
|
2022-08-12T10:14:48
|
|
Cache compiled shader
By storing the compiled shader in the blob cache, the time to
recompile the same shader is reduced.
Based on work by <hckim.kim@samsung.com>
Bug: angleproject:7036
Change-Id: I884ae40e715c49a9ccd12903012e8327811e3557
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3808235
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
7a87e90d
|
2022-07-16T11:39:08
|
|
An inactive but alive thread shouldn't prevent cleanup
1. Acquire EGL global lock before thread cleanup and remove
all clean up related mutexes
2. Mark contexts that are not current as invalid during terminate
3. During thread exit, if there are other active threads, terminate
with TerminateReason::InternalCleanup. This gives an opportunity
for well behaved threads to cleanup up invalid objects.
Bug: angleproject:6723
Bug: angleproject:6798
Test: EGLContextSharingTestNoFixture.InactiveThreadDoesntPreventCleanup*
Change-Id: I418e5f8b486d3d309bd58c4cfb04b7dc1149ffc1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3768667
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
4cab7f38
|
2022-08-10T20:33:07
|
|
Fix EGL_ANGLE_program_cache_control for eglCreateContext
EGL_CONTEXT_PROGRAM_BINARY_CACHE_ENABLED_ANGLE is an attribute for
creating EGL context, but ANGLE reads it from mAttributeMap which is
not the attribs passed to eglCreateContext().
Bug: chromium:1336126
Change-Id: Id3ea1955f927a7e051285c79b590dcf1f11f22ed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3823621
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Peng Huang <penghuang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
553b1334
|
2022-07-28T23:33:28
|
|
Vulkan: fix default msaa framebuffer resolve issue.
Bug: b/239217726
Change-Id: I826aad7495814e0a178a586c4cfd5943278cddac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3793304
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
16e7226d
|
2022-07-13T17:56:36
|
|
Propagate device type in ReuseUnterminatedDisplay.
Fixes the issue with SwiftShader from https://crrev.com/c/3717277
Bug: angleproject:7494
Change-Id: Icb83087caf789518b0c3f30b10b543b299a500bc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3759712
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|