summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-04-09 10:42:22 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-04-09 10:42:22 +0200
commit9cba6ec216e478c10f0e7dded7b0adb042983996 (patch)
treeb4ca0986b7258ec98a437d37abf66d323678f2d7
parent964684b6e3ce246e863aa72357d917c1619663c5 (diff)
parent8017c8cf210bfb1eef7044a41050efac5724c3e2 (diff)
downloadredot-engine-9cba6ec216e478c10f0e7dded7b0adb042983996.tar.gz
Merge pull request #89491 from thimenesup/compute_dispatch_indirect
Expose bindings to compute dispatch indirect of rendering device
-rw-r--r--doc/classes/RenderingDevice.xml9
-rw-r--r--servers/rendering/rendering_device.cpp1
2 files changed, 10 insertions, 0 deletions
diff --git a/doc/classes/RenderingDevice.xml b/doc/classes/RenderingDevice.xml
index 36abde36b4..3c1061dee9 100644
--- a/doc/classes/RenderingDevice.xml
+++ b/doc/classes/RenderingDevice.xml
@@ -138,6 +138,15 @@
Submits the compute list for processing on the GPU. This is the compute equivalent to [method draw_list_draw].
</description>
</method>
+ <method name="compute_list_dispatch_indirect">
+ <return type="void" />
+ <param index="0" name="compute_list" type="int" />
+ <param index="1" name="buffer" type="RID" />
+ <param index="2" name="offset" type="int" />
+ <description>
+ Submits the compute list for processing on the GPU with the given group counts stored in the [param buffer] at [param offset]. Buffer must have been created with [constant STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT] flag.
+ </description>
+ </method>
<method name="compute_list_end">
<return type="void" />
<description>
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp
index 00291d2ac4..2b6644e893 100644
--- a/servers/rendering/rendering_device.cpp
+++ b/servers/rendering/rendering_device.cpp
@@ -5554,6 +5554,7 @@ void RenderingDevice::_bind_methods() {
ClassDB::bind_method(D_METHOD("compute_list_set_push_constant", "compute_list", "buffer", "size_bytes"), &RenderingDevice::_compute_list_set_push_constant);
ClassDB::bind_method(D_METHOD("compute_list_bind_uniform_set", "compute_list", "uniform_set", "set_index"), &RenderingDevice::compute_list_bind_uniform_set);
ClassDB::bind_method(D_METHOD("compute_list_dispatch", "compute_list", "x_groups", "y_groups", "z_groups"), &RenderingDevice::compute_list_dispatch);
+ ClassDB::bind_method(D_METHOD("compute_list_dispatch_indirect", "compute_list", "buffer", "offset"), &RenderingDevice::compute_list_dispatch_indirect);
ClassDB::bind_method(D_METHOD("compute_list_add_barrier", "compute_list"), &RenderingDevice::compute_list_add_barrier);
ClassDB::bind_method(D_METHOD("compute_list_end"), &RenderingDevice::compute_list_end);