summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2021-07-20 08:54:21 +0200
committerGitHub <noreply@github.com>2021-07-20 08:54:21 +0200
commit1ba87f0c82ca62deaba71767ed08270a45fac2e9 (patch)
treef5521b55687dd714ba80af098376fb3de1d323b8 /servers/rendering/renderer_rd/pipeline_cache_rd.cpp
parenta09088ac8fb4cb50e2269d4769e4eedf2731df49 (diff)
parent9293bc3935c3b87051003dcb8f6902d6f1e9fdbe (diff)
downloadredot-engine-1ba87f0c82ca62deaba71767ed08270a45fac2e9.tar.gz
Merge pull request #50618 from reduz/implement-more-specialization-constants
Implement more rendering options as specialization constants
Diffstat (limited to 'servers/rendering/renderer_rd/pipeline_cache_rd.cpp')
-rw-r--r--servers/rendering/renderer_rd/pipeline_cache_rd.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/servers/rendering/renderer_rd/pipeline_cache_rd.cpp b/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
index 2bdd523920..aefe926cb0 100644
--- a/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
+++ b/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
@@ -68,6 +68,9 @@ RID PipelineCacheRD::_generate_version(RD::VertexFormatID p_vertex_format_id, RD
}
void PipelineCacheRD::_clear() {
+#ifndef _MSC_VER
+#warning Clear should probably recompile all the variants already compiled instead to avoid stalls? needs discussion
+#endif
if (versions) {
for (uint32_t i = 0; i < version_count; i++) {
//shader may be gone, so this may not be valid
@@ -94,6 +97,10 @@ void PipelineCacheRD::setup(RID p_shader, RD::RenderPrimitive p_primitive, const
dynamic_state_flags = p_dynamic_state_flags;
base_specialization_constants = p_base_specialization_constants;
}
+void PipelineCacheRD::update_specialization_constants(const Vector<RD::PipelineSpecializationConstant> &p_base_specialization_constants) {
+ base_specialization_constants = p_base_specialization_constants;
+ _clear();
+}
void PipelineCacheRD::update_shader(RID p_shader) {
ERR_FAIL_COND(p_shader.is_null());