|
9962f078
|
2023-07-11T15:39:50
|
|
Pass only context-private state to private entry points
This change ensures that the implementation for these entry points
cannot access anything other than context-private state.
Bug: angleproject:8224
Change-Id: I988672b138d861db25e91d71ab8c34baa4e8ebee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678783
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
491c2a54
|
2023-07-11T15:20:09
|
|
Split the context-private part of the state cache
In preparation for passing it directly to entry point implementations,
ensuring no access to the share-group-accessible part.
Bug: angleproject:8224
Change-Id: I705e6a8fb5204bab71caffff4dcb56d16c3d6e10
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678782
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
40111c68
|
2023-07-11T14:21:21
|
|
Rename context-local to context-private state
Bug: angleproject:8224
Change-Id: I1bb39475043f8fb14d683d11a038b4850692a8c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678781
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4cab5e94
|
2023-07-12T10:04:10
|
|
Vulkan: Enable timeline semaphores if supported by device
This is needed for a similar change in Chromium to function with
`--enable-features=VulkanFromANGLE`.
Bug: angleproject:8253
Change-Id: I422964ea010c650439dd4797ee8ba7b533f26a87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4675807
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
94ceedb7
|
2023-07-10T00:00:00
|
|
Add GL_EXT_texture_compression_astc_decode_mode stubs
Bug: angleproject:8254
Change-Id: I2a839139b5738710e32842b04db35eab8fb04687
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4679683
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ebaadc6c
|
2023-06-24T08:41:15
|
|
Terminate the display if initialization fails.
If DisplayImpl::initialize fails, call terminate to ensure no resources
are leaked.
This is a speculative fix for dual GPU macs not falling back to the
low power GPU. DisplayMtl leaks the metal device if it fails to
initialize due to unsupported GPU families or vendors.
Bug: chromium:1322521
Change-Id: Ie227216bc92ef2834ec50190fbb78bec45e9c053
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4641107
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
6473008c
|
2018-08-22T13:12:07
|
|
winrt: Fix initialization of zero-sized window
The clientRect might be empty when creating a window of zero size. The
side effect of a division by zero is that matrix transformation fails
and hence the swapchain gets into an invalid state.
See:
https://code.qt.io/cgit/qt/qtbase.git/tree/src/angle/patches/0005-ANGLE-Fix-initialization-of-zero-sized-window.patch?h=5.15
Signed-off-by: L. E. Segovia <amy@amyspark.me>
Bug: None
Change-Id: Idbaed72deadb7b87052ac27e194a40d1810e6f7a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661674
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9b63700b
|
2023-07-11T10:25:40
|
|
Translator: Reorganize files
This change makes the translator files more organized by:
- Grouping files that are specific to a certain output under their own
directory,
- Moving transformations under tree_ops
- Removing Direct from metal translation now that that SPIR-V Cross path
is removed
Bug: angleproject:6394
Change-Id: Iaf5bb8d5604b84748dece029821b1f77b2813967
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678780
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4e6124da
|
2023-06-23T14:46:28
|
|
GL: Ensure all instanced attributes have a buffer with data
Apple OpenGL drivers sometimes crash when given an instanced draw with
a buffer that has never been given data.
It's not efficient to check if the attribute is both zero-sized and
instanced so just ensure that every time a zero-sized buffer is bound
to an attribute, it gets initialized with some data.
Bug: chromium:1456243
Change-Id: I66b7c7017843153db2df3bc50010cba765d03c5f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4642048
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5922b83b
|
2018-08-22T13:01:10
|
|
D3D11: Fix Windows Store D3D Trim and Level 9 requirements
Due to additional validation not covered in previous patches, the
Windows Store certification compatibility had regressed. These
changes ensure that the required D3D behaviors are met.
See:
https://code.qt.io/cgit/qt/qtbase.git/tree/src/angle/patches/0003-ANGLE-Fix-Windows-Store-D3D-Trim-and-Level-9-require.patch?h=5.15
Co-authored-by: L. E. Segovia <amy@amyspark.me>
Signed-off-by: L. E. Segovia <amy@amyspark.me>
Bug: None
Change-Id: If8bc2f8cd4b2f84e1d92a1627951da2537212125
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661673
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f5ad056b
|
2023-07-10T22:13:34
|
|
GL: Fix ScalarizeVecAndMatConstructorArgs and move to gl/
This transformation was buggy and was disabled. Originally, it was
intended to be used everywhere. It is now needed for a GL driver
workaround.
This change reimplements this transformation and uses it as a GL
workaround.
Bug: chromium:1420130
Change-Id: I42d63fa5844bcf683ac41e61925aa637e033ca2e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4676634
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7bcd88cc
|
2023-07-06T15:44:44
|
|
gl: Do not propagate copyTexSubImage2D error to client
https://chromium-review.googlesource.com/c/angle/angle/+/4662393 ensured
that BlitGL::copyTexSubImage allowed the caller to fallback when the
underlying copyTexSubImage2D call failed, but the GL error was also
propagated to the client due to the Context::handleError call in
CheckError - that error still causes webgl conformance failures even
though the pixel expectations are now satisfied.
This CL makes BlitGL::copyTexSubImage use getError directly so that the
error is not propagated to the client.
Bug: chromium:1458040
Change-Id: I3e4c06871c55d449facbe471c78e84f68b529f60
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4671325
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
|
|
c0069e62
|
2023-07-05T21:53:34
|
|
Vulkan: Enable ANGLE_pack_reverse_row_order
This allows testing the compute path implementation of PBO download for
SNORM targets.
Bug: b/286882707
Change-Id: I01393f8cad96bf8857a0dfb1638ff2c6366c28a3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4668228
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
8b0e5413
|
2023-06-14T13:27:42
|
|
Metal: Put a limit on the total MTLLibrary objects cached
Use an MRU for holding the cached libraries in mtl::LibraryCache.
Using a maximum cache size of 128 and a GC size of 32 yields the same
ratio of cache hits as before (40%) while cycling out the more unique
shaders that are not re-used. Lowering the cache size to 64 or 96
yields a hit rate of 30-35%.
Bug: chromium:1329376
Change-Id: I75dd6b20cf3f8b67c4b3c31da4e05e1857ad61db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614362
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6ee402f6
|
2023-07-06T16:56:28
|
|
Clamp the max Framebuffer width and height to 16 bit
GraphicsDriverUniforms struct packs framebuffer
width and height into a 32 bit uint, meaning the
maximum width and height supported are 16 bit each.
We should make sure below values do not exceed the
maximum value of a 16-bit uint:
caps.maxFramebufferWidth
caps.maxFramebufferHeight
caps.maxRenderbufferSize
so that the application won't try to create a FBO
with width/height exceeding 16-bit.
We have clamped the caps.max2DTextureSize to
32768, it makes sense to clamp the FBO width and height
to the same value.
Bug: b/286921997
Change-Id: Iae598b37215c58d1a0f6a50bba9f391d4d23d1f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4671327
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b57d5638
|
2023-06-29T00:00:00
|
|
Reland "Cleanup multiview support"
This is a reland of commit 9a7c0b88ba68e328d3f5f7991a6df0ab5de92311
Original change's description:
> Cleanup multiview support
>
> * Removed remaining mentions of ANGLE_multiview
>
> * Removed AST transformations used only in
> the side-by-side multiview implementation
>
> * Changed the type of the internal ViewID_OVR
> variable to use the dedicated qualifier
>
> * Removed side-by-side multiview support
> from the D3D11 renderer
>
> * Removed an unused helper for side-by-side
> multiview support from the OpenGL renderer
>
> * Removed obsoleted test suppressions
Fixed: angleproject:3341
Change-Id: I3ce9304c79c0873462c73e8cf02b85f7a1aaf874
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4669604
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
8b680c93
|
2023-07-07T09:24:44
|
|
Vulkan: Bug fix in GetAvailableValidationLayers(...)
GetAvailableValidationLayers(...) had a bug where it did
not account for a subset of kVkValidationLayerNames
being available.
Bug: angleproject:8247
Change-Id: Id7bc3570b2caf5550ca9d011a3ba9429702af8af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4673189
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
3cc3327c
|
2023-07-07T10:29:45
|
|
Vulkan: limit preferCPUForBufferSubData flag to mali job manager
This feature flag was introduced with testing on pixel 6 pro with
aliexpress trace. The GPU has a job manager does the scheduling and
transfer workload was put in the same job queue as geometry work which
causing unnecessary bubble in the pipeline. This problem does not exist
on newer GPU architecture where it has a command stream front end that
transfer has its own dedicated queue. As test result on pixel 7 devices
indicates, this feature flag shows no difference on pixel 7with
aliexpress trace, and has negative perf impact with gangstar_vegas
trace. This CL limits the feature flag to ARM's job manager based GPU.
This improves gangstar_vegas frame time from 8.4576ms to 4.6370ms on
pixel 7 pro.
Bug: b/289436017
Change-Id: I604fb1e26d0a99bcf8f4c2574ced360c31ac712d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4671326
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
51320fab
|
2023-07-06T16:01:58
|
|
Make most GLES1 entry points lockless
These entry points only set context-local state and thus don't require
locking.
Bug: angleproject:8224
Change-Id: I80223340348d62a56109324ab3e4f935e53419b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4670407
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eb205e68
|
2023-07-06T13:34:28
|
|
Make the glPatchParameteri entry point lockless
This entry points only sets context-local state and thus doesn't require
locking.
Bug: angleproject:8224
Change-Id: I17975a97aa7f68c3ddf2ef78069b8f519fdc4c1a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4670405
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
|
|
5869fb3b
|
2023-07-06T22:13:36
|
|
Remove big-GL files from normal builds of ANGLE
Bug: angleproject:7533
Change-Id: I3616296d9923310200830a921190813e3ecfe80b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4672146
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
732a8f07
|
2023-07-05T17:03:46
|
|
Move max-shader-compile-threads state out of LocalState
While this state is indeed context-local, setting it calls into the
backend (GL backend specifically, where it forwards the call to the
driver). The call to set this state is rare and now worth the risk
associated with making it lockless.
Bug: angleproject:8224
Change-Id: I3af395721fa18b9345698870c0da63e8cac83610
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4666355
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
66c2e4fc
|
2023-07-04T17:02:07
|
|
[ssci] Added Shipped field to READMEs
This CL adds the Shipped field (and may update the
License File field) in Chromium READMEs. Changes were
automatically created, so if you disagree with any of
them (e.g. a package is used only for testing purposes
and is not shipped), comment the suggested change and
why.
See the LSC doc at go/lsc-chrome-metadata.
Bug: b/285450740
Change-Id: I770554248e33c1e50938cc32daee36a83b643ec9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4672125
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7e0fb7e4
|
2023-07-05T17:20:23
|
|
Make glIsEnabled* entry points lockless
These entry points only set context-local state and thus don't require
locking.
Bug: angleproject:8224
Change-Id: I6fe40bf4381e1d42248358f773ec9d5675883ada
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4666356
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
72c26926
|
2023-07-05T16:31:23
|
|
Make pack/unpack and hint entry points lockless
These entry points only set context-local state and thus don't require
locking.
Bug: angleproject:8224
Change-Id: I5694d319df61a7a9df1766cf1f723b9a05208209
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4666352
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
208dfe28
|
2023-07-05T15:18:57
|
|
Make glStencil* entry points lockless
These entry points only set context-local state and thus don't require
locking.
Bug: angleproject:8224
Change-Id: I612d8219ba038464173490b2c261e9e7b229c83f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661702
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c3c2f450
|
2023-07-05T14:52:10
|
|
Make glBlend* entry points lockless
These entry points only set context-local state and thus don't require
locking.
Bug: angleproject:8224
Change-Id: Ie811c35ae7b65106db9af9f7531ad3a5e0bd4f8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661701
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
44395930
|
2023-07-05T11:59:23
|
|
Make various state setting entry points lockless
These entry points only set context-local state and thus don't require
locking.
Bug: angleproject:8224
Change-Id: I428c23cc862e9356d571bc085b5df0bf48017175
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661700
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9daac2b7
|
2023-07-05T11:36:46
|
|
Make glEnable/Disable entry points lockless
These entry points only set context-local state and thus don't require
locking.
Bug: angleproject:8224
Change-Id: Id4eab729115bd75f82e1ec7a27355c821a7c4320
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661697
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
fede75ff
|
2023-07-06T11:38:35
|
|
Fix multi-draw's gl_DrawID in non-multi-draw draws
The uniform value for gl_DrawID was never reset, so if a program was
first used with multi-draw and then without it, gl_DrawID would not
contain zero.
Test credit info-tibo@orange.fr
Bug: angleproject:8245
Change-Id: I73a613ab2858cde4633fadf6a1a523e462167eb0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4662137
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
0892420b
|
2023-06-28T23:03:51
|
|
Vulkan: Optimize PBO download between RGBA and BGRA
Google Meet hits this path in Chrome when blurring the background. The
CPU readback was particularly slow on Intel/Mesa where readback from the
temp buffer took hundreds of milliseconds.
This change adds a compute shader that directly copies from the image to
the pack buffer in simple but common cases.
Bug: b/286882707
Change-Id: I9877ea01e3d8377db96f2539362aca67cf832b4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4657058
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
be41fe29
|
2023-07-04T15:35:46
|
|
Make glColor/DepthMask entry points lockless
These entry points only set state that is entirely accessed by the
owning context (context-local) and thus don't require locking.
glColorMask* functions also affect the cached context state (in
particular draw validity), so the relevant cached state is also modified
to support being locklessly modified.
Bug: angleproject:8224
Change-Id: I221b4efa25fc1c11419d1ac942f1c37e59ec92c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4658173
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f0deadab
|
2023-07-06T15:19:03
|
|
Revert "Cleanup multiview support"
This reverts commit 9a7c0b88ba68e328d3f5f7991a6df0ab5de92311.
Reason for revert: Suspected cause of crash on Canary
Original change's description:
> Cleanup multiview support
>
> * Removed remaining mentions of ANGLE_multiview
>
> * Removed AST transformations used only in
> the side-by-side multiview implementation
>
> * Changed the type of the internal ViewID_OVR
> variable to use the dedicated qualifier
>
> * Removed side-by-side multiview support
> from the D3D11 renderer
>
> * Removed an unused helper for side-by-side
> multiview support from the OpenGL renderer
>
> * Removed obsoleted test suppressions
>
> Fixed: angleproject:3341
> Change-Id: I5e0706cbf26ea820b51400124ddbf2624b738f17
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4660046
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: chromium:1462504
Bug: chromium:1462505
Bug: chromium:1462506
Bug: chromium:1462478
Bug: chromium:1462531
Change-Id: Ie0e76b1c6823db19f68bb67fdfc8abc00cc62f88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4666209
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
2a5c05df
|
2023-07-05T14:24:54
|
|
gl: Handle copyTexSubImage2D failures manually
https://chromium-review.googlesource.com/c/angle/angle/+/4662093 was a
previous attempt at graceful fallback from copyTexSubImage2D, but the
approach in that CL doesn't quite work since it produces an error when
returning from the function which makes the caller also propagate the
error instead of falling back to blit via shader.
This CL makes it so that we handle the error manually and return an
angle::result::Continue with *copySucceededOut=false to indicate to the
caller that it should try a fallback.
Bug: chromium:1458040
Change-Id: I3cd66dcaa6069d5527c3e73190d72ffbba98ae4b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4662393
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9d9ca90b
|
2023-06-30T15:31:03
|
|
Properly validate _ADJACENCY primitive modes.
After a refactoring in Issue angleproject:5483 and Issue
chromium:1185267, the _ADJACENCY primitive modes were being validated
as legal in context versions where they were not supported.
Thanks to lehoangquyen@ for an initial version of this CL and one of
the two new tests. Verified locally on an ASAN build on macOS (by
manually disabling SwiftShader, where ASAN does not work) that the new
tests pass cleanly.
Test: SimpleOperationTest.PrimitiveModeLinesAdjacentNegativeTest
Test: SimpleOperationTest.DrawsWithNoAttributeData
Bug: chromium:1457840
Change-Id: Icb0945e0081ca6f97355dc60f75d60c3f4f68565
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661672
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4db13081
|
2023-07-04T14:40:31
|
|
Make glClearColor/Depth/Stencil entry points lockless
These entry points only set state that is entirely accessed by the
owning context and thus don't require locking.
Bug: angleproject:8224
Change-Id: I6cddee865ffd38e228f8f87dd14adffb916e0fed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4658172
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cb5cd76d
|
2023-07-03T15:54:58
|
|
Manual roll vulkan-deps from 2b2cba62bfea to e21365bc9170 (38 revisions)
Manual roll requested by ynovikov@google.com
Suppress new VUIDs:
"VUID-vkCmdDrawIndexed-None-08608",
"VUID-vkCmdDraw-None-08753",
"VUID-vkCmdDrawIndexed-None-08753",
https://chromium.googlesource.com/vulkan-deps.git/+log/2b2cba62bfea..e21365bc9170
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/9575e33186..3ebb72cc74
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/2d3a152081..b8e742c91b
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/310a67020a..58459c2b1a
* vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/b6a29e5ca8..ad5f8ee975
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/a1d9d485ce..dce85674e2
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/247c806c93..2e5260d44c
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/926ffb1f41..4400858043
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC
angle-team@google.com,ianelliott@google.com,ynovikov@google.com on the
revert to ensure that a human
is aware of the problem.
To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: angleproject:8242
Change-Id: I475146b418565e633043f6b57cb07baedcff02ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4662877
Commit-Queue: Ian Elliott <ianelliott@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
9a7c0b88
|
2023-06-29T00:00:00
|
|
Cleanup multiview support
* Removed remaining mentions of ANGLE_multiview
* Removed AST transformations used only in
the side-by-side multiview implementation
* Changed the type of the internal ViewID_OVR
variable to use the dedicated qualifier
* Removed side-by-side multiview support
from the D3D11 renderer
* Removed an unused helper for side-by-side
multiview support from the OpenGL renderer
* Removed obsoleted test suppressions
Fixed: angleproject:3341
Change-Id: I5e0706cbf26ea820b51400124ddbf2624b738f17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4660046
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e70b9b4f
|
2023-06-26T14:03:54
|
|
gl: Use ANGLE_GL_TRY_ALWAYS_CHECK for CopyTexSubImage
CopyTexSubImage fails with certain formats on Pixel 2 & 4 with a driver
error. TextureGL::copySubTextureHelper has a fallback path to handle
errors, but it gets skipped because BlitGL::copyTexSubImage uses
ANGLE_GL_TRY which doesn't check for GL errors in release builds. This
CL fixes that by using ANGLE_GL_TRY_ALWAYS_CHECK instead which is anyway
intended for any GL call that might allocate memory behind the scenes.
Bug: chromium:1458040
Change-Id: If660f3ef9968338d4ecf7fa20ab481aad84ed981
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4662093
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
db3537aa
|
2023-07-03T15:56:42
|
|
Vulkan: Suppress VVL "VUID-vkCmdDraw-None-08608"
Bug: angleproject:8242
Change-Id: Ia446cfc370ad6ade4967644416dee9e18aaaa0d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4664612
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
25ce3dfe
|
2023-06-29T15:51:55
|
|
Use compare_exchange_weak() in AllocateGlobalMutexImpl()
Speculative fix of the crash.
New logic will ensure that `currentMutex` is not `nullptr` when returned
from `AllocateGlobalMutexImpl()`
Also removed explicit memory order for safety (no actual difference in
generated code on ARM64/x86-64, but ARM generates less instructions).
Bug: chromium:1457915
Change-Id: I8d932ee499f9d8ee4e38ab2173f4f1cefd0aa294
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4650794
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
20cc4a9b
|
2023-06-26T00:00:00
|
|
D3D11: Fix non-trivial blits for snorm buffers
Bug: angleproject:8048
Change-Id: Ifec7ea71e0ab88f545ae088b0faae4b95512a207
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4654315
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
16657963
|
2023-06-28T09:42:52
|
|
Vulkan: Improve SyncVk::serverWait
If sync object has already finished, there is no need to insert pipeline
barrier. With this CL, asphalt_9 average frame time reduces from 5.464
ms to 5.268 ms (-3.58%), making it 85% of native GLES (4.49 ms) on pixel
7 pro.
Bug: b/277644512
Change-Id: I112ccef0619da3c05cba44066327edc0bb81c366
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4651599
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ccf8530b
|
2023-06-27T16:01:58
|
|
Split context state by locality of get/set effect
Some state are purely local to the context when get or set. For
example, the state of depth test does not affect and is not affected by
any other state.
Some state on the other hand may affect other contexts. In particular,
some objects are shared between contexts of a share group, and may
affect each other through the observer interface.
These sets of state are separated to create a clear boundary between
state that can and cannot be accessed without holding the share group
lock. A follow up change removes locking from the entry points that
purely access the former set of states.
For the latter state, it is likely possible to access most if not all of
them without holding a lock, but careful inspection is required before
that can be considered. In particular, most entry points that simply
bind an object are likely harmless if the ref counter is turned atomic.
Bug: angleproject:8224
Change-Id: I91c3fa9de870c13d48012a5e06c177dab4010907
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4651375
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5f581f87
|
2023-06-27T20:38:03
|
|
Pass dirty bits by value
Split CL from follow up change where the dirty bits need to be passed
by value as they are calculated from two sets. Many cached dirty bits
are turned to constexpr as a result.
Bug: angleproject:8224
Change-Id: Ibdb3090d6ee93788e1502b72bce55f4677937c58
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4650074
Reviewed-by: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
0e7c79e3
|
2023-06-29T00:00:00
|
|
Vulkan: Fix resolve with multiple targets of different formats
Ensure that the appropriate code path is taken
when resolving into multiple target buffers of
different formats.
Bug: chromium:1123524
Change-Id: Ic25a52ba069a2209c907226613fde1109823c094
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4650561
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
77c4b677
|
2023-06-28T08:23:23
|
|
Vulkan: Suppress PointSize VVL error
Bug: angleproject:8237
Bug: angleproject:2796
Bug: b/288961771
Change-Id: I7e4b364225c61fd72091e9d84d45eb71a02a5597
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4653398
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
|
|
ed391dae
|
2022-03-25T16:36:39
|
|
Replace `extern thread_local` to avoid GCC < 9.1 bug
GCC generates broken code for mingw-w64 target when accessing `extern
thread_local` variables from another compilation unit.
See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104862
See:
https://invent.kde.org/graphics/krita/-/blob/master/3rdparty/ext_googleangle/02-patches_krita/0017-Replace-extern-thread_local-to-avoid-GCC-mingw-w64-b.patch
Co-authored-by: Alvin Wong <alvinhochun@gmail.com>
Bug: None
Change-Id: Ief0036054e644d40b8b0e86ed990280e566da2a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4637587
Auto-Submit: L. E. Segovia <amy@amyspark.me>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f150cf10
|
2023-06-23T02:56:09
|
|
Vulkan: minor pipeline cache chunk key hash bugfix
The hash key was not correctly streaming the chunk index into the key
string -- "chunkIndex" here is a uint8_t, which the ostream incorrectly
identified as a character rather than byte. So the "std::hex" modifier
didn't have any effect and chunkIndex 0 had a truncated key.
Bug: angleproject:8231
Change-Id: Icb4977b658214979e08f66fcb98217259d4799ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639493
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
42c3a9fe
|
2023-06-23T03:53:09
|
|
Vulkan: support creating context with MoltenVK on macOS
The Vulkan loader somewhat recently introduced a requirement that
clients must opt-in to using portability implementations of Vulkan (such
as MoltenVK). Since there is no native Vulkan driver for macOS (and
therefore no alternative), unconditionally enable the portability
enumeration extension there.
Bug: angleproject:8229
Change-Id: I24f0f24e25abd277855ed9ac4de370cfb47d3266
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639495
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
|
|
232506e1
|
2023-05-15T19:19:39
|
|
Vulkan: Free the garbage memory before realloc
The previous CL added the feature of freeing garbage memory in the
event of device OOM. However, it was for image allocations only.
* Extended finishing commands and freeing the garbage to buffers.
* Added unit test to allocate buffer after freeing memory space on the
device.
Bug: b/280304441
Change-Id: I540b27a41b34d1ceb1cd3119213341c9f290ea38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4540209
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
5f9548c3
|
2023-05-19T11:51:04
|
|
Vulkan: Free the garbage memory before realloc
Currently image allocations fall back to system memory in case of
a device OOM. However, in some cases, it is also possible to gain
some memory by freeing garbage memory from the device. This allows
us to keep the allocation on the device memory.
* Updated the image allocation fallback, so we will try cleaning the
garbage memory through the renderer before retrying the allocation.
* finishOneCommandBatchAndCleanup() in RendererVk, which will call a
similar function in its CommandQueue. It will be called until there
are no more in-flight submissions.
* The existing finishOneCommandBatchAndCleanup() in CommandQueue has
been renamed to finishOneCommandBatchAndCleanupImpl().
* Updated the flags used for VMA image allocations. If any device memory
is freed after garbage cleanup to make enough space for the new
allocation, it will take precedence over the system memory.
* Added unit tests in which a new image allocation could happen on the
device after freeing the garbage memory.
* They use a 2D texture and a 2D texture array for garbage.
Bug: b/280304441
Change-Id: Ia5e605e180833b44af8c77550ab1b0b8ba21724e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4547941
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
02292814
|
2023-06-01T14:46:05
|
|
Vulkan: Optimize the usage of FastMap in DescriptorSetDescBuilder
While looking at disassemble of
DescriptorSetDescBuilder::updateOneShaderBuffer() function, I noticed
that there are a lot of CPU cycles spent in FastMap::operator[]. What
happend here is that we are increasing size one by one as we build
descriptorSet, and that hit `if (mData.size() <= key)` case and we end
up resize the underline FastVector, and that resize also initialize the
element with zeros, which immediately overwrite by actual data. Since we
actually know the eventual size of
DescriptorSetDescBuilder::mDesc/mHandles/mDynamicOffsets, we could just
switch to angle::FastVector which will avoid this check size and grow
every time we write to it. This CL switches the use of FastMap in
DescriptorSetDescBuilder to FastVector. The only trick we need to watch
out is that previously the new elements are always zero filled and now
it does not. So we need to make sure we write every field of structure.
This CL also renames WriteDescriptorDescBuilder to WriteDescriptorDescs
since when it is read only we are passing it as const reference already,
there is no added advantage to have two classes.
Bug: b/282194402
Change-Id: I06a063cc51585fc17fbf0d5aa916b9aa0ab88dd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4581881
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cafbf6e2
|
2023-06-22T22:50:32
|
|
Vulkan: Simplify active uniform check
Bug: angleproject:7220
Change-Id: Ic0f26f3d09bac570d4ed3f791c456d569208424a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636869
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
61eda436
|
2023-06-15T14:47:35
|
|
Fix TexImage3D validation for 2D arrays below ES3
Currently if we try to define a 2D texture array in ES2, a crash
occurs during its validation. Since texture3DOES only adds support to
3D textures, we should make sure the validation only passes if ES3 and
above are used.
* Added check for 2D texture array usage in validating glTexImage3D().
Bug: angleproject:8213
Change-Id: Ib477d8b6eec89c35d605a1b575bfb5519d19452e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4618955
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2e209516
|
2023-06-26T11:58:50
|
|
Move state dirty bits definitions out of the class
This is in preparation for a follow up change that splits the state
class.
Bug: angleproject:8224
Change-Id: Ic9b253583e40fcc93ff37605b6b6e1deb55a6e55
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4631843
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0fe6f282
|
2023-06-24T14:06:17
|
|
Reset and then populate frontend features during display initialize
Overwritten features were never reset even if a display was
terminated. On platforms that reuse displays for all tests
in the end2end suite, overridden feature would leak into
subsequent tests causing unexpected failure.
Bug: angleproject:8235
Change-Id: I1b359bc762a2bca8db4e4dbc7a587604e5bd6a5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4643453
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
ec1f18db
|
2023-06-21T10:16:51
|
|
Vulkan: Remove ShaderVariableType and flatten info map
With the conversion of the interface variable info map keys to SPIR-V
ids, there is no longer a benefit to bucket resources by their type.
This change removes this bucketing and flattens the map.
Bug: angleproject:7220
Change-Id: If83cb02ca9e91f72dddb2deb7313fee40f9f06c3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632577
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
04965dde
|
2023-06-23T02:54:24
|
|
D3D11: identify D3D11on12 in renderer string
The renderer string didn't previously give any indicator of whether the
context was created as D3D11 or D3D11on12.
Bug: angleproject:8233
Change-Id: Iee8ae4698c1e08d1826249d92f232a153cd0ee4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639492
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b5f87c04
|
2023-06-20T20:22:15
|
|
Vulkan: Simplify shader interface variable map
The shader interface variable map had a "resource index" -> info map to
optimize descriptor set building. That avoided hashing the resource
name when the rest of the map was name-based.
With the map using SPIR-V ids now, there is no reason to maintain this
map; SPIR-V ids can be used to look up the info just as efficiently.
Bug: angleproject:7220
Change-Id: I619783dce558a59184955cc314c1f41e6733f1b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4630728
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
7a38d614
|
2023-06-23T01:56:43
|
|
remove ScheduleYield, replace with std::this_thread::yield
Instead of hand-rolling this function, just use std::this_thread::yield,
which has the advantage of being cross-platform and using an underlying
implementation that's actually more correct on Windows[1][2].
[1] https://github.com/microsoft/STL/blob/40640c6df9754ea031f8df7c720b89714d19df97/stl/src/cthread.cpp#L84-L86
[2] https://joeduffyblog.com/2006/08/22/priorityinduced-starvation-why-sleep1-is-better-than-sleep0-and-the-windows-balance-set-manager/
Bug: angleproject:8232
Change-Id: I9053fa362f328dc45b7c13f5f70818adf89a290f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639490
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
131acc31
|
2023-06-23T04:12:09
|
|
Vulkan: fix blob caching of initial pipeline cache
When creating a new pipeline cache and the blob cache doesn't have
a matching one we can load, we unintentionally skipped serializing it to
the blob cache until the pipeline cache state changed later on.
Bug: angleproject:8230
Change-Id: If86d1bd169a63da9f9a394284a754bccb7d52e20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4639496
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0574f0ab
|
2022-03-10T16:26:23
|
|
CLRefPointer: fix reference to STL type for MinGW Clang
See:
https://invent.kde.org/graphics/krita/-/blob/master/3rdparty/ext_googleangle/02-patches_krita/0012-Fix-Clang-MinGW-target-build.patch
Co-authored-by: Alvin Wong <alvinhochun@gmail.com>
Bug: None
Change-Id: I0b7acebf7246297cbf8aa5062256c7008f78cf7b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4637586
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: L. E. Segovia <amy@amyspark.me>
|
|
16d65289
|
2023-06-20T17:27:01
|
|
Vulkan: Remove hashing of the SPIR-V id in variable map
The interface variable ids are already mostly packed, so a flat array
will do with the id as key.
Bug: angleproject:7220
Change-Id: I17cded0378b1b67379b979b00d69bbe04088a840
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628975
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ac4f52c4
|
2023-06-22T01:47:33
|
|
Vulkan: release all resources on RendererVk destroy
The most important part of this is unloading the libvulkan handle. We
open the handle in ::initialize but we were previously only unloading it
in ::~RendererVk[1]. Since a DisplayVk (and RendererVk) are not
destructed in between context creations, this meant that the libvulkan
library handle reference count only increased, never decreased.
[1] Which, incidentally, never gets invoked, ever. We create Display
instances and they live forever in a static structure and we only
::initialize/::terminate them.
Bug: angleproject:8225
Change-Id: I03da9b19f0c4ae3b5efacd07880aadb7ee77ebf5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636882
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c1ba8e6f
|
2023-06-20T16:03:20
|
|
Vulkan: Flatten shader interface variable maps
This change removes duplicate entries added in the shader shader
interface variable maps. One level of arrayness (indexed by shader
type) is removed from these maps as now there is only a single entry
per linked resource/etc.
Bug: angleproject:7220
Change-Id: Ibf2d06a0e1f68e68797c2066f36e14cb9e667f77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628677
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4ed2d403
|
2023-06-22T11:49:41
|
|
metal: disable render to texture extension.
It's implemented incorrectly in the current backend (or not
implemented at all).
Once it's fixed, we can turn on that again.
Bug: angleproject:3107, angleproject:6395, chromium:1424910
Change-Id: I176327b027b25084525a242c81c1625efe43c89a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4634659
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
75065c57
|
2023-06-22T09:49:59
|
|
Vulkan: Fix email in OWNERS
Bug: None
Change-Id: I552b0192e5d191a7d759c15b809486b7f1ee1f57
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4636781
Commit-Queue: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
70ecc80f
|
2023-06-14T11:12:52
|
|
Metal: Store MSL in shared pointers to immutable strings
The translated metal shader source is quite large and we store copies
in both ProgramMtl and mtl::LibraryCache.
Instead, store the source in shared_ptrs to immutable strings. This has
a nice side effect of simplifying the cache keys for mtl::Library cache
and avoiding string copies.
This saves about 4% GPU process memory.
Since these strings are rarely accessed, the overhead of shared_ptr is
not a concern.
Bug: chromium:1329376
Change-Id: I507529ff1e25cc6aafead272fc9bb6ab0b8dbe88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614361
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
8bc7fffb
|
2023-06-21T10:54:27
|
|
Include framebuffer completeness reason in draw errors
Framebuffers have a much more detailed "reason" string for framebuffer
completeness errors. Make sure that reason is printed when a draw call
fails due to incomplete framebuffer.
Rework how draw validation errors are stored to keep the extra GL error
enum.
Bug: chromium:1455725
Change-Id: I5984452c5aab4f8ccb73d43bd63bca1aae53e847
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632578
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ecf245ff
|
2023-06-14T16:24:17
|
|
Metal: Don't force all incomplete textures to initialize
ensureIncompleteTexturesCreated is called in every syncState and
initializes all types of incomplete textures, even when they are not
used.
Skip it entirely. ContextMtl::getIncompleteTexture already lazily
creates the incomplete textures, per type.
This saves about 1mb (~5% of ANGLE's allocations for Chrome) of
malloc'd memory per context.
Bug: chromium:1329376
Change-Id: I14ab7098ce2e486383d1d0d41039f0e526755878
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615190
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
bbcf54bc
|
2023-06-16T16:02:08
|
|
Vulkan: Refactor uniform/block binding duplication code
Previously, resource binding assignment was done as such:
```
for each shader stage
assign bindings to textures
assign bindings to blocks
assign bindings to images
etc
```
To deduplicate bindings when the same resource was used in multiple
stages, a map was used, keyed by the resource's name, to detect when an
already visited resource is encountered in a future stage. This was
both inefficient and unnecessarily complicated.
With this change, resource binding assignment is done as such:
```
for each texture
assign one binding to all shader stages
for each block
assign one binding to all shader stages
for each image
assign one binding to all shader stages
etc
```
The aforementioned map is removed.
Because the resource bindings are now changed, the rest of the code
(which sets up the pipeline layout, updates descriptor sets, sets
dynamic buffer offsets, etc) are all updated to follow the above
pattern. As a result, nested loops are avoided and duplicate entries in
the variable map are never visited.
Bug: angleproject:7220
Change-Id: Iaff7b5f8b2bada8ac5078d21e5c790bf0d27aca7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4622011
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ac263582
|
2023-06-19T12:26:44
|
|
Vulkan: add workaround for VK_EXT_full_screen_exclusive on AMD
On outdated (but recent) AMD drivers, the Windows-only Vulkan extension
VK_EXT_full_screen_exclusive appeared to be implicitly enabled and set
to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT mode. Even though
ANGLE did not enable or interact with this extension at all, the driver
was incorrectly returning VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
error codes on various swapchain operations when the full screen window
focus was lost (i.e. alt-tab out and back in). Naturally, ANGLE was not
expecting these error codes and did not know how to handle them.
Depending on where the errors occurred, ANGLE might crash or retry
creating the swapchain repeatedly.
Treating the unexpected VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
error code as VK_ERROR_OUT_OF_DATE_KHR/VK_SUBOPTIMAL_KHR was not
sufficient, because the driver would repeat the error on every swapchain
operation, apparently expecting the error to be handled by
a vkAcquireFullScreenExclusiveModeEXT call (even though that would make
no sense, since the extension was not enabled).
The incorrect driver behavior was reported to AMD and was fixed in
recent driver releases. The earliest driver I've tested and know to be
working is AMD's Adrenaline driver version 23.5.2
(VkPhysicalDeviceProperties calls this driverVersion 2.0.262/0x800106).
The last known bad version was 0x8000e9.
The simplest workaround on these older AMD graphics drivers is to
explicitly enable the extension, but set it to
VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT mode. On newer drivers we do not
need to do anything with the extension and can ignore it.
Bug: angleproject:8215
Change-Id: I7c58d47a0350f4b0bc1a77f200c1e2f72fcde8d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627279
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
954b3339
|
2023-06-21T11:13:38
|
|
Add internal format to TexStorage validation errors
Print the hex value of the internal format when generating error
messages about invalid internal formats in glTexStorage.
Bug: chromium:1455725
Change-Id: Ia99c8891c5510590a3fcaf3699476942bf80b57c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4632579
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
b28ba57e
|
2023-06-20T16:32:42
|
|
Update OWNERS
Bug: None
Change-Id: I20ed7c410967cb207c50e32af58abacc6ddb816c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4628679
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
15156b1d
|
2023-06-19T11:58:20
|
|
Vulkan: disable graphics_pipeline_library on old NVIDIA drivers
On drivers before R530, there are some transient visual glitches in
rendering when using VK_EXT_graphics_pipeline_library. Basically you
might see correct renders for a few frames, very incorrect renders for
about 10-20 frames, and then it would render correctly from then on.
This problem went away either at R530 or slightly after. This change
sets the minimum version to R531, which is the first version I observed
behaving correctly.
Bug: angleproject:8218
Change-Id: I7af4f74c1469ecf2306dec0cab9062eff2ec5f2c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627277
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2e0b369d
|
2023-06-19T12:05:24
|
|
Vulkan: copy drawIndirectFirstInstance from physical device features
Not doing so results in VVL errors (you need the GPU-assisted validation
preset enabled to see this error):
[ VUID-VkDrawIndexedIndirectCommand-firstInstance-00554 ]
The drawIndirectFirstInstance feature is not enabled, but the
firstInstance member of the VkDrawIndexedIndirectCommand structure
at index 1 is not zero The Vulkan spec states: If the
drawIndirectFirstInstance feature is not enabled, firstInstance must
be 0
Bug: angleproject:8220
Change-Id: Ia43036584b85e4a7d9c3fcaf793be94b965f708f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627278
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
041e2731
|
2023-06-19T19:27:09
|
|
optimize glShaderSource string concatenation
This optimizes for both memory usage and time. Before this change, we
had a redundant copy of the shader source fragments in memory:
- The user application
- The ostringstream buffer
- The final concatenated string
The second one can be avoided by not using ostringstream.
The second issue is that ostringstream will reallocate as we fill it,
and depending on the number of input strings (and their size), it may
reallocate several times. Since we aren't doing anything particularly
fancy with the ostringstream, we can just preallocate the appropriately
sized string and fill it with the input strings all at once.
If we don't mind taking an additional dependency on abseil-cpp, this
could also be implemented with absl::StrJoin, but it seems like a heavy
dependency for something relatively simple.
Tests run: GLSLTest.*ShaderLength*
Bug: angleproject:8219
Change-Id: Idba277e7860116f858e7a86f4b03420dd383a52f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627282
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
152e0d16
|
2023-06-19T14:44:09
|
|
Vulkan: detect Apple GPU as being a tile-based renderer
This helps systems running MoltenVK on Apple Silicon.
Bug: angleproject:8221
Change-Id: I28ce9b3dc153fb420429641776767fb71734685a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627276
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
508eb865
|
2023-06-19T11:54:06
|
|
Vulkan: avoid crash on AMD drivers with MSRTT emulation
If you have a multisampled color+depth framebuffer and discard depth
before the end of the render pass, ANGLE skips assigning
pDepthStencilResolveAttachment. Doing so is fine on most vendors, but on
AMD drivers, the application will crash in the user mode driver when
calling vkCreateRenderPass2KHR.
Simply not adding the depth/stencil resolve structure to the PNext chain
avoids the crash and allows the application to function normally.
Bug: angleproject:8217
Change-Id: I0dc14c03d2b999e280a4d363e0296fd10812540c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627280
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
262784f4
|
2023-06-19T17:56:04
|
|
D3D11: unbreak instanced indirect multidraw with ushort indices
The baseInstance parameter was not being passed in the unsigned short
index case.
Bug: angleproject:8216
Change-Id: If660c6d4125bfd2aff8f4fd3a9171194635d21c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4627281
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
681ca074
|
2023-06-16T15:03:13
|
|
Vulkan: Deduplicate SpvAssignLocations call in program pipeline
Some logic already in SpvGetShaderSpirvCode was duplicated for program
pipelines. In particular, this necessitated exposing UniformBindingInfo
which is an internal detail of SpvAssignLocations.
In a follow up, UniformBindingInfo will be removed altogether.
Bug: angleproject:7220
Change-Id: I9fa60c716de6dfb0d3a72c4f4dd3822043bab308
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4622010
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7ef6452d
|
2023-06-14T16:02:46
|
|
Metal: Refactor hasValidRenderTarget checks
Separate the computation of hasValidRenderTarget into a function and
only call it if the cheaper check to allowRenderpassWithoutAttachment
returns false.
Bug: chromium:1329376
Change-Id: Id20a33913b7133a5aea82f53abb0a86664b4f2c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615188
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a62cc521
|
2023-06-14T23:27:31
|
|
GL: fall back to WGL if EGL_ANGLE_surface_orientation unset
When an app attempts to use the GL backend on Windows, there is
currently an undocumented hard requirement for
EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE. This is caused by
EGL_ANGLE_surface_orientation not being fully implemented, so
instead let ANGLE fall back to the slow WGL pipeline.
See: I012168531d8c2e5b189671533cea9f57ec713538
BUG: angleproject:8201
Change-Id: I28c6a948a5fc0e3ebfff86c4cbf95c666f5c7cd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614646
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
84379a52
|
2023-06-16T14:12:54
|
|
Vulkan: Mark the location of vertex output in the compiler
So the SPIR-V transformer doesn't have to discover it.
Bug: angleproject:7220
Change-Id: I13a4c7a205e664195a9631169a207c248497143a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621789
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
803c3b10
|
2023-06-16T13:53:25
|
|
Vulkan: Mark the location of xfb emulation in the compiler
So the SPIR-V transformer doesn't have to discover it.
Bug: angleproject:7220
Change-Id: I5c74e5f3cbd8fe0c03ee2c445fddb7a0ef36fb91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621788
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
ad13d41f
|
2023-06-16T13:28:58
|
|
Vulkan: Mark the beginning of the shader in the compiler
So the SPIR-V transformer doesn't have to discover it.
Bug: angleproject:7220
Change-Id: I2a41656cc224d1fc02e656da15d9781705a6e785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4621787
Reviewed-by: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
b46344bb
|
2023-06-12T13:50:40
|
|
Metal: Cache render pipelines at the context level
Cache Metal render pipelines in a new mtl::PipelineCache which lives
at the context level. This allows us to clean up unused pipelines from
programs that are not actively used.
The cache limits were chosen based on running Chromium. Without a
limit, the total number of pipelines peaks at ~200. With frequent GCs,
the active working set usually sits at ~60 pipelines.
Bug: chromium:1329376
Change-Id: Ifa83b797c893684294e16dd638f6b3a35e1d043f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608486
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
fb0174fa
|
2023-06-16T12:08:51
|
|
Fix clearing of extended dirty bits in draw calls
When syncing all dirty bits (i.e. in draw calls), the extended dirty
bits were not cleared. This caused the extended dirty bits to be
resynced every time.
Credit Steven Noonan <steven@uplinklabs.net>
Bug: chromium:1410191
Change-Id: I7042462bbc4346880eb99128b3501cf130987505
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615239
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b37df0c7
|
2023-06-16T12:05:03
|
|
Vulkan: Don't output SPIR-V debug info in release
Now that the SPIR-V transformer no longer relies on names, we can avoid
generating them in the compiler in the first place.
This both removes the need for stripping them out and makes the shaders
(which are cached) a bit smaller.
Bug: angleproject:7220
Change-Id: Ie636ac0ee62cf2730a409872041d22c066fc22ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615238
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
04f609d7
|
2023-06-09T16:03:28
|
|
Vulkan: Use user names directly in SPIR-V
... instead of prefixing them with _u. The transformer no longer relies
on debug info, which means SPIR-V names can be completely arbitrary.
There is no risk of collision with ANGLE internal names because it
doesn't matter for SPIR-V, and SPIR-V Cross is able to handle duplicate
names.
This change makes the output of SPIR-V Cross on generated shaders more
readable as it's not cluttered with _u before every name.
Bug: angleproject:7220
Change-Id: If46f7c82f908b0d65f8be49e297384ab659369e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615237
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
24f4007b
|
2023-06-08T00:41:55
|
|
Vulkan: Use SPIR-V ids instead of names in the transformer
This change removes the SPIR-V transformer's reliance on type and
variable names. As a result:
- String hashing is removed from the info map data structure and the
SPIR-V transformer
- The ID discovery class is entirely removed
- Internal variable names have become a detail of the compiler alone
(and are no longer exposed as part of the compiler interface)
- Some front-end name tracking is removed ("parentStructMappedName",
etc)
This change also properly cleans up xfb emulation types that were
previously left over.
This change allows the SPIR-V compiler to emit user strings as-is
instead of prefixing them with `u_` leading to more readable debug
shaders. Additionally, it will make it possible not to emit debug info
at all. Both of these changes will be done in follow ups.
Bug: angleproject:7220
Change-Id: Iaa127496209a27aaae2e0d14c41b22fffb0b72a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4600610
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e394cb46
|
2023-06-10T23:12:35
|
|
Vulkan: Refactor framebuffer fetch shader emulation
This change fixes simultaneous usage of EXT_shader_framebuffer_fetch and
ARM_shader_framebuffer_fetch, which previously declared two identical
input attachment variables.
The code is additionally greatly simplified.
Bug: angleproject:8196
Bug: angleproject:8197
Bug: angleproject:8198
Change-Id: Iaaa2a5539a95727e67001a4da1d45092c9db4f2c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4615187
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0e31cb40
|
2023-06-12T13:46:23
|
|
Turn CreateMTLRenderPipelineDescriptor into a method
Refactor CreateMTLRenderPipelineDescriptor into a method on
RenderPipelineDesc so it's externally visible.
Bug: chromium:1329376
Change-Id: I22780b630ff9230ae2f3912c3bf4fd70a78d3ce5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608485
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
7f9e9fce
|
2023-06-12T15:02:58
|
|
Metal: Remove copy constructors in various util classes
By using a different array initializer in RenderUtils, the copies are
not neccessary.
Bug: chromium:1329376
Change-Id: Iec98a31741457f8d76a84f0340772167d7b9700a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4607151
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6e3808db
|
2023-06-15T09:13:18
|
|
Record duration of syncFromNativeContext()
Bug: chromium:1168587
Change-Id: I9e9770ab253df8ca4fd45979f2e5d67932c0a2ae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614517
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
|
|
edf58105
|
2023-06-14T22:24:25
|
|
Validate GL backend after dispatch table initialization
This commit adds a check to ensure that the GL backend's functions
have been properly initialized. This may happen with third party
build toolchains, like vcpkg, which reimplement parts of the
existing build system.
Bug: angleproject:8195
Change-Id: Iaca2200a563c5049d90acad57785088c94b4e580
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614645
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3545ae0c
|
2023-06-09T16:11:47
|
|
Add isContextMutexStateConsistent() ASSERT
Added `gl::Context::isContextMutexStateConsistent()` method. This method
is primarily used to check if "SharedContextMutex" activation worked
successfully. It is automatically called in the updated
`ScopedContextMutexLock` before unlocking. This is to catch possible
errors using ASSERT during normal ANGLE operation in applications and
tests.
The `ScopedContextMutexLock` is now also used instead of the
`std::lock_guard<egl::ContextMutex>` in the `SCOPED_SHARE_CONTEXT_LOCK`.
No performance regression observed.
Important note: `lockAndActivateSharedContextMutex()` is NOT 100% safe
regardless of the `kActivationDelayMicro` value, so `ASSERT` may still
fail. However, failure does not necessary mean that there will be an
undefined behavior, it means that UB might happen.
Bug: angleproject:6957
Bug: chromium:1336126
Change-Id: Iee7357fede0d37fa315fe2cc7d27a4e30a304194
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4610227
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
bd5a7f24
|
2023-06-12T13:22:43
|
|
Metal: Set alphaToCoverageEnabled in checkIfPipelineChanged
alphaToCoverageEnabled was tweaked to false for non-multisampled
rendering cases in RenderPipelineCache::createRenderPipelineState
but this caused a copy and could be done much earlier during context
state syncing.
Bug: chromium:1329376
Change-Id: I37a461554e1e2b162313b4a952baa1526356db3d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4608484
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|