Skip to content

Commit 533c616

Browse files
authored
Merge pull request #98391 from RandomShaper/rd_thread_switch
Implement thread ownership change for RenderingDevice
2 parents b3bcb2d + d5d509b commit 533c616

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

servers/rendering/rendering_device.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7260,6 +7260,10 @@ void RenderingDevice::_bind_methods() {
72607260
BIND_ENUM_CONSTANT(DEBUG_PASS);
72617261
}
72627262

7263+
void RenderingDevice::make_current() {
7264+
render_thread_id = Thread::get_caller_id();
7265+
}
7266+
72637267
RenderingDevice::~RenderingDevice() {
72647268
finalize();
72657269

servers/rendering/rendering_device.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,6 +1496,8 @@ class RenderingDevice : public RenderingDeviceCommons {
14961496

14971497
static RenderingDevice *get_singleton();
14981498

1499+
void make_current();
1500+
14991501
RenderingDevice();
15001502
~RenderingDevice();
15011503

servers/rendering/rendering_server_default.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,8 @@ Size2i RenderingServerDefault::get_maximum_viewport_size() const {
370370
void RenderingServerDefault::_assign_mt_ids(WorkerThreadPool::TaskID p_pump_task_id) {
371371
server_thread = Thread::get_caller_id();
372372
server_task_id = p_pump_task_id;
373+
// This is needed because the main RD is created on the main thread.
374+
RenderingDevice::get_singleton()->make_current();
373375
}
374376

375377
void RenderingServerDefault::_thread_exit() {

0 commit comments

Comments
 (0)