summaryrefslogtreecommitdiffstats
path: root/servers/rendering
diff options
context:
space:
mode:
Diffstat (limited to 'servers/rendering')
-rw-r--r--servers/rendering/renderer_scene_cull.cpp2
-rw-r--r--servers/rendering/rendering_device.cpp13
-rw-r--r--servers/rendering/rendering_device.h2
-rw-r--r--servers/rendering/rendering_device_driver.h2
4 files changed, 16 insertions, 3 deletions
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp
index 96c0479ac3..b02d3def88 100644
--- a/servers/rendering/renderer_scene_cull.cpp
+++ b/servers/rendering/renderer_scene_cull.cpp
@@ -958,6 +958,8 @@ void RendererSceneCull::instance_set_blend_shape_weight(RID p_instance, int p_sh
if (instance->mesh_instance.is_valid()) {
RSG::mesh_storage->mesh_instance_set_blend_shape_weight(instance->mesh_instance, p_shape, p_weight);
}
+
+ _instance_queue_update(instance, false, false);
}
void RendererSceneCull::instance_set_surface_override_material(RID p_instance, int p_surface, RID p_material) {
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp
index 15e1731823..0227472d0e 100644
--- a/servers/rendering/rendering_device.cpp
+++ b/servers/rendering/rendering_device.cpp
@@ -3332,12 +3332,15 @@ Error RenderingDevice::_draw_list_setup_framebuffer(Framebuffer *p_framebuffer,
}
Error RenderingDevice::_draw_list_render_pass_begin(Framebuffer *p_framebuffer, InitialAction p_initial_color_action, FinalAction p_final_color_action, InitialAction p_initial_depth_action, FinalAction p_final_depth_action, const Vector<Color> &p_clear_colors, float p_clear_depth, uint32_t p_clear_stencil, Point2i p_viewport_offset, Point2i p_viewport_size, RDD::FramebufferID p_framebuffer_driver_id, RDD::RenderPassID p_render_pass) {
- LocalVector<RDD::RenderPassClearValue> clear_values;
- LocalVector<RDG::ResourceTracker *> resource_trackers;
- LocalVector<RDG::ResourceUsage> resource_usages;
+ thread_local LocalVector<RDD::RenderPassClearValue> clear_values;
+ thread_local LocalVector<RDG::ResourceTracker *> resource_trackers;
+ thread_local LocalVector<RDG::ResourceUsage> resource_usages;
bool uses_color = false;
bool uses_depth = false;
+ clear_values.clear();
clear_values.resize(p_framebuffer->texture_ids.size());
+ resource_trackers.clear();
+ resource_usages.clear();
int clear_values_count = 0;
{
int color_index = 0;
@@ -4734,6 +4737,10 @@ String RenderingDevice::get_device_api_name() const {
return driver->get_api_name();
}
+bool RenderingDevice::is_composite_alpha_supported() const {
+ return driver->is_composite_alpha_supported(main_queue);
+}
+
String RenderingDevice::get_device_api_version() const {
return driver->get_api_version();
}
diff --git a/servers/rendering/rendering_device.h b/servers/rendering/rendering_device.h
index 42773fc347..d0fa4ab1fa 100644
--- a/servers/rendering/rendering_device.h
+++ b/servers/rendering/rendering_device.h
@@ -1360,6 +1360,8 @@ public:
String get_device_api_version() const;
String get_device_pipeline_cache_uuid() const;
+ bool is_composite_alpha_supported() const;
+
uint64_t get_driver_resource(DriverResource p_resource, RID p_rid = RID(), uint64_t p_index = 0);
static RenderingDevice *get_singleton();
diff --git a/servers/rendering/rendering_device_driver.h b/servers/rendering/rendering_device_driver.h
index e9464ba321..f9a861426a 100644
--- a/servers/rendering/rendering_device_driver.h
+++ b/servers/rendering/rendering_device_driver.h
@@ -769,6 +769,8 @@ public:
virtual String get_pipeline_cache_uuid() const = 0;
virtual const Capabilities &get_capabilities() const = 0;
+ virtual bool is_composite_alpha_supported(CommandQueueID p_queue) const { return false; }
+
/******************/
virtual ~RenderingDeviceDriver();