Skip to content
Snippets Groups Projects
Commit ddf3936a authored by Artur Wasmut's avatar Artur Wasmut
Browse files

[#87] add mesh shader draw call and check for push constant data before pushing

parent 19356f9a
No related branches found
No related tags found
1 merge request!74Resolve "Mesh Shader Implementation"
Pipeline #26210 passed
...@@ -148,6 +148,14 @@ int main(int argc, const char** argv) { ...@@ -148,6 +148,14 @@ int main(int argc, const char** argv) {
vkcv::PushConstantData pushConstantData((void*)&mvp, sizeof(glm::mat4)); vkcv::PushConstantData pushConstantData((void*)&mvp, sizeof(glm::mat4));
auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics); auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics);
core.recordMeshShaderDrawcalls(
cmdStream,
renderPass,
meshShaderPipeline,
vkcv::PushConstantData(nullptr, 0),
{ vkcv::MeshShaderDrawcall({}, 1) },
{ swapchainInput });
core.recordDrawcallsToCmdStream( core.recordDrawcallsToCmdStream(
cmdStream, cmdStream,
renderPass, renderPass,
...@@ -156,6 +164,7 @@ int main(int argc, const char** argv) { ...@@ -156,6 +164,7 @@ int main(int argc, const char** argv) {
{ drawcall }, { drawcall },
{ swapchainInput }); { swapchainInput });
core.prepareSwapchainImageForPresent(cmdStream); core.prepareSwapchainImageForPresent(cmdStream);
core.submitCommandStream(cmdStream); core.submitCommandStream(cmdStream);
......
...@@ -76,17 +76,18 @@ namespace vkcv { ...@@ -76,17 +76,18 @@ namespace vkcv {
nullptr); nullptr);
} }
const size_t drawcallPushConstantOffset = pushConstantOffset;
// char* cast because void* does not support pointer arithmetic // 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( if (pushConstantData.data) {
pipelineLayout, cmdBuffer.pushConstants(
vk::ShaderStageFlagBits::eAll, pipelineLayout,
0, vk::ShaderStageFlagBits::eAll,
pushConstantData.sizePerDrawcall, 0,
drawcallPushConstantData); pushConstantData.sizePerDrawcall,
drawcallPushConstantData);
}
MeshShaderFunctions.cmdDrawMeshTasks(cmdBuffer, drawcall.taskCount, firstTask); MeshShaderFunctions.cmdDrawMeshTasks(VkCommandBuffer(cmdBuffer), drawcall.taskCount, firstTask);
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment