gpu: Add SDL_PROP_GPU_DEVICE_CREATE_METAL_ALLOW_MACFAMILY1 property
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
|
* increasing the API version and opting into extensions aside from the
|
||||||
* minimal set SDL requires.
|
* 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.
|
* \param props the properties to use.
|
||||||
* \returns a GPU context on success or NULL on failure; call SDL_GetError()
|
* \returns a GPU context on success or NULL on failure; call SDL_GetError()
|
||||||
* for more information.
|
* 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_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_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_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
|
#ifdef SDL_PLATFORM_MACOS
|
||||||
hasHardwareSupport = true;
|
hasHardwareSupport = true;
|
||||||
|
bool allowMacFamily1 = SDL_GetBooleanProperty(
|
||||||
|
props,
|
||||||
|
SDL_PROP_GPU_DEVICE_CREATE_METAL_ALLOW_MACFAMILY1,
|
||||||
|
false);
|
||||||
if (@available(macOS 10.15, *)) {
|
if (@available(macOS 10.15, *)) {
|
||||||
hasHardwareSupport = [device supportsFamily:MTLGPUFamilyMac2];
|
hasHardwareSupport = allowMacFamily1 ?
|
||||||
|
[device supportsFamily:MTLGPUFamilyMac1] :
|
||||||
|
[device supportsFamily:MTLGPUFamilyMac2];
|
||||||
} else if (@available(macOS 10.14, *)) {
|
} 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)
|
#elif defined(SDL_PLATFORM_VISIONOS)
|
||||||
hasHardwareSupport = true;
|
hasHardwareSupport = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user