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) {
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);
......
......@@ -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
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