src/libANGLE/renderer/metal/shaders/gen_mtl_internal_shaders.py


Log

Author Commit Date CI Message
Alexey Knyazev e6c8f06a 2024-11-29T00:00:00 Metal: Remove line markers from internal shaders Line markers generated by Clang preprocessor are platform-dependent and cause extra git noise. Metal shader compiler does not need them anyway. Fixed: angleproject:382564808 Change-Id: I792a523ac9269a097c7f52a4cd64a24ed6145567 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6074518 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang db38707a 2023-10-19T18:08:51 Metal: Compile mtllib at build time. Reworks gen_mtl_internal_shaders.py to only generate the combined metal source file, mtl_internal_shaders_autogen.metal. metallibs are now compiled at build time using gn actions. This allows the Chrome and WebKit build process to use the same code for loading the builtin shaders even though they compile them in different ways. We now only build the mtllib for the OS we're currently building for. Bug: chromium:1385510 Change-Id: Ie3b4f66c48a7e0eccd5fe664f988e407f452795c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4583134 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Kimmo Kinnunen 34a99db4 2023-08-03T16:46:36 Metal: Check the full generated default shader in Add the default MSL shader text in the repo. Fix an error with include path setup to make the script runnable from an arbitrary directory, for WebKit purposes. WebKit would compile that to a compile-specific metallib and then attach that metallib to the compilation as .h. Current upstream behavior is to compile the metallib once few platforms. Bug: angleproject:8284 Change-Id: Icbf7c0055718496cb380fad0b73d5b9b0d0abb0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4748400 Commit-Queue: Kenneth Russell <kbr@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Geoff Lang 9aadc7aa 2023-07-13T11:44:51 Metal: Require MSL 2.1. We had previously shipped both MSL 2.0 and 2.1 shaders to support MacOS 10.13 (MSL 2.0 only) while also supporting the stencil blit fast path that MSL 2.1 provides with the has_shader_stencil_output feature. Each configuration of precompiled shaders is ~300kb so we will drop support for MacOS 10.13 and only ship the MSL 2.1 shaders. Rework of the disablement for NVIDIA and GPU family 1 to be more readable. The features themselves are always true because "disable on NVIDIA" is always true and the check for "is NVIDIA" is moved to the code which fails the initialization. Bug: angleproject:8258 Change-Id: Icc8c69540e43fd2b0b237fffbfe170bb3422903f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4681130 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 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>
Geoff Lang 7f04dc7d 2023-04-19T15:05:47 Reland: Metal: Embed precompiled default shaders. Compile all builtin shaders to an embedded mtllib to avoid the overhead of compiling them at startup. This reland adds ios simulator precompiled shaders. Bug: chromium:1385510 Change-Id: Ic8585ffe566875e705f2fb00f8e665e8a80797f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4512494 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop d925c5c9 2023-05-04T16:16:11 Revert "Metal: Embed precompiled default shaders." This reverts commit 9f6c9f6630b63f541f5fd875aef87ce2a26fd618. Reason for revert: iOS Metal tests broken downstream: https://ci.chromium.org/ui/p/chromium/builders/ci/ios-blink-dbg-fyi/4972/overview Original change's description: > Metal: Embed precompiled default shaders. > > Compile all builtin shaders to an embedded mtllib to avoid the overhead > of compiling them at startup. > > Bug: chromium:1385510 > Change-Id: I1c31ae0088babae01a9e42d63b3c2c30b65f4476 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4450126 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Quyen Le <lehoangquyen@chromium.org> > Reviewed-by: Kenneth Russell <kbr@chromium.org> Bug: angleproject:8152 Bug: chromium:1385510, chromium:1441754 Change-Id: I7f253f7aa14117b93d1e09ed61db0c4563fc9c3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4508064 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 9f6c9f66 2023-04-19T15:05:47 Metal: Embed precompiled default shaders. Compile all builtin shaders to an embedded mtllib to avoid the overhead of compiling them at startup. Bug: chromium:1385510 Change-Id: I1c31ae0088babae01a9e42d63b3c2c30b65f4476 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4450126 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Kimmo Kinnunen 6937ea98 2022-09-08T14:15:10 Use base name of the generator script in various generated files Increases compiler cache hits especially in cases where the file is run during build. Bug: angleproject:7642 Change-Id: I769dae2d7cca2cf1e238531f4cb356bad41b06dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3880323 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Gregg Tavares ee1d3cf7 2021-12-10T12:29:16 Metal: Integrate Metal Binary Shader generation Bug: angleproject:6801 Change-Id: I2eb7072ed342f2b4cb5d9ee50ca9db75c5c7df69 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3331206 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kyle Piddington <kpiddington@apple.com> Commit-Queue: Gregg Tavares <gman@chromium.org>
Kenneth Russell 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>
Cody Northrop 14f8918c 2021-04-16T09:17:29 Migrate more scripts to python3 Test: python3 scripts/run_code_generation.py Bug: angleproject:5707 Change-Id: I5abae69c1c6bf03cc418f10beaabc80288fa1c94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2828979 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 2e9161e4 2021-01-12T11:29:29 Vulkan: Add YUV G8_B8_R8_3PLANE_420_UNORM format. Bug: angleproject:5438 Change-Id: I525a51256a5ee83fa69c8705aa90790fb32a6602 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2623813 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 188d0fe6 2020-10-18T14:33:28 Make Metal shader-gen cross platform. This switches the generator script use the hermetic Clang instead of the system gcc/clang. It also uses common Python routines to manage the temporary file so that it works consistently on Win. Bug: angleproject:5186 Change-Id: I52906d1a708db8b925061a9d5578b3d54a6dc862 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483464 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Le Hoang Quyen <le.hoang.q@gmail.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 5b7c5b34 2020-10-18T17:19:51 Metal: don't precompile default shaders. Default shaders will be compiled from source at runtime, this is because they depend on ANGLE format table and there is currently no way to pre-compile metal shaders in a cross-platform manner. Using default shaders' source instead of pre-compiled form seems to reduce the libGLESv2's binary size. However, the startup time will be increased due to runtime cost of compilation, thus the compilation now will be done asynchronously. Bug: angleproject:5186 Change-Id: I0e1987d6c76692d5169255736fbb8e215185c33b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482405 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Le Hoang Quyen e0eb7d2e 2020-09-21T03:19:07 Metal: Fix wrong FormatID enum order used by PBO autogen shaders. FormatID_autogen.h's enums' order was altered by CL https://chromium-review.googlesource.com/c/angle/angle/+/2413165 However, Metal default shaders relied on old order thus the result PBO related computation based on enum value has become wrong. This CL reuse gen_angle_format_table.gen_enum_string() function to generate format enums for both - src/libANGLE/renderer/FormatID_autogen.h (used by C++) - src/libANGLE/renderer/metal/shaders/format_autogen.h (used by Metal default shaders) Bug: angleproject:2634 Change-Id: I52fad168d1932e0386dcf789574f06d341dbd9c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2418500 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Le Hoang Quyen 63c91a3b 2020-08-04T20:09:05 Metal: autogen for PBO related shaders. Bug: angleproject:2634 Change-Id: I36e5a6a4cb11d82f666c410b33fdb39ad35a5e80 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336557 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 966a62cb 2020-08-04T12:08:00 Metal: autogen for EXT_occlusion_query_boolean. Bug: angleproject:2634 Change-Id: I4d6a6378a269ea9e38e9282d6dbfa45e4e3d4d5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336126 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 7ce9947d 2020-08-04T12:08:00 Metal: autogen for 3D texture's mipmap generating shader. Bug: angleproject:4921 Bug: angleproject:2634 Change-Id: I5c379d750114e2ca1c5dd0203e94bb63dac1e0bf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336125 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Le Hoang Quyen defeda29 2020-08-04T12:08:00 Metal: autogen for EXT_draw_buffers & ANGLE_framebuffer_blit Bug: angleproject:2634 Change-Id: I8f8ee91fb673301b8bd97c359ee39c411e2bf8da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336124 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Le Hoang Quyen 9385eb35 2020-08-02T23:21:54 Metal: Generate default shaders to separate files. Generate default shaders' OS specific versions to separate files to avoid mtl_default_shaders_autogen.inc becoming too big. Bug: angleproject:2634 Change-Id: Ie2a39971ec46c36ce13bf5cb72f998f2cbc0ab64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332145 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Le Hoang Quyen 3e0b61a9 2020-07-06T01:18:22 Metal: Compile default shader source files separately. - Previously all default shader files were included in one file named master_source.metal. - Now they will be compiled separately and link together to generate binary shader. - Also generate a debug binary variant that will be used in debug build. Bug: angleproject:2634 Change-Id: Ic040835c4a729666e73afeba52f5be839b632396 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281784 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 9277ee74 2020-07-06T12:40:58 Metal: Implement MSAA default framebuffer. GL_SAMPLE_COVERAGE_VALUE is implemented by inserting gl_SampleMask writing logic to fragment shader. New test added: MultisampleTest.ContentPresevedAfterInterruption. - Skip on D3D11 (Bug: angleproject:4609) Bug: angleproject:2634 Change-Id: Ib44daf0baccc36ea320596d81713156047da059c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281783 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Quyen 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>
Le Quyen 25301999 2019-10-11T14:49:00 Metal implementation pt 1: autogen resources Autogen format table and internal shaders for Metal. Bug: angleproject:2634 Change-Id: I4d81fcd17a0e9959ba9c38a250acc7abb168f54c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1855067 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>