Skip to content

Commit

Permalink
Merge pull request godotengine#98391 from RandomShaper/rd_thread_switch
Browse files Browse the repository at this point in the history
Implement thread ownership change for RenderingDevice
  • Loading branch information
clayjohn authored Oct 22, 2024
2 parents b3bcb2d + d5d509b commit 533c616
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 0 deletions.
4 changes: 4 additions & 0 deletions servers/rendering/rendering_device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7260,6 +7260,10 @@ void RenderingDevice::_bind_methods() {
BIND_ENUM_CONSTANT(DEBUG_PASS);
}

void RenderingDevice::make_current() {
render_thread_id = Thread::get_caller_id();
}

RenderingDevice::~RenderingDevice() {
finalize();

Expand Down
2 changes: 2 additions & 0 deletions servers/rendering/rendering_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -1496,6 +1496,8 @@ class RenderingDevice : public RenderingDeviceCommons {

static RenderingDevice *get_singleton();

void make_current();

RenderingDevice();
~RenderingDevice();

Expand Down
2 changes: 2 additions & 0 deletions servers/rendering/rendering_server_default.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,8 @@ Size2i RenderingServerDefault::get_maximum_viewport_size() const {
void RenderingServerDefault::_assign_mt_ids(WorkerThreadPool::TaskID p_pump_task_id) {
server_thread = Thread::get_caller_id();
server_task_id = p_pump_task_id;
// This is needed because the main RD is created on the main thread.
RenderingDevice::get_singleton()->make_current();
}

void RenderingServerDefault::_thread_exit() {
Expand Down

0 comments on commit 533c616

Please sign in to comment.