summaryrefslogtreecommitdiffstats
path: root/servers/visual/rasterizer_rd/rasterizer_rd.cpp
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2019-07-29 12:59:18 -0300
committerJuan Linietsky <reduzio@gmail.com>2020-02-11 11:53:29 +0100
commitc613ead5fa2361296cf8d9a80d4648492ff4e16f (patch)
tree974356b6840ecf764415d43277ef78ad3c6b6373 /servers/visual/rasterizer_rd/rasterizer_rd.cpp
parent4fe3ee1730167b90ec8ae70c871c1dad032981d5 (diff)
downloadredot-engine-c613ead5fa2361296cf8d9a80d4648492ff4e16f.tar.gz
Added a spinlock template as well as a thread work pool class.
Also, optimized shader compilation to happen on threads.
Diffstat (limited to 'servers/visual/rasterizer_rd/rasterizer_rd.cpp')
-rw-r--r--servers/visual/rasterizer_rd/rasterizer_rd.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/servers/visual/rasterizer_rd/rasterizer_rd.cpp b/servers/visual/rasterizer_rd/rasterizer_rd.cpp
index 9be7a6e3f7..8a77d9a71e 100644
--- a/servers/visual/rasterizer_rd/rasterizer_rd.cpp
+++ b/servers/visual/rasterizer_rd/rasterizer_rd.cpp
@@ -76,7 +76,7 @@ void RasterizerRD::initialize() {
RenderingDevice::ShaderStageData frag;
frag.shader_stage = RenderingDevice::SHADER_STAGE_FRAGMENT;
- frag.spir_v =RenderingDevice::get_singleton()->shader_compile_from_source(RenderingDevice::SHADER_STAGE_FRAGMENT,
+ frag.spir_v = RenderingDevice::get_singleton()->shader_compile_from_source(RenderingDevice::SHADER_STAGE_FRAGMENT,
"#version 450\n"
"layout (location = 0) in vec2 uv;\n"
"layout (location = 0) out vec4 color;\n"
@@ -120,8 +120,12 @@ void RasterizerRD::initialize() {
}
}
+ThreadWorkPool RasterizerRD::thread_work_pool;
+
void RasterizerRD::finalize() {
+ thread_work_pool.finish();
+
memdelete(scene);
memdelete(canvas);
memdelete(storage);
@@ -133,6 +137,7 @@ void RasterizerRD::finalize() {
}
RasterizerRD::RasterizerRD() {
+ thread_work_pool.init();
time = 0;
storage = memnew(RasterizerStorageRD);
canvas = memnew(RasterizerCanvasRD(storage));