godot/drivers/metal
clayjohn 35100396e4 Validate varying count when compiling shaders
This avoids crashing on devices when a number of varyings greater than the device limit is used.

For now this accurately prints an error when compiling the shader, but the error text only pops up in the editor if the number of user varyings is above the limit.
2025-02-13 15:07:15 -08:00
..
inflection_map.h Metal: Use retained references; shared pixel format code 2025-01-12 07:11:22 +11:00
metal_device_properties.h Validate varying count when compiling shaders 2025-02-13 15:07:15 -08:00
metal_device_properties.mm Validate varying count when compiling shaders 2025-02-13 15:07:15 -08:00
metal_objects.h Metal: enable GPU buffer address support 2025-01-16 06:10:50 +11:00
metal_objects.mm Metal: Use retained references; shared pixel format code 2025-01-12 07:11:22 +11:00
metal_utils.h Style: Enforce AllowShortFunctionsOnASingleLine 2025-01-02 10:09:41 -06:00
pixel_formats.h Metal: Use retained references; shared pixel format code 2025-01-12 07:11:22 +11:00
pixel_formats.mm Metal: Use retained references; shared pixel format code 2025-01-12 07:11:22 +11:00
README.md Add Metal support for macOS (arm64) and iOS 2024-08-20 12:11:06 +02:00
rendering_context_driver_metal.h Metal: Use retained references; shared pixel format code 2025-01-12 07:11:22 +11:00
rendering_context_driver_metal.mm Metal: Use retained references; shared pixel format code 2025-01-12 07:11:22 +11:00
rendering_device_driver_metal.h Implement Buffer Device Address for Rendering Device Vulkan and DirectX12 2025-01-13 22:43:29 -08:00
rendering_device_driver_metal.mm Validate varying count when compiling shaders 2025-02-13 15:07:15 -08:00
SCsub SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00

Metal Rendering Device

This document aims to describe the Metal rendering device implementation in Godot.

Future work / ideas

  • Use placement heaps
  • Explicit hazard tracking
  • MetalFX upscaling support?

Acknowledgments

The Metal rendering owes a lot to the work of the MoltenVK project, which is a Vulkan implementation on top of Metal. In accordance with the Apache 2.0 license, the following copyright notices have been included where applicable:

/**************************************************************************/
/*                                                                        */
/* Portions of this code were derived from MoltenVK.                      */
/*                                                                        */
/* Copyright (c) 2015-2023 The Brenwill Workshop Ltd.                     */
/* (http://www.brenwill.com)                                              */
/*                                                                        */
/* Licensed under the Apache License, Version 2.0 (the "License");        */
/* you may not use this file except in compliance with the License.       */
/* You may obtain a copy of the License at                                */
/*                                                                        */
/*     http://www.apache.org/licenses/LICENSE-2.0                         */
/*                                                                        */
/* Unless required by applicable law or agreed to in writing, software    */
/* distributed under the License is distributed on an "AS IS" BASIS,      */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        */
/* implied. See the License for the specific language governing           */
/* permissions and limitations under the License.                         */
/**************************************************************************/