SDL_GPUDevice * SDL_CreateGPUDeviceWithProperties(SDL_PropertiesID props);
| SDL_PropertiesID | props | 使用するプロパティグループ |
これらのプロパティに対応している:
SDL_PROP_GPU_DEVICE_CREATE_DEBUGMODE_BOOLEAN: デバッグモードプロパティと検証を有効にする. デフォルトは真
SDL_PROP_GPU_DEVICE_CREATE_PREFERLOWPOWER_BOOLEAN: 最大GPUパフォーマンスよりも省電力を優先する. デフォルトは偽
SDL_PROP_GPU_DEVICE_CREATE_VERBOSE_BOOLEAN: デバイス生成時にデバッグ時に有用なログを自動的に出力する. デフォルトは真
SDL_PROP_GPU_DEVICE_CREATE_NAME_STRING: 特定のドライバを使用したい場合のGPUドライバの名前
SDL_PROP_GPU_DEVICE_CREATE_FEATURE_CLIP_DISTANCE_BOOLEAN: VulkanデバイスのshaderClipDistance機能.
偽のとき, シェーダコードの距離によるクリッピング(GLSLのgl_ClipDistance[]組込変数, HLSLのSV_ClipDistance0/1セマンティクス, Metalの[[clip_distance]]属性)が無効になる.
この機能を無効化すると一部の古いAndroid端末でアプリケーションが実行できるようになる.
デフォルトは真
SDL_PROP_GPU_DEVICE_CREATE_FEATURE_DEPTH_CLAMPING_BOOLEAN: VulkanデバイスのdepthClamp機能.
偽のとき, 深度クランピングが無効になり, SDL_GPURasterizerStateのenable_depth_clipには常に真を設定することが必要になる.
この機能を無効化すると一部の古いAndroid端末でアプリケーションが実行できるようになる.
デフォルトは真
SDL_PROP_GPU_DEVICE_CREATE_FEATURE_INDIRECT_DRAW_FIRST_INSTANCE_BOOLEAN: VulkanデバイスのdrawIndirectFirstInstance機能.
偽のとき, SDL_GPUIndirectDrawCommandのfirst_instance引数には必ず0が設定される.
この機能を無効化すると一部の古いAndroid端末でアプリケーションが実行できるようになる.
デフォルトは真
SDL_PROP_GPU_DEVICE_CREATE_FEATURE_ANISOTROPY_BOOLEAN: VulkanデバイスのsamplerAnisotropy機能.
偽のとき, SDL_GPUSamplerCreateInfoのenable_anisotropyには必ず偽が設定される.
この機能を無効化すると一部の古いAndroid端末でアプリケーションが実行できるようになる.
デフォルトは真
これらのシェーダ形式プロパティに対応している:
SDL_PROP_GPU_DEVICE_CREATE_SHADERS_PRIVATE_BOOLEAN: アプリケーションはNDA(機密保持契約された)シェーダを提供できる
SDL_PROP_GPU_DEVICE_CREATE_SHADERS_SPIRV_BOOLEAN: アプリケーションは可能ならばVulkanのSPIR-Vシェーダを提供できる
SDL_PROP_GPU_DEVICE_CREATE_SHADERS_DXBC_BOOLEAN: アプリケーションは可能ならばD3D12のDXBC SM5_1シェーダを提供できる
SDL_PROP_GPU_DEVICE_CREATE_SHADERS_DXIL_BOOLEAN: アプリケーションは可能ならばD3D12のDXIL SM6_0シェーダを提供できる
SDL_PROP_GPU_DEVICE_CREATE_SHADERS_MSL_BOOLEAN: アプリケーションは可能ならばMetalのMSLシェーダを提供できる
SDL_PROP_GPU_DEVICE_CREATE_SHADERS_METALLIB_BOOLEAN: アプリケーションは可能ならばMetalのプリコンパイルされたmetallibシェーダを提供できる
バックエンドがD3D12の場合:
SDL_PROP_GPU_DEVICE_CREATE_D3D12_SEMANTIC_NAME_STRING: 全ての頂点セマンティクスで使用する接頭辞. デフォルトは"TEXCOORD"
SDL_PROP_GPU_DEVICE_CREATE_D3D12_ALLOW_FEWER_RESOURCE_SLOTS_BOOLEAN: デフォルトでは, D3D12対応にはResourcing Binding Tier 2が必要である.
しかし, もし(かつこの場合のみ)アプリケーションが全てのシェーダステージに渡り8以下のストレージリソースしか使用しない場合, アプリケーションはこのプロパティを真にしてTier 1対応を有効にできる.
現時点では, このプロパティはIntel HaswellとBroadwell GPUを対象とするとき有用であり, 他のハードウェアはTier 2 Resource Bindingにも対応しているかD3D12に全く対応していない.
デフォルトは偽
SDL_PROP_GPU_DEVICE_CREATE_D3D12_AGILITY_SDK_VERSION_NUMBER: デフォルトでは一部の機能のチェックはWindows 11の場合のみ可能である.
これとSDL_PROP_GPU_DEVICE_CREATE_D3D12_AGILITY_SDK_PATH_STRINGを設定してD3D12 Agility SDKからD3D12Core.dllをベンダリングすると, 古い環境でもこのチェック機能を使用できる.
設定するバージョンは, DLLのものと一致している必要がある.
SDL_PROP_GPU_DEVICE_CREATE_D3D12_AGILITY_SDK_PATH_STRING: デフォルトでは一部の機能のチェックはWindows 11の場合のみ可能である.
これとSDL_PROP_GPU_DEVICE_CREATE_D3D12_AGILITY_SDK_VERSION_NUMBERを設定してD3D12 Agility SDKからD3D12Core.dllをベンダリングすると, 古い環境でもこのチェック機能を使用できる.
設定するパスはアプリケーションの実行パスからの相対パスの必要がある.
DLLとexeを同じディレクトリに配置しないこと. Microsoftはそれを強く推奨している.
バックエンドがVulkanの場合:
SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN: デフォルトでは, ソフトウェアレンダラ(例えばLavapipe Mesaドライバ)を含む全ての種類のVulkanデバイスが列挙される.
これはアプリケーションがSDL_GPUを必要としているが, 自身でフォールバックレンダラ(例えばOpenGLレンダラ)を与えられる場合, このプロパティに真を設定するとよい.
デフォルトは偽
SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER: デバイスの生成で処理されるSDL_GPUVulkanOptions構造体へのポインタ.
これにより, APIバージョンやSDLの最小条件とは別に拡張機能を選択するなどのVulkan固有のオプションの設定を行える
バックエンドがMetalの場合:
SDL_PROP_GPU_DEVICE_CREATE_METAL_ALLOW_MACFAMILY1_BOOLEAN: デフォルトでは, macOSの対応はAppleが"MTLGPUFamilyMac2"と呼ぶものか, それよりも新しいハードウェアを求める.
しかし, もし(かつこの場合のみ)アプリケーションがsRGBテクスチャの書き込みを行わない場合, アプリケーションがこのプロパティに真を設定すると, "MTLGPUFamilyMac1"ハードウェアの対応が有効になる.
(参考: MacFamily1は間接コマンドバッファ, MSAA深度resolve, ステンシルresolve/feedbackに対応していないが, これらはSDL_GPUが公開している機能ではない.)