|
fbca2b29
|
2023-05-08T16:19:54
|
|
Metal: Build built-in shaders from source on the simulator
Compiling the built-in shaders with iphonesimulator sdk generates the
same shaders as on iOS which do not work on the simulator. Fall back
to simply building them from source on the simulator.
Bug: chromium:1385510
Change-Id: If6a3846fd06a4ff12c1e46c31f207e2a7b6c50bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4515521
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
65f4d2a4
|
2023-04-17T10:08:18
|
|
Adds features to enable loading/saving metallibs to blobcache
CompileMetalShaders results in the appropriate command line tool
being run to generate metallib blobs from shader source.
DisableProgramCaching results in not saving programs to BlobCache
LoadMetalShadersFromBlobCache results in trying to load metallibs
from BlobCache.
Bug: chromium:1423136
Change-Id: I01a4d7a5d60ed5ac978fb99db01b741e0f19e76b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4434293
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
|
|
f1f80e1e
|
2023-03-22T12:54:08
|
|
Metal: Always prefer staged GPU uploads for textures.
Uploading Metal texture data via MTLTexture::replaceRegion is a source
of lots of CPU hangs and jank. There may be better heuristics to
determine if we should do a CPU vs GPU upload but for now preferring
GPU uploads has better overall performance.
This also improves the MotionMark images test:
- 40 -> 100 when using Metal.
- 217 -> 235 when using Metal +
https://chromium-review.googlesource.com/c/chromium/src/+/4091749
Bug: angleproject:8024, angleproject:8092, angleproject:8109
Change-Id: I36b5f585884391b4cc416365ae65f8542745beee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4264963
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
ba845fcf
|
2023-03-20T00:00:00
|
|
Metal: Implement EXT_clip_control
* Skipped vertex shader depth correction when
clip depth mode is set to GL_ZERO_TO_ONE.
* Adjusted front face mode and pre-fragment
vertical flip driver uniform based on the
clip origin state.
* Added more clip control end2end tests.
* D3D11: Fixed scissored draws
with upper-left clip origin.
Fixed: angleproject:8065
Change-Id: Ife82fa2ad39fad463c23ec10b49bff409272ebf2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356661
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
9b00af52
|
2023-02-01T11:10:32
|
|
Metal: Add an in-memory MTLLibrary cache.
Add a small cache for (msl + compile parameters) -> MTLLibrary at the
egl::Display level. In regular executions of Chrome, the same shaders
(particularly vertex) are compiled multiple times in different programs.
Tested for a regular Chrome startup + open wikipedia + motionmark 1.2:
112/282 (40%) cache hits.
Several different caching methods were profiled (LinkProgram perf test)
- struct key with std::map : 303309
- struct key with std::unordered_map : 308090
- binary blob key with std::map : 263595
- binary blob key with std::unordered_map : 286051
- struct key + is_transparent with std::unordered_map : 304877
- struct key + is_transparent with absl::flat_hash_map : 335686
Using is_transparent allows us to search the hash map without
copying the shader source string to construct the key structure.
Bug: chromium:1385510
Change-Id: Ieec4ba526fe286276a4af7114d89cde32a8f9e1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4214012
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
1bd1a3db
|
2022-01-06T15:08:48
|
|
Metal: Canvas resizing causes webpage to run out of memory
For https://bugs.webkit.org/show_bug.cgi?id=232122
Introduce a maximum resident amount of memory that a single
command buffer can use, before forcing a flush.
As part of ensuring that a command buffer is ready,
check to see if this limit is exceeded. if so,
flush the command buffer, and create a new one.
Bug: angleproject:6880
Change-Id: I5e89735d05adbc174237ab79b006a75bbe89e560
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3369922
Reviewed-by: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
f13f440e
|
2021-12-15T15:11:05
|
|
Reland: Metal: Fix Webkit warnings in ANGLE build
Fix nullable warnings, unused functions
Add in additional function specification to FormatStringIntoVector
to correctly fix warning
Bug: angleproject:6781
Change-Id: I26af2d698f14d353832802aa7b5ce34c5a1f4b95
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3366796
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
1da7e3af
|
2021-12-21T15:55:38
|
|
Revert "Metal: Fix Webkit warnings in ANGLE build"
This reverts commit 6706799186683dd3733c4610de09d84721aa08c8.
Reason for revert: Includes pragma that disables a warning.
Original change's description:
> Metal: Fix Webkit warnings in ANGLE build
>
> Fix nullable warnings, unused functions
>
> Bug: angleproject:6781
> Change-Id: I063331e60d31a55b3cc9df0b41ace014d7d13659
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343174
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Bug: angleproject:6781
Change-Id: Id5fce2afd0381030a974871b99e8adf075677bd1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352086
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
67067991
|
2021-12-15T15:11:05
|
|
Metal: Fix Webkit warnings in ANGLE build
Fix nullable warnings, unused functions
Bug: angleproject:6781
Change-Id: I063331e60d31a55b3cc9df0b41ace014d7d13659
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343174
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
42bd4fc2
|
2021-12-10T14:58:17
|
|
Metal: add ANGLE_metal_create_context_ownership_identity.
This Metal-specific EGL extension allows a given context
and the GPU resources it allocates to be associated with
a particular task ID on the system, for system-level
bookkeeping purposes.
Bug: angleproject:6795
Change-Id: I19ee0993564169b01c4a450e63dcfacd339b98b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3335172
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
2e669566
|
2021-12-09T18:21:02
|
|
Metal: Refactors from Webkit
Mostly renaming, typos, cleanup
bug: angleproject:6787
Change-Id: Ic71c296d7849244cae2ca29b264a10cb96bca612
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3329261
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
54d4bfe5
|
2021-09-28T17:27:57
|
|
Update ANGLE Metal to Webkit at Sept 29 2021
This commit merges changes from Webkit into ANGLE upstream.
The following commits were used:
Current:
https://git.webkit.org/?p=WebKit.git;a=commit;h=e01d0bda8f4b7dc2fd834b92802d15d8c15735f
Previous:
https://git.webkit.org/?p=WebKit.git;a=commit;h=492f078198748e8ff248eea0bb979cf79e5f5adfj
The following commits were merged in from the Webkit Repository:
(Hashes from git://git.webkit.org/WebKit-https.git)
03ea44c78ce5665d4ec9add271260121cbc7bc6c
Problems with drawElements in some conditions
https://bugs.webkit.org/show_bug.cgi?id=230107
c8dc8e0c4d1109d39a62eb197b45e95132380290
ANGLE Metal: single-component swizzles do not compile
https://bugs.webkit.org/show_bug.cgi?id=230472
7285dbaaf5af15877d6c332b30ef7a4d67225460
webgl-compressed-texture-s3tc-srgb.html fails on Intel+AMD Metal
https://bugs.webkit.org/show_bug.cgi?id=229941
4c72f92967ecd2a095666fef431384c4f5f60fb4
fragcolor-fragdata-invariant.html fails
https://bugs.webkit.org/show_bug.cgi?id=223317
cd943145467f54e5928793c0dd3dfa2313c007dd
ANGLE Metal index buffer restart range cache could be maintained..
https://bugs.webkit.org/show_bug.cgi?id=227451
f075ff77e592eabd54dd659a8e13617cc5faedc8
ANGLE Metal infinities and NaNs generated with incorrect syntax
https://bugs.webkit.org/show_bug.cgi?id=229439
5862073269122f4b2d43d96d3922757557755e86
[Metal ANGLE] Fix over-autorelease of
rx::DisplayMtl::getMetalDeviceMatchingAttribute()...
<https://webkit.org/b/229128>
85f797ad31db048cb82cbafd428ef77f0b839312 ANGLE Cocoa compiles....
https://bugs.webkit.org/show_bug.cgi?id=228987
a67918ba279ad4842b6ae84a79c3f1c0cdc35ace Avoid infinite recursion...
https://bugs.webkit.org/show_bug.cgi?id=228978
d341f67de0033adcf1ec6373ace6a54b06c4a031
Cherry-pick ANGLE: Revise WebGL's shaderSource validation
https://bugs.webkit.org/show_bug.cgi?id=228951
1e2714d981e97de8234ba055570dfdf56e8b6944
3.5 MB system-wide footprint impact due to thread-locals...
https://bugs.webkit.org/show_bug.cgi?id=228240
d32e5cca34081997d32504b0b56c18b9703ff3be
Build Default Metal library offline
https://bugs.webkit.org/show_bug.cgi?id=227333
33702279faccfd4c8d1c8a6d549925f9ca9a4e8f
WebGL2 demo doesn't work due to failing compilation....
https://bugs.webkit.org/show_bug.cgi?id=226865
0a075885d242db38c4e435a6597173dc3b082173
rAF driven WebGL submits excessive amount of GPU work...
https://bugs.webkit.org/show_bug.cgi?id=227059
f38a92b3e7c17efda269caa7066e7ffe2f828e72
WebGL shader link error in iOS 15 beta: "Internal error..."
https://bugs.webkit.org/show_bug.cgi?id=227723
98d48f011d561531470d97f26a022767b5452fb7
REGRESSION (r279466): [Big Sur] webgl/1.0.3/conformance &...
https://bugs.webkit.org/show_bug.cgi?id=227596
Bug: angleproject:6471
Change-Id: I07166d0dc4b5c3579d98353485b3245b81c7b882
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3194322
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
da3db87e
|
2021-07-06T14:00:58
|
|
Upstream latest changes to Metal backend from Apple to 7/1/2021
This CL merges in the ANGLE changes between these two WebKit commits:
https://git.webkit.org/?p=WebKit.git;a=commit;h=8648b353ab1d7730438c2e08319e1a4d64982c31
https://git.webkit.org/?p=WebKit.git;a=commit;h=166e4924a52971d6a32ad48247a439b16c00e062
Include provoking vertex buffer out of bounds fix
from https://bugs.webkit.org/show_bug.cgi?id=230107
Fix bad merge of resetting of dirty bits, breaking
DepthStencilFormatsTest.DepthTextureRender test and perhaps others.
Disable GL_APPLE_clip_distance when the direct-to-Metal compiler is
active. It can not yet handle the gl_ClipDistance array.
Disable use of rectangular textures for IOSurfaces. Metal can bind
IOSurfaces to 2D textures, and this was passing all tests in the
SPIR-V Metal backend. Introducing rectangular textures breaks the
SPIR-V Metal backend, and the tests currently fail on the
direct-to-Metal backend.
Fix several bugs with ProvokingVertex, which was causing
both the SpirV and Direct backends to incorrectly draw
indices.
(https://bugs.webkit.org/show_bug.cgi?id=230107)
Skip the following tests on the Metal backend which is still failing
RobustResourceInitTestES3.BlitDepthStencilAfterClearBuffer
GLSLTest_ES3.GLVertexIDIntegerTextureDrawArrays/ES3_Metal
With these changes, angle_end2end_tests again runs to completion.
Bug: angleproject:6395
Change-Id: I3cc58f531426a95fc8f177a4ad87f56c1855a546
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3167010
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
d33a2222
|
2021-04-26T16:56:15
|
|
Upstream Apple's direct-to-Metal backend: compile libANGLE.
This change is meant to merge the metal backend changes from Apple's
direct-to-Metal backend. Taken from Kyle Piddington's CL:
https://chromium-review.googlesource.com/c/angle/angle/+/2857366/
The goal of this CL is to merge the metal backend code in a state
that compiles, but not to switch the Metal backend over to using
the direct-to-metal backend yet.
Bug: angleproject:5505
Bug: angleproject:6127
Change-Id: If6783e06e0086b3a1dd25c6f53caca5cfc96cb86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950067
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
cb6176f3
|
2020-09-29T01:08:00
|
|
Metal: Support tri-fan & line-loop with primitive restart
Triangle fan:
- If primitive restart is NOT enabled and there is no active render
pass, use Compute Shader to generate indices.
- If primitive restart is enabled, use CPU to generate indices.
Line loop:
- If draw non-instanced without primitive restart, generate and
draw only one additional last segment (fastest).
- If draw instanced, primitive restart is NOT enabled, and there is no
active render pass, use Compute Shader to generate indices (OK).
- Otherwise, use CPU to generate indices (slowest).
Also Disable OcclusionQueriesTest.ClearNotCounted failure on NVIDIA.
Bug: angleproject:2634
Bug: angleproject:5307
Change-Id: Ia5529825807a964f5fcb2a4af8844778896cd42a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2435859
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
83539557
|
2020-09-27T16:27:16
|
|
Metal: Implement texture swizzle
Only enabled on macOS 10.15 and iOS 13.0 for now.
Bug: angleproject:2634
Change-Id: Ic44a245198e32f076e429312cae844c510e864d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433333
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
|
|
0e5e6078
|
2020-09-26T23:31:24
|
|
Metal: Use MipmapNativeLevel class to store native mip lvl
This is to avoid wrong native level in Metal, for example, not taking
into account the OpenGL base level.
Bug: angleproject:2634
Change-Id: I3a7a3ac41bdbd91a47755bb4ca11bd579c182e04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433326
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bdecaf33
|
2020-08-04T20:16:27
|
|
Metal: Implement PBO.
Bug: angleproject:2634
Change-Id: I77f085227298bf46361825d1886e04830dc9987a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336558
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
91004654
|
2020-08-25T01:08:00
|
|
Metal: Implement ANGLE_robust_resource_initialization.
Bug: angleproject:4929
Bug: angleproject:2634
Change-Id: Ib99b810059420e69d939f1bbb644c2b95de62850
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2374826
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
acda9dde
|
2020-08-08T18:36:57
|
|
Metal: Implement GL_OES_texture_3D
Bug: angleproject:2634
Change-Id: I8c46493ac28fe1bbfdb29ee3a60b23076bbc4c0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336119
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
4f247baf
|
2020-08-23T22:58:56
|
|
Metal: Implement EXT_draw_buffers & ANGLE_framebuffer_blit
Bug: angleproject:2634
Change-Id: I769ca7e113e660870e9b31dafb706c313db8ac24
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332146
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
f37f1dcb
|
2020-08-02T19:38:54
|
|
Metal: Init format table using Metal-Feature-Set-Tables.pdf
- Format table is now initialized using informations from
https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf.
Previously, it was setup using gl::GenerateMinimumTextureCaps().
- This CL also adds InitializeTextureDataFunction and LoadFunctionMap to
mtl::Format. They are needed to properly initialize/convert textures
with non-normalized formats.
- This CL is prerequisite for integer & floating point format supports.
- New test: DXT1CompressedTextureTest.DXT1Alpha (this test was added
in the past but was reverted for some reasons).
Bug: angleproject:2634
Change-Id: I5eaad812909a49c4c138d0f65fd21a6a199fcb22
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332144
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
69ca1025
|
2020-07-31T02:08:09
|
|
Metal: Implement EGL_ANGLE_iosurface_client_buffer.
GL_R16UI format is not supported yet. It will be implemented once
integer textures are implemented in metal back-end.
Bug: angleproject:4847
Bug: angleproject:2634
Change-Id: I60a52c0ce327a524c74e80b18bb15978ac52065b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2329091
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
349b661d
|
2020-07-08T12:50:00
|
|
Metal: fix max point size and RGB565 renderbuffer bug.
- Max point size is set to 64, since this is the max size observed. It
is not 511 as
https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf claims.
- RGB565 is emulated on macOS by RGBA, needs to disable alpha write for
this format. This was already done for TextureMtl, but wasn't for
RenderBufferMtl.
- Also enable true non-power-of-two textures support (OES_texture_npot).
This was technically already supported, just that the extension wasn't
advertised yet.
- New Test: FramebufferFormatsTest.RGB565Renderbuffer
Bug: angleproject:4816
Bug: angleproject:2634
Change-Id: Ie7e3efb4cb29bb9a3fd706c26e2b50b42ff3f6be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281797
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fe26bae4
|
2019-10-29T18:38:53
|
|
Metal backend implementation pt 2
This is without Metal specific shader translator implemented yet.
Bug: angleproject:2634
Change-Id: I95d589442251c9ba111bd05a2dc379a36739046c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1855069
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|