Implement dynamic buffer offsets.

Tests: *dynamic*
Bug: b/126330097
Change-Id: I7e4f7e3d921acb72878b7728216415ba66f63ec7
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28249
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Pipeline/ComputeProgram.hpp b/src/Pipeline/ComputeProgram.hpp
index 6b63233..e8265bc0 100644
--- a/src/Pipeline/ComputeProgram.hpp
+++ b/src/Pipeline/ComputeProgram.hpp
@@ -19,6 +19,7 @@
 
 #include "Reactor/Reactor.hpp"
 #include "Device/Context.hpp"
+#include "Vulkan/VkDescriptorSet.hpp"
 
 #include <functional>
 
@@ -48,7 +49,10 @@
 		// run executes the compute shader routine for all workgroups.
 		// TODO(bclayton): This probably does not belong here. Consider moving.
 		static void run(
-			Routine *routine, void** descriptorSets, PushConstantStorage const &pushConstants,
+			Routine *routine,
+			vk::DescriptorSet::Bindings const &descriptorSetBindings,
+			vk::DescriptorSet::DynamicOffsets const &descriptorDynamicOffsets,
+			PushConstantStorage const &pushConstants,
 			uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
 
 	protected:
@@ -60,7 +64,8 @@
 
 		struct Data
 		{
-			void** descriptorSets;
+			vk::DescriptorSet::Bindings descriptorSets;
+			vk::DescriptorSet::DynamicOffsets descriptorDynamicOffsets;
 			uint4 numWorkgroups;
 			uint4 workgroupID;
 			PushConstantStorage pushConstants;