mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-18 09:18:14 +00:00
Set GPU properties for maximum hardware compatibility
Resolves https://github.com/libsdl-org/SDL/issues/13928
This commit is contained in:
@@ -2261,12 +2261,12 @@ extern SDL_DECLSPEC SDL_GPUDevice * SDLCALL SDL_CreateGPUDevice(
|
|||||||
* use for all vertex semantics, default is "TEXCOORD".
|
* use for all vertex semantics, default is "TEXCOORD".
|
||||||
* - `SDL_PROP_GPU_DEVICE_CREATE_D3D12_ALLOW_FEWER_RESOURCE_SLOTS_BOOLEAN`: By
|
* - `SDL_PROP_GPU_DEVICE_CREATE_D3D12_ALLOW_FEWER_RESOURCE_SLOTS_BOOLEAN`: By
|
||||||
* default, Resourcing Binding Tier 2 is required for D3D12 support.
|
* default, Resourcing Binding Tier 2 is required for D3D12 support.
|
||||||
* However, an application can enable this property to enable Tier 1
|
* However, an application can set this property to true to enable Tier 1
|
||||||
* support, if (and only if) the application uses 8 or fewer storage
|
* support, if (and only if) the application uses 8 or fewer storage
|
||||||
* resources across all shader stages. As of writing, this property is
|
* resources across all shader stages. As of writing, this property is
|
||||||
* useful for targeting Intel Haswell and Broadwell GPUs; other hardware
|
* useful for targeting Intel Haswell and Broadwell GPUs; other hardware
|
||||||
* either supports Tier 2 Resource Binding or does not support D3D12 in any
|
* either supports Tier 2 Resource Binding or does not support D3D12 in any
|
||||||
* capacity.
|
* capacity. Defaults to false.
|
||||||
*
|
*
|
||||||
* With the Vulkan renderer:
|
* With the Vulkan renderer:
|
||||||
*
|
*
|
||||||
|
@@ -1199,6 +1199,25 @@ static bool GPU_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_P
|
|||||||
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_DEBUGMODE_BOOLEAN, debug);
|
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_DEBUGMODE_BOOLEAN, debug);
|
||||||
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_PREFERLOWPOWER_BOOLEAN, lowpower);
|
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_PREFERLOWPOWER_BOOLEAN, lowpower);
|
||||||
|
|
||||||
|
// Set hints for the greatest hardware compatibility
|
||||||
|
// This property allows using the renderer on Intel Haswell and Broadwell GPUs.
|
||||||
|
if (!SDL_HasProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_D3D12_ALLOW_FEWER_RESOURCE_SLOTS_BOOLEAN)) {
|
||||||
|
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_D3D12_ALLOW_FEWER_RESOURCE_SLOTS_BOOLEAN, true);
|
||||||
|
}
|
||||||
|
// These properties allow using the renderer on more Android devices.
|
||||||
|
if (!SDL_HasProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_SHADERCLIPDISTANCE_BOOLEAN)) {
|
||||||
|
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_SHADERCLIPDISTANCE_BOOLEAN, false);
|
||||||
|
}
|
||||||
|
if (!SDL_HasProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_DEPTHCLAMP_BOOLEAN)) {
|
||||||
|
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_DEPTHCLAMP_BOOLEAN, false);
|
||||||
|
}
|
||||||
|
if (!SDL_HasProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_DRAWINDIRECTFIRST_BOOLEAN)) {
|
||||||
|
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_DRAWINDIRECTFIRST_BOOLEAN, false);
|
||||||
|
}
|
||||||
|
if (!SDL_HasProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_SAMPLERANISOTROPY_BOOLEAN)) {
|
||||||
|
SDL_SetBooleanProperty(create_props, SDL_PROP_GPU_DEVICE_CREATE_VULKAN_SHADERCLIPDISTANCE_BOOLEAN, false);
|
||||||
|
}
|
||||||
|
|
||||||
GPU_FillSupportedShaderFormats(create_props);
|
GPU_FillSupportedShaderFormats(create_props);
|
||||||
data->device = SDL_CreateGPUDeviceWithProperties(create_props);
|
data->device = SDL_CreateGPUDeviceWithProperties(create_props);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user