diff options
| author | Piers Daniell <pdaniell@nvidia.com> | 2015-09-29 13:01:09 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-30 16:41:04 -0600 |
| commit | ba839d1977fd08371f0924f73e9b052325c978cd (patch) | |
| tree | a9ec561e5f6caf24f4477c0b0e124cc9125ed4c5 | |
| parent | 438c6fbadfb72d35a29467a24ca6a93fef06f1c6 (diff) | |
| download | usermoji-ba839d1977fd08371f0924f73e9b052325c978cd.tar.xz | |
Set dynamic pipeline state as dynamic
| -rw-r--r-- | demos/cube.c | 25 | ||||
| -rw-r--r-- | demos/tri.c | 27 |
2 files changed, 23 insertions, 29 deletions
diff --git a/demos/cube.c b/demos/cube.c index 9d3c7a86..f1b3eee4 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -561,20 +561,6 @@ static void demo_draw_build_cmd(struct demo *demo, VkCmdBuffer cmd_buf) scissor.offset.y = 0; vkCmdSetScissor(cmd_buf, 1, &scissor); - vkCmdSetLineWidth(cmd_buf, 1.0); - vkCmdSetDepthBias(cmd_buf, 0.0f, 0.0f, 0.0f); - - float blend[4]; - blend[0] = 1.0f; - blend[1] = 1.0f; - blend[2] = 1.0f; - blend[3] = 1.0f; - vkCmdSetBlendConstants(cmd_buf, blend); - vkCmdSetDepthBounds(cmd_buf, 0.0f, 1.0f); - vkCmdSetStencilCompareMask(cmd_buf, VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT, 0xff); - vkCmdSetStencilWriteMask(cmd_buf, VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT, 0xff); - vkCmdSetStencilReference(cmd_buf, VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT, 0); - vkCmdDraw(cmd_buf, 12 * 3, 1, 0, 0); vkCmdEndRenderPass(cmd_buf); @@ -1499,8 +1485,15 @@ static void demo_prepare_pipeline(struct demo *demo) VkPipelineDepthStencilStateCreateInfo ds; VkPipelineViewportStateCreateInfo vp; VkPipelineMultisampleStateCreateInfo ms; + VkDynamicState dynamicStateEnables[VK_DYNAMIC_STATE_NUM]; + VkPipelineDynamicStateCreateInfo dynamicState; VkResult U_ASSERT_ONLY err; + memset(dynamicStateEnables, 0, sizeof dynamicStateEnables); + memset(&dynamicState, 0, sizeof dynamicState); + dynamicState.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamicState.pDynamicStates = dynamicStateEnables; + memset(&pipeline, 0, sizeof(pipeline)); pipeline.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; pipeline.layout = demo->pipeline_layout; @@ -1530,6 +1523,9 @@ static void demo_prepare_pipeline(struct demo *demo) memset(&vp, 0, sizeof(vp)); vp.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; vp.viewportCount = 1; + dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_VIEWPORT; + vp.scissorCount = 1; + dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR; memset(&ds, 0, sizeof(ds)); ds.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; @@ -1576,6 +1572,7 @@ static void demo_prepare_pipeline(struct demo *demo) pipeline.pDepthStencilState = &ds; pipeline.pStages = shaderStages; pipeline.renderPass = demo->render_pass; + pipeline.pDynamicState = &dynamicState; pipeline.renderPass = demo->render_pass; diff --git a/demos/tri.c b/demos/tri.c index b7dac950..71942b05 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -401,20 +401,6 @@ static void demo_draw_build_cmd(struct demo *demo) scissor.offset.y = 0; vkCmdSetScissor(demo->draw_cmd, 1, &scissor); - vkCmdSetLineWidth(demo->draw_cmd, 1.0); - vkCmdSetDepthBias(demo->draw_cmd, 0.0f, 0.0f, 0.0f); - - float blend[4]; - blend[0] = 1.0f; - blend[1] = 1.0f; - blend[2] = 1.0f; - blend[3] = 1.0f; - vkCmdSetBlendConstants(demo->draw_cmd, blend); - vkCmdSetDepthBounds(demo->draw_cmd, 0.0f, 1.0f); - vkCmdSetStencilCompareMask(demo->draw_cmd, VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT, 0xff); - vkCmdSetStencilWriteMask(demo->draw_cmd, VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT, 0xff); - vkCmdSetStencilReference(demo->draw_cmd, VK_STENCIL_FACE_FRONT_BIT | VK_STENCIL_FACE_BACK_BIT, 0); - VkDeviceSize offsets[1] = {0}; vkCmdBindVertexBuffers(demo->draw_cmd, VERTEX_BUFFER_BIND_ID, 1, &demo->vertices.buf, offsets); @@ -1256,9 +1242,16 @@ static void demo_prepare_pipeline(struct demo *demo) VkPipelineDepthStencilStateCreateInfo ds; VkPipelineViewportStateCreateInfo vp; VkPipelineMultisampleStateCreateInfo ms; + VkDynamicState dynamicStateEnables[VK_DYNAMIC_STATE_NUM]; + VkPipelineDynamicStateCreateInfo dynamicState; VkResult U_ASSERT_ONLY err; + memset(dynamicStateEnables, 0, sizeof dynamicStateEnables); + memset(&dynamicState, 0, sizeof dynamicState); + dynamicState.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamicState.pDynamicStates = dynamicStateEnables; + memset(&pipeline, 0, sizeof(pipeline)); pipeline.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; pipeline.layout = demo->pipeline_layout; @@ -1290,6 +1283,9 @@ static void demo_prepare_pipeline(struct demo *demo) memset(&vp, 0, sizeof(vp)); vp.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; vp.viewportCount = 1; + dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_VIEWPORT; + vp.scissorCount = 1; + dynamicStateEnables[dynamicState.dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR; memset(&ds, 0, sizeof(ds)); ds.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; @@ -1330,6 +1326,7 @@ static void demo_prepare_pipeline(struct demo *demo) pipeline.pDepthStencilState = &ds; pipeline.pStages = shaderStages; pipeline.renderPass = demo->render_pass; + pipeline.pDynamicState = &dynamicState; memset(&pipelineCache, 0, sizeof(pipelineCache)); pipelineCache.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO; @@ -1665,7 +1662,7 @@ void VKAPI myfree( void* pUserData, void* pMem) { - return free(pMem); + free(pMem); } static void demo_init_vk(struct demo *demo) { |
