From 73e4db35d7db2d00c21a84c12ebd93dbdf38fe37 Mon Sep 17 00:00:00 2001 From: Artem Kharytoniuk Date: Tue, 11 Apr 2017 19:36:50 +0300 Subject: [PATCH] Call scissor/viewport/depth bias commands after vkCmdBindPipeline to meet vulkan spec. --- src/engine/renderer/vk_demo.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/engine/renderer/vk_demo.cpp b/src/engine/renderer/vk_demo.cpp index aa72314..ea1f32d 100644 --- a/src/engine/renderer/vk_demo.cpp +++ b/src/engine/renderer/vk_demo.cpp @@ -494,15 +494,15 @@ void Vulkan_Demo::render_tess(const shaderStage_t* stage) { if (scissor.offset.y < 0) scissor.offset.y = 0; // receive such data from backEnd, so just adjust to valid value to prevent vulkan warnings scissor.extent = {(uint32_t)backEnd.viewParms.viewportWidth, (uint32_t)backEnd.viewParms.viewportHeight}; } + + vkCmdBindPipeline(vk_instance.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline); + vkCmdSetViewport(vk_instance.command_buffer, 0, 1, &viewport); vkCmdSetScissor(vk_instance.command_buffer, 0, 1, &scissor); - if (tess.shader->polygonOffset) { vkCmdSetDepthBias(vk_instance.command_buffer, r_offsetUnits->value, 0.0f, r_offsetFactor->value); } - vkCmdBindPipeline(vk_instance.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline); - vkCmdDrawIndexed(vk_instance.command_buffer, tess.numIndexes, 1, 0, 0, 0); tess_vertex_buffer_offset += tess.numVertexes * sizeof(Vk_Vertex); tess_index_buffer_offset += tess.numIndexes * sizeof(uint32_t); @@ -582,15 +582,15 @@ void Vulkan_Demo::render_tess_multi(const shaderStage_t* stage) { if (scissor.offset.y < 0) scissor.offset.y = 0; // receive such data from backEnd, so just adjust to valid value to prevent vulkan warnings scissor.extent = {(uint32_t)backEnd.viewParms.viewportWidth, (uint32_t)backEnd.viewParms.viewportHeight}; } + + vkCmdBindPipeline(vk_instance.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline); + vkCmdSetViewport(vk_instance.command_buffer, 0, 1, &viewport); vkCmdSetScissor(vk_instance.command_buffer, 0, 1, &scissor); - if (tess.shader->polygonOffset) { vkCmdSetDepthBias(vk_instance.command_buffer, r_offsetUnits->value, 0.0f, r_offsetFactor->value); } - vkCmdBindPipeline(vk_instance.command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, stage->vk_pipeline); - vkCmdDrawIndexed(vk_instance.command_buffer, tess.numIndexes, 1, 0, 0, 0); tess_vertex_buffer_offset += tess.numVertexes * sizeof(Vk_Vertex2); tess_index_buffer_offset += tess.numIndexes * sizeof(uint32_t);