Skip to content

Commit 87bb5ab

Browse files
committed
Merge pull request #108919 from KeyboardDanni/d3d12_init_shader_model_check
D3D12: Fix shader model check, initialization error handling
2 parents bee0e99 + bf6629a commit 87bb5ab

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

drivers/d3d12/rendering_device_driver_d3d12.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5841,7 +5841,7 @@ Error RenderingDeviceDriverD3D12::_check_capabilities() {
58415841

58425842
#define D3D_SHADER_MODEL_TO_STRING(m_sm) vformat("%d.%d", (m_sm >> 4), (m_sm & 0xf))
58435843

5844-
ERR_FAIL_COND_V_MSG(!shader_capabilities.shader_model, ERR_UNAVAILABLE,
5844+
ERR_FAIL_COND_V_MSG(shader_capabilities.shader_model < SMS_TO_CHECK[ARRAY_SIZE(SMS_TO_CHECK) - 1], ERR_UNAVAILABLE,
58455845
vformat("No support for any of the suitable shader models (%s-%s) has been found.", D3D_SHADER_MODEL_TO_STRING(SMS_TO_CHECK[ARRAY_SIZE(SMS_TO_CHECK) - 1]), D3D_SHADER_MODEL_TO_STRING(SMS_TO_CHECK[0])));
58465846

58475847
print_verbose("- Shader:");
@@ -6060,6 +6060,8 @@ Error RenderingDeviceDriverD3D12::_initialize_command_signatures() {
60606060
}
60616061

60626062
Error RenderingDeviceDriverD3D12::initialize(uint32_t p_device_index, uint32_t p_frame_count) {
6063+
glsl_type_singleton_init_or_ref();
6064+
60636065
context_device = context_driver->device_get(p_device_index);
60646066
adapter = context_driver->create_adapter(p_device_index);
60656067
ERR_FAIL_NULL_V(adapter, ERR_CANT_CREATE);
@@ -6089,7 +6091,5 @@ Error RenderingDeviceDriverD3D12::initialize(uint32_t p_device_index, uint32_t p
60896091
err = _initialize_command_signatures();
60906092
ERR_FAIL_COND_V(err != OK, ERR_CANT_CREATE);
60916093

6092-
glsl_type_singleton_init_or_ref();
6093-
60946094
return OK;
60956095
}

servers/rendering/rendering_device.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6708,7 +6708,6 @@ Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServ
67086708
}
67096709

67106710
frame = 0;
6711-
frames.resize(frame_count);
67126711
max_timestamp_query_elements = GLOBAL_GET("debug/settings/profiler/max_timestamp_query_elements");
67136712

67146713
device = context->device_get(device_index);
@@ -6777,6 +6776,8 @@ Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServ
67776776
// Use the processor count as the max amount of transfer workers that can be created.
67786777
transfer_worker_pool_max_size = OS::get_singleton()->get_processor_count();
67796778

6779+
frames.resize(frame_count);
6780+
67806781
// Create data for all the frames.
67816782
for (uint32_t i = 0; i < frames.size(); i++) {
67826783
frames[i].index = 0;

servers/rendering/rendering_device_graph.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1575,7 +1575,9 @@ void RenderingDeviceGraph::initialize(RDD *p_driver, RenderingContextDriver::Dev
15751575
}
15761576

15771577
void RenderingDeviceGraph::finalize() {
1578-
_wait_for_secondary_command_buffer_tasks();
1578+
if (!frames.is_empty()) {
1579+
_wait_for_secondary_command_buffer_tasks();
1580+
}
15791581

15801582
for (Frame &f : frames) {
15811583
for (SecondaryCommandBuffer &secondary : f.secondary_command_buffers) {

0 commit comments

Comments
 (0)