diff options
| author | Rémi Verschelde <remi@verschelde.fr> | 2021-07-20 08:54:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-20 08:54:21 +0200 |
| commit | 1ba87f0c82ca62deaba71767ed08270a45fac2e9 (patch) | |
| tree | f5521b55687dd714ba80af098376fb3de1d323b8 /servers/rendering/renderer_rd/pipeline_cache_rd.cpp | |
| parent | a09088ac8fb4cb50e2269d4769e4eedf2731df49 (diff) | |
| parent | 9293bc3935c3b87051003dcb8f6902d6f1e9fdbe (diff) | |
| download | redot-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.cpp | 7 |
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()); |
