mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-02-13 15:23:34 +00:00
gpu: Add SDL_PROP_GPU_DEVICE_CREATE_METAL_ALLOW_MACFAMILY1 property
(cherry picked from commit 16f2037efd)
This commit is contained in:
@@ -2321,6 +2321,15 @@ extern SDL_DECLSPEC SDL_GPUDevice * SDLCALL SDL_CreateGPUDevice(
|
||||
* increasing the API version and opting into extensions aside from the
|
||||
* minimal set SDL requires.
|
||||
*
|
||||
* With the Metal backend:
|
||||
* - `SDL_PROP_GPU_DEVICE_CREATE_METAL_ALLOW_MACFAMILY1`: By default, macOS
|
||||
* support requires what Apple calls "MTLGPUFamilyMac2" hardware or newer.
|
||||
* However, an application can set this property to true to enable support
|
||||
* for "MTLGPUFamilyMac1" hardware, if (and only if) the application does
|
||||
* not write to sRGB textures. (For history's sake: MacFamily1 also does not
|
||||
* support indirect command buffers, MSAA depth resolve, and stencil
|
||||
* resolve/feedback, but these are not exposed features in SDL_GPU.)
|
||||
*
|
||||
* \param props the properties to use.
|
||||
* \returns a GPU context on success or NULL on failure; call SDL_GetError()
|
||||
* for more information.
|
||||
@@ -2353,6 +2362,7 @@ extern SDL_DECLSPEC SDL_GPUDevice * SDLCALL SDL_CreateGPUDeviceWithProperties(
|
||||
#define SDL_PROP_GPU_DEVICE_CREATE_D3D12_SEMANTIC_NAME_STRING "SDL.gpu.device.create.d3d12.semantic"
|
||||
#define SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN "SDL.gpu.device.create.vulkan.requirehardwareacceleration"
|
||||
#define SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER "SDL.gpu.device.create.vulkan.options"
|
||||
#define SDL_PROP_GPU_DEVICE_CREATE_METAL_ALLOW_MACFAMILY1 "SDL.gpu.device.create.metal.allowmacfamily1"
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -4527,10 +4527,18 @@ static SDL_GPUDevice *METAL_CreateDevice(bool debugMode, bool preferLowPower, SD
|
||||
|
||||
#ifdef SDL_PLATFORM_MACOS
|
||||
hasHardwareSupport = true;
|
||||
bool allowMacFamily1 = SDL_GetBooleanProperty(
|
||||
props,
|
||||
SDL_PROP_GPU_DEVICE_CREATE_METAL_ALLOW_MACFAMILY1,
|
||||
false);
|
||||
if (@available(macOS 10.15, *)) {
|
||||
hasHardwareSupport = [device supportsFamily:MTLGPUFamilyMac2];
|
||||
hasHardwareSupport = allowMacFamily1 ?
|
||||
[device supportsFamily:MTLGPUFamilyMac1] :
|
||||
[device supportsFamily:MTLGPUFamilyMac2];
|
||||
} else if (@available(macOS 10.14, *)) {
|
||||
hasHardwareSupport = [device supportsFeatureSet:MTLFeatureSet_macOS_GPUFamily2_v1];
|
||||
hasHardwareSupport = allowMacFamily1 ?
|
||||
[device supportsFeatureSet:MTLFeatureSet_macOS_GPUFamily1_v4] :
|
||||
[device supportsFeatureSet:MTLFeatureSet_macOS_GPUFamily2_v1];
|
||||
}
|
||||
#elif defined(SDL_PLATFORM_VISIONOS)
|
||||
hasHardwareSupport = true;
|
||||
|
||||
Reference in New Issue
Block a user