summaryrefslogtreecommitdiffstats
path: root/main/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main/main.cpp')
-rw-r--r--main/main.cpp73
1 files changed, 61 insertions, 12 deletions
diff --git a/main/main.cpp b/main/main.cpp
index ef78f45496..350b8606b9 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1734,15 +1734,27 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
{
String driver_hints = "";
+ String driver_hints_with_d3d12 = "";
+
+ {
+ Vector<String> driver_hints_arr;
#ifdef VULKAN_ENABLED
- driver_hints = "vulkan";
+ driver_hints_arr.push_back("vulkan");
+#endif
+ driver_hints = String(",").join(driver_hints_arr);
+
+#ifdef D3D12_ENABLED
+ driver_hints_arr.push_back("d3d12");
#endif
+ driver_hints_with_d3d12 = String(",").join(driver_hints_arr);
+ }
String default_driver = driver_hints.get_slice(",", 0);
+ String default_driver_with_d3d12 = driver_hints_with_d3d12.get_slice(",", 0);
// For now everything defaults to vulkan when available. This can change in future updates.
GLOBAL_DEF_RST_NOVAL("rendering/rendering_device/driver", default_driver);
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.windows", PROPERTY_HINT_ENUM, driver_hints), default_driver);
+ GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.windows", PROPERTY_HINT_ENUM, driver_hints_with_d3d12), default_driver_with_d3d12);
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.linuxbsd", PROPERTY_HINT_ENUM, driver_hints), default_driver);
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.android", PROPERTY_HINT_ENUM, driver_hints), default_driver);
GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.ios", PROPERTY_HINT_ENUM, driver_hints), default_driver);
@@ -1785,13 +1797,47 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
}
// AMD GPUs.
- BLOCK_DEVICE("ATI", "AMD Radeon(TM) R2 Graphics");
- BLOCK_DEVICE("ATI", "AMD Radeon(TM) R3 Graphics");
- BLOCK_DEVICE("ATI", "AMD Radeon HD 8400 / R3 Series");
- BLOCK_DEVICE("ATI", "AMD Radeon R5 M200 Series");
- BLOCK_DEVICE("ATI", "AMD Radeon R5 M230 Series");
- BLOCK_DEVICE("ATI", "AMD Radeon R5 M255");
- BLOCK_DEVICE("AMD", "AMD Radeon (TM) R5 M330");
+ BLOCK_DEVICE("ATI", "Radeon 9"); // ATI Radeon 9000 Series
+ BLOCK_DEVICE("ATI", "Radeon X"); // ATI Radeon X500-X2000 Series
+ BLOCK_DEVICE("ATI", "Radeon HD 2"); // AMD/ATI (Mobility) Radeon HD 2xxx Series
+ BLOCK_DEVICE("ATI", "Radeon HD 3"); // AMD/ATI (Mobility) Radeon HD 3xxx Series
+ BLOCK_DEVICE("ATI", "Radeon HD 4"); // AMD/ATI (Mobility) Radeon HD 4xxx Series
+ BLOCK_DEVICE("ATI", "Radeon HD 5"); // AMD/ATI (Mobility) Radeon HD 5xxx Series
+ BLOCK_DEVICE("ATI", "Radeon HD 6"); // AMD/ATI (Mobility) Radeon HD 6xxx Series
+ BLOCK_DEVICE("ATI", "Radeon HD 7"); // AMD/ATI (Mobility) Radeon HD 7xxx Series
+ BLOCK_DEVICE("ATI", "Radeon HD 8"); // AMD/ATI (Mobility) Radeon HD 8xxx Series
+ BLOCK_DEVICE("ATI", "Radeon(TM) R2 Graphics"); // APUs
+ BLOCK_DEVICE("ATI", "Radeon(TM) R3 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon(TM) R4 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon(TM) R5 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon(TM) R6 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon(TM) R7 Graphics");
+ BLOCK_DEVICE("AMD", "Radeon(TM) R7 Graphics");
+ BLOCK_DEVICE("AMD", "Radeon(TM) R8 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon R5 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon R6 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon R7 Graphics");
+ BLOCK_DEVICE("AMD", "Radeon R7 Graphics");
+ BLOCK_DEVICE("AMD", "Radeon R8 Graphics");
+ BLOCK_DEVICE("ATI", "Radeon R5 2"); // Rx 2xx Series
+ BLOCK_DEVICE("ATI", "Radeon R7 2");
+ BLOCK_DEVICE("ATI", "Radeon R9 2");
+ BLOCK_DEVICE("ATI", "Radeon R5 M2"); // Rx M2xx Series
+ BLOCK_DEVICE("ATI", "Radeon R7 M2");
+ BLOCK_DEVICE("ATI", "Radeon R9 M2");
+ BLOCK_DEVICE("ATI", "Radeon (TM) R9 Fury");
+ BLOCK_DEVICE("ATI", "Radeon (TM) R5 3"); // Rx 3xx Series
+ BLOCK_DEVICE("AMD", "Radeon (TM) R5 3");
+ BLOCK_DEVICE("ATI", "Radeon (TM) R7 3");
+ BLOCK_DEVICE("AMD", "Radeon (TM) R7 3");
+ BLOCK_DEVICE("ATI", "Radeon (TM) R9 3");
+ BLOCK_DEVICE("AMD", "Radeon (TM) R9 3");
+ BLOCK_DEVICE("ATI", "Radeon (TM) R5 M3"); // Rx M3xx Series
+ BLOCK_DEVICE("AMD", "Radeon (TM) R5 M3");
+ BLOCK_DEVICE("ATI", "Radeon (TM) R7 M3");
+ BLOCK_DEVICE("AMD", "Radeon (TM) R7 M3");
+ BLOCK_DEVICE("ATI", "Radeon (TM) R9 M3");
+ BLOCK_DEVICE("AMD", "Radeon (TM) R9 M3");
#undef BLOCK_DEVICE
@@ -1799,7 +1845,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
}
// Start with RenderingDevice-based backends. Should be included if any RD driver present.
-#ifdef VULKAN_ENABLED
+#if defined(VULKAN_ENABLED) || defined(D3D12_ENABLED)
renderer_hints = "forward_plus,mobile";
default_renderer_mobile = "mobile";
#endif
@@ -1879,11 +1925,14 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
// Now validate whether the selected driver matches with the renderer.
bool valid_combination = false;
Vector<String> available_drivers;
-#ifdef VULKAN_ENABLED
if (rendering_method == "forward_plus" || rendering_method == "mobile") {
+#ifdef VULKAN_ENABLED
available_drivers.push_back("vulkan");
- }
#endif
+#ifdef D3D12_ENABLED
+ available_drivers.push_back("d3d12");
+#endif
+ }
#ifdef GLES3_ENABLED
if (rendering_method == "gl_compatibility") {
available_drivers.push_back("opengl3");