From 316429225a5a1563adae9a8a84fdfdf327af4def Mon Sep 17 00:00:00 2001 From: Chip Davis Date: Wed, 20 Mar 2019 11:37:24 -0500 Subject: [PATCH] Fix updating push constants for tessellation shaders. Missed this when I was initially implementing this. --- MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm index dd359415..bdd47ef5 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm @@ -164,14 +164,17 @@ void MVKCmdPushConstants::setContent(VkPipelineLayout layout, } void MVKCmdPushConstants::encode(MVKCommandEncoder* cmdEncoder) { - if (mvkAreFlagsEnabled(_stageFlags, VK_SHADER_STAGE_VERTEX_BIT)) { - cmdEncoder->getPushConstants(VK_SHADER_STAGE_VERTEX_BIT)->setPushConstants(_offset, _pushConstants); - } - if (mvkAreFlagsEnabled(_stageFlags, VK_SHADER_STAGE_FRAGMENT_BIT)) { - cmdEncoder->getPushConstants(VK_SHADER_STAGE_FRAGMENT_BIT)->setPushConstants(_offset, _pushConstants); - } - if (mvkAreFlagsEnabled(_stageFlags, VK_SHADER_STAGE_COMPUTE_BIT)) { - cmdEncoder->getPushConstants(VK_SHADER_STAGE_COMPUTE_BIT)->setPushConstants(_offset, _pushConstants); + VkShaderStageFlagBits stages[] = { + VK_SHADER_STAGE_VERTEX_BIT, + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, + VK_SHADER_STAGE_FRAGMENT_BIT, + VK_SHADER_STAGE_COMPUTE_BIT + }; + for (auto stage : stages) { + if (mvkAreFlagsEnabled(_stageFlags, stage)) { + cmdEncoder->getPushConstants(stage)->setPushConstants(_offset, _pushConstants); + } } }