Test push constant range that applies to vertex and fragment stages

This commit is contained in:
baldurk
2020-04-21 16:41:21 +01:00
parent 660d696b58
commit 9accb4033b
+13 -2
View File
@@ -146,6 +146,13 @@ void main()
renderPass, {mainWindow->GetView(i), dsvview}, mainWindow->scissor.extent));
VkPipelineLayout layout = createPipelineLayout(vkh::PipelineLayoutCreateInfo(
{},
{
vkh::PushConstantRange(VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0,
sizeof(Vec4f) * 2),
}));
VkPipelineLayout layout2 = createPipelineLayout(vkh::PipelineLayoutCreateInfo(
{},
{
vkh::PushConstantRange(VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(Vec4f) * 2),
@@ -182,6 +189,8 @@ void main()
pipeCreateInfo.vertexInputState.vertexBindingDescriptions = {{0, 0, VK_VERTEX_INPUT_RATE_VERTEX}};
pipeCreateInfo.layout = layout2;
VkPipeline stride0pipe = createGraphicsPipeline(pipeCreateInfo);
AllocatedBuffer vb(this,
@@ -222,8 +231,8 @@ void main()
VK_SUBPASS_CONTENTS_INLINE);
vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, pipe);
vkCmdPushConstants(cmd, layout, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(cbufferdata),
&cbufferdata);
vkCmdPushConstants(cmd, layout, VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0,
sizeof(cbufferdata), &cbufferdata);
vkCmdSetViewport(cmd, 0, 1, &mainWindow->viewport);
vkCmdSetScissor(cmd, 0, 1, &mainWindow->scissor);
vkh::cmdBindVertexBuffers(cmd, 0, {vb.buffer}, {0});
@@ -243,6 +252,8 @@ void main()
setMarker(cmd, "Stride 0");
vkCmdBindPipeline(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, stride0pipe);
vkCmdPushConstants(cmd, layout2, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(cbufferdata),
&cbufferdata);
vkCmdDraw(cmd, 1, 1, 0, 0);