diff --git a/projects/mesh_shader/src/main.cpp b/projects/mesh_shader/src/main.cpp
index e9f48dcd2e0e34395407983c3ec46d173940368f..5e760256170ab43147823f64d2a861497e9070dc 100644
--- a/projects/mesh_shader/src/main.cpp
+++ b/projects/mesh_shader/src/main.cpp
@@ -148,6 +148,14 @@ int main(int argc, const char** argv) {
 		vkcv::PushConstantData pushConstantData((void*)&mvp, sizeof(glm::mat4));
 		auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics);
 
+		core.recordMeshShaderDrawcalls(
+			cmdStream,
+			renderPass,
+			meshShaderPipeline,
+			vkcv::PushConstantData(nullptr, 0),
+			{ vkcv::MeshShaderDrawcall({}, 1) },
+			{ swapchainInput });
+
 		core.recordDrawcallsToCmdStream(
 			cmdStream,
 			renderPass,
@@ -156,6 +164,7 @@ int main(int argc, const char** argv) {
 			{ drawcall },
 			{ swapchainInput });
 
+
 		core.prepareSwapchainImageForPresent(cmdStream);
 		core.submitCommandStream(cmdStream);
 		
diff --git a/src/vkcv/DrawcallRecording.cpp b/src/vkcv/DrawcallRecording.cpp
index 6ff3209b0cfb834c20cdb72be925981f51862d84..d2112a5a330d5373249ae4999ea8b2d84b3730b4 100644
--- a/src/vkcv/DrawcallRecording.cpp
+++ b/src/vkcv/DrawcallRecording.cpp
@@ -76,17 +76,18 @@ namespace vkcv {
                 nullptr);
         }
 
-        const size_t drawcallPushConstantOffset = pushConstantOffset;
         // char* cast because void* does not support pointer arithmetic
-        const void* drawcallPushConstantData = drawcallPushConstantOffset + (char*)pushConstantData.data;
+        const void* drawcallPushConstantData = pushConstantOffset + (char*)pushConstantData.data;
 
-        cmdBuffer.pushConstants(
-            pipelineLayout,
-            vk::ShaderStageFlagBits::eAll,
-            0,
-            pushConstantData.sizePerDrawcall,
-            drawcallPushConstantData);
+        if (pushConstantData.data) {
+            cmdBuffer.pushConstants(
+                pipelineLayout,
+                vk::ShaderStageFlagBits::eAll,
+                0,
+                pushConstantData.sizePerDrawcall,
+                drawcallPushConstantData);
+        }
 
-        MeshShaderFunctions.cmdDrawMeshTasks(cmdBuffer, drawcall.taskCount, firstTask);
+        MeshShaderFunctions.cmdDrawMeshTasks(VkCommandBuffer(cmdBuffer), drawcall.taskCount, firstTask);
     }
 }
\ No newline at end of file