
Metal uses a specific shading language based on C++14, implemented using Clang and LLVM. Metal improves the capabilities of GPGPU programming by using compute shaders. Lastly, render states are pre-computed beforehand, allowing the GPU driver to know in advance how to configure and optimize the render pipeline before command execution. Additionally, command encoding is CPU independent thus applications can encode commands to each CPU thread independently. The application controls when to wait for the execution to complete thus allowing application developers to increase throughput by encoding other commands while commands are executed on the GPU or save power by explicitly waiting for GPU execution to complete. Commands are encoded beforehand and then submitted to the GPU for asynchronous execution. Metal aims to provide low-overhead access to the GPU. Since MSL is C++-based, you will find it familiar and easy to use." Features According to Apple promotional materials: "MSL is a single, unified language that allows tighter integration between the graphics and compute programs. Full-blown GPU execution is controlled via the Metal Shading Language. Metal is an object-oriented API that can be invoked using the Swift, Objective-C or C++17 programming languages. It can be compared to low-level APIs on other platforms such as Vulkan and DirectX 12. It is intended to improve performance by offering low-level access to the GPU hardware for apps on iOS, iPadOS, macOS, and tvOS. Metal combines functions similar to OpenGL and OpenCL in one API. Metal is a low-level, low-overhead hardware-accelerated 3D graphic and compute shader API created by Apple. Shading language: C++14, Runtime/API: Objective-C
