summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-06-14 09:27:10 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-06-14 09:27:10 +0200
commit16c2fede71a750dfd8d6d515cfaf32fbd5d140b1 (patch)
tree6a544fc8f3928e6d3eea0bb5722bb0acbfba5206
parente0651ed4b50d11127be21a6e78b08e29d5d222b0 (diff)
parentf74464b767c6cd60795bbdcdda2fdeafd09942bc (diff)
downloadredot-engine-16c2fede71a750dfd8d6d515cfaf32fbd5d140b1.tar.gz
Merge pull request #78200 from prominentdetail/patch-3
Properly handle wireframe mode in RendererRD pipeline cache
-rw-r--r--servers/rendering/renderer_rd/pipeline_cache_rd.cpp2
-rw-r--r--servers/rendering/renderer_rd/pipeline_cache_rd.h2
2 files changed, 3 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/pipeline_cache_rd.cpp b/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
index 17051d1954..f3595c5917 100644
--- a/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
+++ b/servers/rendering/renderer_rd/pipeline_cache_rd.cpp
@@ -36,7 +36,7 @@ RID PipelineCacheRD::_generate_version(RD::VertexFormatID p_vertex_format_id, RD
RD::PipelineMultisampleState multisample_state_version = multisample_state;
multisample_state_version.sample_count = RD::get_singleton()->framebuffer_format_get_texture_samples(p_framebuffer_format_id, p_render_pass);
- bool wireframe = p_wireframe || rasterization_state.wireframe;
+ bool wireframe = p_wireframe;
RD::PipelineRasterizationState raster_state_version = rasterization_state;
raster_state_version.wireframe = wireframe;
diff --git a/servers/rendering/renderer_rd/pipeline_cache_rd.h b/servers/rendering/renderer_rd/pipeline_cache_rd.h
index 0b12dab416..58c1278312 100644
--- a/servers/rendering/renderer_rd/pipeline_cache_rd.h
+++ b/servers/rendering/renderer_rd/pipeline_cache_rd.h
@@ -76,6 +76,8 @@ public:
#endif
spin_lock.lock();
+ p_wireframe |= rasterization_state.wireframe;
+
RID result;
for (uint32_t i = 0; i < version_count; i++) {
if (versions[i].vertex_id == p_vertex_format_id && versions[i].framebuffer_id == p_framebuffer_format_id && versions[i].wireframe == p_wireframe && versions[i].render_pass == p_render_pass && versions[i].bool_specializations == p_bool_specializations) {