The open source OpenXR runtime

c/render: More cleanup of render_gfx

Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2380>

+135 -135
+135 -135
src/xrt/compositor/render/render_gfx.c
··· 257 * Allocate and upload data. 258 */ 259 ret = render_sub_alloc_ubo_alloc_and_write( // 260 - vk, // vk_bundle 261 &render->ubo_tracker, // rsat 262 - ubo_ptr, // ptr 263 - ubo_size, // size 264 &ubo); // out_rsa 265 VK_CHK_AND_RET(ret, "render_sub_alloc_ubo_alloc_and_write"); 266 ··· 270 */ 271 272 ret = vk_create_descriptor_set( // 273 - vk, // vk_bundle 274 - descriptor_pool, // descriptor_pool 275 - descriptor_set_layout, // descriptor_set_layout 276 - &descriptor_set); // descriptor_set 277 VK_CHK_AND_RET(ret, "vk_create_descriptor_set"); 278 279 update_ubo_and_src_descriptor_set( // 280 - vk, // vk_bundle 281 - ubo_binding, // ubo_binding 282 - ubo.buffer, // buffer 283 - ubo.offset, // offset 284 - ubo.size, // size 285 - src_binding, // src_binding 286 - src_sampler, // sampler 287 - src_image_view, // image_view 288 - descriptor_set); // descriptor_set 289 290 *out_descriptor_set = descriptor_set; 291 ··· 301 302 VkDescriptorSet descriptor_sets[1] = {descriptor_set}; 303 vk->vkCmdBindDescriptorSets( // 304 - r->cmd, // commandBuffer 305 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 306 r->gfx.layer.shared.pipeline_layout, // layout 307 0, // firstSet ··· 311 NULL); // pDynamicOffsets 312 313 vk->vkCmdBindPipeline( // 314 - r->cmd, // commandBuffer 315 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 316 - pipeline); // pipeline 317 318 // This pipeline doesn't have any VBO input or indices. 319 320 vk->vkCmdDraw( // 321 - r->cmd, // commandBuffer 322 vertex_count, // vertexCount 323 1, // instanceCount 324 0, // firstVertex ··· 717 VkResult ret; 718 719 ret = create_implicit_render_pass( // 720 - vk, // vk_bundle 721 format, // target_format 722 - load_op, // load_op 723 - final_layout, // final_layout 724 &rgrp->render_pass); // out_render_pass 725 VK_CHK_WITH_RET(ret, "create_implicit_render_pass", false); 726 VK_NAME_RENDER_PASS(vk, rgrp->render_pass, "render_gfx_render_pass render pass"); ··· 730 }; 731 732 ret = create_mesh_pipeline( // 733 - vk, // vk_bundle 734 - rgrp->render_pass, // render_pass 735 - r->mesh.pipeline_layout, // pipeline_layout 736 - r->pipeline_cache, // pipeline_cache 737 - r->mesh.src_binding, // src_binding 738 - r->mesh.index_count_total, // mesh_index_count_total 739 - r->mesh.stride, // mesh_stride 740 - &simple_params, // params 741 - r->shaders->mesh_vert, // mesh_vert 742 - r->shaders->mesh_frag, // mesh_frag 743 &rgrp->mesh.pipeline); // out_mesh_pipeline 744 VK_CHK_WITH_RET(ret, "create_mesh_pipeline", false); 745 VK_NAME_PIPELINE(vk, rgrp->mesh.pipeline, "render_gfx_render_pass mesh pipeline"); ··· 749 }; 750 751 ret = create_mesh_pipeline( // 752 - vk, // vk_bundle 753 - rgrp->render_pass, // render_pass 754 - r->mesh.pipeline_layout, // pipeline_layout 755 - r->pipeline_cache, // pipeline_cache 756 - r->mesh.src_binding, // src_binding 757 - r->mesh.index_count_total, // mesh_index_count_total 758 - r->mesh.stride, // mesh_stride 759 - &timewarp_params, // params 760 - r->shaders->mesh_vert, // mesh_vert 761 - r->shaders->mesh_frag, // mesh_frag 762 &rgrp->mesh.pipeline_timewarp); // out_mesh_pipeline 763 VK_CHK_WITH_RET(ret, "create_mesh_pipeline", false); 764 VK_NAME_PIPELINE(vk, rgrp->mesh.pipeline_timewarp, "render_gfx_render_pass mesh pipeline timewarp"); ··· 768 769 // Cylinder 770 ret = create_layer_pipeline( // 771 - vk, // vk 772 - rgrp->render_pass, // render_pass 773 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 774 - r->pipeline_cache, // pipeline_cache 775 blend_factor_premultiplied_alpha, // src_blend_factor 776 - r->shaders->layer_cylinder_vert, // module_vert 777 - r->shaders->layer_cylinder_frag, // module_frag 778 &rgrp->layer.cylinder_premultiplied_alpha); // out_pipeline 779 VK_CHK_WITH_RET(ret, "create_layer_pipeline", false); 780 VK_NAME_PIPELINE(vk, rgrp->layer.cylinder_premultiplied_alpha, 781 "render_gfx_render_pass cylinder premultiplied alpha"); 782 783 ret = create_layer_pipeline( // 784 - vk, // vk 785 - rgrp->render_pass, // render_pass 786 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 787 - r->pipeline_cache, // pipeline_cache 788 blend_factor_unpremultiplied_alpha, // src_blend_factor 789 r->shaders->layer_cylinder_vert, // module_vert 790 r->shaders->layer_cylinder_frag, // module_frag ··· 795 796 // Equirect2 797 ret = create_layer_pipeline( // 798 - vk, // vk 799 - rgrp->render_pass, // render_pass 800 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 801 - r->pipeline_cache, // pipeline_cache 802 blend_factor_premultiplied_alpha, // src_blend_factor 803 r->shaders->layer_equirect2_vert, // module_vert 804 r->shaders->layer_equirect2_frag, // module_frag ··· 808 "render_gfx_render_pass equirect2 premultiplied alpha"); 809 810 ret = create_layer_pipeline( // 811 - vk, // vk 812 - rgrp->render_pass, // render_pass 813 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 814 - r->pipeline_cache, // pipeline_cache 815 blend_factor_unpremultiplied_alpha, // src_blend_factor 816 r->shaders->layer_equirect2_vert, // module_vert 817 r->shaders->layer_equirect2_frag, // module_frag ··· 822 823 // Projection. 824 ret = create_layer_pipeline( // 825 - vk, // vk 826 - rgrp->render_pass, // render_pass 827 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 828 - r->pipeline_cache, // pipeline_cache 829 blend_factor_premultiplied_alpha, // src_blend_factor 830 r->shaders->layer_projection_vert, // module_vert 831 r->shaders->layer_shared_frag, // module_frag ··· 835 "render_gfx_render_pass projection premultiplied alpha"); 836 837 ret = create_layer_pipeline( // 838 - vk, // vk 839 - rgrp->render_pass, // render_pass 840 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 841 - r->pipeline_cache, // pipeline_cache 842 blend_factor_unpremultiplied_alpha, // src_blend_factor 843 r->shaders->layer_projection_vert, // module_vert 844 r->shaders->layer_shared_frag, // module_frag ··· 849 850 // Quad 851 ret = create_layer_pipeline( // 852 - vk, // vk 853 - rgrp->render_pass, // render_pass 854 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 855 - r->pipeline_cache, // pipeline_cache 856 blend_factor_premultiplied_alpha, // src_blend_factor 857 r->shaders->layer_quad_vert, // module_vert 858 r->shaders->layer_shared_frag, // module_frag ··· 861 VK_NAME_PIPELINE(vk, rgrp->layer.quad_premultiplied_alpha, "render_gfx_render_pass quad premultiplied alpha"); 862 863 ret = create_layer_pipeline( // 864 - vk, // vk 865 - rgrp->render_pass, // render_pass 866 - r->gfx.layer.shared.pipeline_layout, // pipeline_layout 867 - r->pipeline_cache, // pipeline_cache 868 blend_factor_unpremultiplied_alpha, // src_blend_factor 869 r->shaders->layer_quad_vert, // module_vert 870 r->shaders->layer_shared_frag, // module_frag ··· 923 rtr->r = r; 924 925 ret = create_framebuffer( // 926 - vk, // vk_bundle, 927 - target, // image_view, 928 - rgrp->render_pass, // render_pass, 929 - extent.width, // width, 930 - extent.height, // height, 931 &rtr->framebuffer); // out_external_framebuffer 932 VK_CHK_WITH_RET(ret, "create_framebuffer", false); 933 VK_NAME_FRAMEBUFFER(vk, rtr->framebuffer, "render_gfx_target_resources framebuffer"); ··· 984 }; 985 986 ret = vk->vkBeginCommandBuffer( // 987 - render->r->cmd, // commandBuffer 988 - &begin_info); // pBeginInfo 989 VK_CHK_WITH_RET(ret, "vkResetCommandPool", false); 990 991 vk->vkCmdResetQueryPool( // 992 - render->r->cmd, // commandBuffer 993 - render->r->query_pool, // queryPool 994 0, // firstQuery 995 2); // queryCount 996 997 vk->vkCmdWriteTimestamp( // 998 - render->r->cmd, // commandBuffer 999 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, // pipelineStage 1000 - render->r->query_pool, // queryPool 1001 0); // query 1002 1003 return true; ··· 1010 VkResult ret; 1011 1012 vk->vkCmdWriteTimestamp( // 1013 - render->r->cmd, // commandBuffer 1014 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, // pipelineStage 1015 - render->r->query_pool, // queryPool 1016 1); // query 1017 1018 ret = vk->vkEndCommandBuffer(render->r->cmd); ··· 1105 .maxDepth = 1.0f, 1106 }; 1107 1108 - vk->vkCmdSetViewport(render->r->cmd, // commandBuffer 1109 0, // firstViewport 1110 1, // viewportCount 1111 - &viewport); // pViewports 1112 1113 /* 1114 * Scissor ··· 1127 }, 1128 }; 1129 1130 - vk->vkCmdSetScissor(render->r->cmd, // commandBuffer 1131 0, // firstScissor 1132 1, // scissorCount 1133 - &scissor); // pScissors 1134 } 1135 1136 void ··· 1151 1152 return do_ubo_and_src_alloc_and_write( // 1153 render, // 1154 - r->mesh.ubo_binding, // ubo_binding 1155 data, // ubo_ptr 1156 sizeof(*data), // ubo_size 1157 - r->mesh.src_binding, // src_binding 1158 - src_sampler, // src_sampler 1159 - src_image_view, // src_image_view 1160 - r->gfx.ubo_and_src_descriptor_pool, // descriptor_pool 1161 - r->mesh.descriptor_set_layout, // descriptor_set_layout 1162 - out_descriptor_set); // out_descriptor_set 1163 } 1164 1165 void ··· 1175 1176 VkDescriptorSet descriptor_sets[1] = {descriptor_set}; 1177 vk->vkCmdBindDescriptorSets( // 1178 - r->cmd, // commandBuffer 1179 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 1180 r->mesh.pipeline_layout, // layout 1181 0, // firstSet ··· 1189 do_timewarp ? render->rtr->rgrp->mesh.pipeline_timewarp : render->rtr->rgrp->mesh.pipeline; 1190 1191 vk->vkCmdBindPipeline( // 1192 - r->cmd, // commandBuffer 1193 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 1194 pipeline); // pipeline 1195 ··· 1203 assert(ARRAY_SIZE(buffers) == ARRAY_SIZE(offsets)); 1204 1205 vk->vkCmdBindVertexBuffers( // 1206 - r->cmd, // commandBuffer 1207 0, // firstBinding 1208 ARRAY_SIZE(buffers), // bindingCount 1209 buffers, // pBuffers ··· 1216 1217 if (r->mesh.index_count_total > 0) { 1218 vk->vkCmdBindIndexBuffer( // 1219 - r->cmd, // commandBuffer 1220 r->mesh.ibo.buffer, // buffer 1221 0, // offset 1222 VK_INDEX_TYPE_UINT32); // indexType 1223 1224 vk->vkCmdDrawIndexed( // 1225 - r->cmd, // commandBuffer 1226 r->mesh.index_counts[mesh_index], // indexCount 1227 1, // instanceCount 1228 r->mesh.index_offsets[mesh_index], // firstIndex ··· 1230 0); // firstInstance 1231 } else { 1232 vk->vkCmdDraw( // 1233 - r->cmd, // commandBuffer 1234 r->mesh.vertex_count, // vertexCount 1235 1, // instanceCount 1236 0, // firstVertex ··· 1257 return do_ubo_and_src_alloc_and_write( // 1258 render, // 1259 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1260 - data, // 1261 - sizeof(*data), // 1262 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1263 src_sampler, // 1264 src_image_view, // 1265 - r->gfx.ubo_and_src_descriptor_pool, // descriptor_pool 1266 - r->gfx.layer.shared.descriptor_set_layout, // descriptor_set_layout 1267 - out_descriptor_set); // out_descriptor_set 1268 } 1269 1270 XRT_CHECK_RESULT VkResult ··· 1279 return do_ubo_and_src_alloc_and_write( // 1280 render, // 1281 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1282 - data, // 1283 - sizeof(*data), // 1284 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1285 src_sampler, // 1286 src_image_view, // 1287 - r->gfx.ubo_and_src_descriptor_pool, // descriptor_pool 1288 - r->gfx.layer.shared.descriptor_set_layout, // descriptor_set_layout 1289 - out_descriptor_set); // out_descriptor_set 1290 } 1291 1292 XRT_CHECK_RESULT VkResult ··· 1301 return do_ubo_and_src_alloc_and_write( // 1302 render, // 1303 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1304 - data, // 1305 - sizeof(*data), // 1306 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1307 src_sampler, // 1308 src_image_view, // 1309 - r->gfx.ubo_and_src_descriptor_pool, // descriptor_pool 1310 - r->gfx.layer.shared.descriptor_set_layout, // descriptor_set_layout 1311 - out_descriptor_set); // out_descriptor_set 1312 } 1313 1314 XRT_CHECK_RESULT VkResult ··· 1323 return do_ubo_and_src_alloc_and_write( // 1324 render, // 1325 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1326 - data, // 1327 - sizeof(*data), // 1328 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1329 src_sampler, // 1330 src_image_view, // 1331 - r->gfx.ubo_and_src_descriptor_pool, // descriptor_pool 1332 - r->gfx.layer.shared.descriptor_set_layout, // descriptor_set_layout 1333 - out_descriptor_set); // out_descriptor_set 1334 } 1335 1336 void ··· 1353 dispatch_no_vbo( // 1354 render, // 1355 vertex_count, // vertex_count 1356 - pipeline, // pipeline 1357 - descriptor_set); // descriptor_set 1358 } 1359 1360 void ··· 1369 dispatch_no_vbo( // 1370 render, // 1371 4, // vertex_count 1372 - pipeline, // pipeline 1373 - descriptor_set); // descriptor_set 1374 } 1375 1376 void ··· 1385 dispatch_no_vbo( // 1386 render, // 1387 4, // vertex_count 1388 - pipeline, // pipeline 1389 - descriptor_set); // descriptor_set 1390 } 1391 1392 void ··· 1401 dispatch_no_vbo( // 1402 render, // 1403 4, // vertex_count 1404 - pipeline, // pipeline 1405 - descriptor_set); // descriptor_set 1406 }
··· 257 * Allocate and upload data. 258 */ 259 ret = render_sub_alloc_ubo_alloc_and_write( // 260 + vk, // 261 &render->ubo_tracker, // rsat 262 + ubo_ptr, // 263 + ubo_size, // 264 &ubo); // out_rsa 265 VK_CHK_AND_RET(ret, "render_sub_alloc_ubo_alloc_and_write"); 266 ··· 270 */ 271 272 ret = vk_create_descriptor_set( // 273 + vk, // 274 + descriptor_pool, // 275 + descriptor_set_layout, // 276 + &descriptor_set); // 277 VK_CHK_AND_RET(ret, "vk_create_descriptor_set"); 278 279 update_ubo_and_src_descriptor_set( // 280 + vk, // 281 + ubo_binding, // 282 + ubo.buffer, // 283 + ubo.offset, // 284 + ubo.size, // 285 + src_binding, // 286 + src_sampler, // 287 + src_image_view, // 288 + descriptor_set); // 289 290 *out_descriptor_set = descriptor_set; 291 ··· 301 302 VkDescriptorSet descriptor_sets[1] = {descriptor_set}; 303 vk->vkCmdBindDescriptorSets( // 304 + r->cmd, // 305 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 306 r->gfx.layer.shared.pipeline_layout, // layout 307 0, // firstSet ··· 311 NULL); // pDynamicOffsets 312 313 vk->vkCmdBindPipeline( // 314 + r->cmd, // 315 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 316 + pipeline); // 317 318 // This pipeline doesn't have any VBO input or indices. 319 320 vk->vkCmdDraw( // 321 + r->cmd, // 322 vertex_count, // vertexCount 323 1, // instanceCount 324 0, // firstVertex ··· 717 VkResult ret; 718 719 ret = create_implicit_render_pass( // 720 + vk, // 721 format, // target_format 722 + load_op, // 723 + final_layout, // 724 &rgrp->render_pass); // out_render_pass 725 VK_CHK_WITH_RET(ret, "create_implicit_render_pass", false); 726 VK_NAME_RENDER_PASS(vk, rgrp->render_pass, "render_gfx_render_pass render pass"); ··· 730 }; 731 732 ret = create_mesh_pipeline( // 733 + vk, // 734 + rgrp->render_pass, // 735 + r->mesh.pipeline_layout, // 736 + r->pipeline_cache, // 737 + r->mesh.src_binding, // 738 + r->mesh.index_count_total, // 739 + r->mesh.stride, // 740 + &simple_params, // 741 + r->shaders->mesh_vert, // 742 + r->shaders->mesh_frag, // 743 &rgrp->mesh.pipeline); // out_mesh_pipeline 744 VK_CHK_WITH_RET(ret, "create_mesh_pipeline", false); 745 VK_NAME_PIPELINE(vk, rgrp->mesh.pipeline, "render_gfx_render_pass mesh pipeline"); ··· 749 }; 750 751 ret = create_mesh_pipeline( // 752 + vk, // 753 + rgrp->render_pass, // 754 + r->mesh.pipeline_layout, // 755 + r->pipeline_cache, // 756 + r->mesh.src_binding, // 757 + r->mesh.index_count_total, // 758 + r->mesh.stride, // 759 + &timewarp_params, // 760 + r->shaders->mesh_vert, // 761 + r->shaders->mesh_frag, // 762 &rgrp->mesh.pipeline_timewarp); // out_mesh_pipeline 763 VK_CHK_WITH_RET(ret, "create_mesh_pipeline", false); 764 VK_NAME_PIPELINE(vk, rgrp->mesh.pipeline_timewarp, "render_gfx_render_pass mesh pipeline timewarp"); ··· 768 769 // Cylinder 770 ret = create_layer_pipeline( // 771 + vk, // 772 + rgrp->render_pass, // 773 + r->gfx.layer.shared.pipeline_layout, // 774 + r->pipeline_cache, // 775 blend_factor_premultiplied_alpha, // src_blend_factor 776 + r->shaders->layer_cylinder_vert, // 777 + r->shaders->layer_cylinder_frag, // 778 &rgrp->layer.cylinder_premultiplied_alpha); // out_pipeline 779 VK_CHK_WITH_RET(ret, "create_layer_pipeline", false); 780 VK_NAME_PIPELINE(vk, rgrp->layer.cylinder_premultiplied_alpha, 781 "render_gfx_render_pass cylinder premultiplied alpha"); 782 783 ret = create_layer_pipeline( // 784 + vk, // 785 + rgrp->render_pass, // 786 + r->gfx.layer.shared.pipeline_layout, // 787 + r->pipeline_cache, // 788 blend_factor_unpremultiplied_alpha, // src_blend_factor 789 r->shaders->layer_cylinder_vert, // module_vert 790 r->shaders->layer_cylinder_frag, // module_frag ··· 795 796 // Equirect2 797 ret = create_layer_pipeline( // 798 + vk, // 799 + rgrp->render_pass, // 800 + r->gfx.layer.shared.pipeline_layout, // 801 + r->pipeline_cache, // 802 blend_factor_premultiplied_alpha, // src_blend_factor 803 r->shaders->layer_equirect2_vert, // module_vert 804 r->shaders->layer_equirect2_frag, // module_frag ··· 808 "render_gfx_render_pass equirect2 premultiplied alpha"); 809 810 ret = create_layer_pipeline( // 811 + vk, // 812 + rgrp->render_pass, // 813 + r->gfx.layer.shared.pipeline_layout, // 814 + r->pipeline_cache, // 815 blend_factor_unpremultiplied_alpha, // src_blend_factor 816 r->shaders->layer_equirect2_vert, // module_vert 817 r->shaders->layer_equirect2_frag, // module_frag ··· 822 823 // Projection. 824 ret = create_layer_pipeline( // 825 + vk, // 826 + rgrp->render_pass, // 827 + r->gfx.layer.shared.pipeline_layout, // 828 + r->pipeline_cache, // 829 blend_factor_premultiplied_alpha, // src_blend_factor 830 r->shaders->layer_projection_vert, // module_vert 831 r->shaders->layer_shared_frag, // module_frag ··· 835 "render_gfx_render_pass projection premultiplied alpha"); 836 837 ret = create_layer_pipeline( // 838 + vk, // 839 + rgrp->render_pass, // 840 + r->gfx.layer.shared.pipeline_layout, // 841 + r->pipeline_cache, // 842 blend_factor_unpremultiplied_alpha, // src_blend_factor 843 r->shaders->layer_projection_vert, // module_vert 844 r->shaders->layer_shared_frag, // module_frag ··· 849 850 // Quad 851 ret = create_layer_pipeline( // 852 + vk, // 853 + rgrp->render_pass, // 854 + r->gfx.layer.shared.pipeline_layout, // 855 + r->pipeline_cache, // 856 blend_factor_premultiplied_alpha, // src_blend_factor 857 r->shaders->layer_quad_vert, // module_vert 858 r->shaders->layer_shared_frag, // module_frag ··· 861 VK_NAME_PIPELINE(vk, rgrp->layer.quad_premultiplied_alpha, "render_gfx_render_pass quad premultiplied alpha"); 862 863 ret = create_layer_pipeline( // 864 + vk, // 865 + rgrp->render_pass, // 866 + r->gfx.layer.shared.pipeline_layout, // 867 + r->pipeline_cache, // 868 blend_factor_unpremultiplied_alpha, // src_blend_factor 869 r->shaders->layer_quad_vert, // module_vert 870 r->shaders->layer_shared_frag, // module_frag ··· 923 rtr->r = r; 924 925 ret = create_framebuffer( // 926 + vk, // 927 + target, // image_view 928 + rgrp->render_pass, // 929 + extent.width, // 930 + extent.height, // 931 &rtr->framebuffer); // out_external_framebuffer 932 VK_CHK_WITH_RET(ret, "create_framebuffer", false); 933 VK_NAME_FRAMEBUFFER(vk, rtr->framebuffer, "render_gfx_target_resources framebuffer"); ··· 984 }; 985 986 ret = vk->vkBeginCommandBuffer( // 987 + render->r->cmd, // 988 + &begin_info); // 989 VK_CHK_WITH_RET(ret, "vkResetCommandPool", false); 990 991 vk->vkCmdResetQueryPool( // 992 + render->r->cmd, // 993 + render->r->query_pool, // 994 0, // firstQuery 995 2); // queryCount 996 997 vk->vkCmdWriteTimestamp( // 998 + render->r->cmd, // 999 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, // pipelineStage 1000 + render->r->query_pool, // 1001 0); // query 1002 1003 return true; ··· 1010 VkResult ret; 1011 1012 vk->vkCmdWriteTimestamp( // 1013 + render->r->cmd, // 1014 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, // pipelineStage 1015 + render->r->query_pool, // 1016 1); // query 1017 1018 ret = vk->vkEndCommandBuffer(render->r->cmd); ··· 1105 .maxDepth = 1.0f, 1106 }; 1107 1108 + vk->vkCmdSetViewport(render->r->cmd, // 1109 0, // firstViewport 1110 1, // viewportCount 1111 + &viewport); // 1112 1113 /* 1114 * Scissor ··· 1127 }, 1128 }; 1129 1130 + vk->vkCmdSetScissor(render->r->cmd, // 1131 0, // firstScissor 1132 1, // scissorCount 1133 + &scissor); // 1134 } 1135 1136 void ··· 1151 1152 return do_ubo_and_src_alloc_and_write( // 1153 render, // 1154 + r->mesh.ubo_binding, // 1155 data, // ubo_ptr 1156 sizeof(*data), // ubo_size 1157 + r->mesh.src_binding, // 1158 + src_sampler, // 1159 + src_image_view, // 1160 + r->gfx.ubo_and_src_descriptor_pool, // 1161 + r->mesh.descriptor_set_layout, // 1162 + out_descriptor_set); // 1163 } 1164 1165 void ··· 1175 1176 VkDescriptorSet descriptor_sets[1] = {descriptor_set}; 1177 vk->vkCmdBindDescriptorSets( // 1178 + r->cmd, // 1179 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 1180 r->mesh.pipeline_layout, // layout 1181 0, // firstSet ··· 1189 do_timewarp ? render->rtr->rgrp->mesh.pipeline_timewarp : render->rtr->rgrp->mesh.pipeline; 1190 1191 vk->vkCmdBindPipeline( // 1192 + r->cmd, // 1193 VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint 1194 pipeline); // pipeline 1195 ··· 1203 assert(ARRAY_SIZE(buffers) == ARRAY_SIZE(offsets)); 1204 1205 vk->vkCmdBindVertexBuffers( // 1206 + r->cmd, // 1207 0, // firstBinding 1208 ARRAY_SIZE(buffers), // bindingCount 1209 buffers, // pBuffers ··· 1216 1217 if (r->mesh.index_count_total > 0) { 1218 vk->vkCmdBindIndexBuffer( // 1219 + r->cmd, // 1220 r->mesh.ibo.buffer, // buffer 1221 0, // offset 1222 VK_INDEX_TYPE_UINT32); // indexType 1223 1224 vk->vkCmdDrawIndexed( // 1225 + r->cmd, // 1226 r->mesh.index_counts[mesh_index], // indexCount 1227 1, // instanceCount 1228 r->mesh.index_offsets[mesh_index], // firstIndex ··· 1230 0); // firstInstance 1231 } else { 1232 vk->vkCmdDraw( // 1233 + r->cmd, // 1234 r->mesh.vertex_count, // vertexCount 1235 1, // instanceCount 1236 0, // firstVertex ··· 1257 return do_ubo_and_src_alloc_and_write( // 1258 render, // 1259 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1260 + data, // ubo_ptr 1261 + sizeof(*data), // ubo_size 1262 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1263 src_sampler, // 1264 src_image_view, // 1265 + r->gfx.ubo_and_src_descriptor_pool, // 1266 + r->gfx.layer.shared.descriptor_set_layout, // 1267 + out_descriptor_set); // 1268 } 1269 1270 XRT_CHECK_RESULT VkResult ··· 1279 return do_ubo_and_src_alloc_and_write( // 1280 render, // 1281 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1282 + data, // ubo_ptr 1283 + sizeof(*data), // ubo_size 1284 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1285 src_sampler, // 1286 src_image_view, // 1287 + r->gfx.ubo_and_src_descriptor_pool, // 1288 + r->gfx.layer.shared.descriptor_set_layout, // 1289 + out_descriptor_set); // 1290 } 1291 1292 XRT_CHECK_RESULT VkResult ··· 1301 return do_ubo_and_src_alloc_and_write( // 1302 render, // 1303 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1304 + data, // ubo_ptr 1305 + sizeof(*data), // ubo_size 1306 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1307 src_sampler, // 1308 src_image_view, // 1309 + r->gfx.ubo_and_src_descriptor_pool, // 1310 + r->gfx.layer.shared.descriptor_set_layout, // 1311 + out_descriptor_set); // 1312 } 1313 1314 XRT_CHECK_RESULT VkResult ··· 1323 return do_ubo_and_src_alloc_and_write( // 1324 render, // 1325 RENDER_BINDING_LAYER_SHARED_UBO, // ubo_binding 1326 + data, // ubo_ptr 1327 + sizeof(*data), // ubo_size 1328 RENDER_BINDING_LAYER_SHARED_SRC, // src_binding 1329 src_sampler, // 1330 src_image_view, // 1331 + r->gfx.ubo_and_src_descriptor_pool, // 1332 + r->gfx.layer.shared.descriptor_set_layout, // 1333 + out_descriptor_set); // 1334 } 1335 1336 void ··· 1353 dispatch_no_vbo( // 1354 render, // 1355 vertex_count, // vertex_count 1356 + pipeline, // 1357 + descriptor_set); // 1358 } 1359 1360 void ··· 1369 dispatch_no_vbo( // 1370 render, // 1371 4, // vertex_count 1372 + pipeline, // 1373 + descriptor_set); // 1374 } 1375 1376 void ··· 1385 dispatch_no_vbo( // 1386 render, // 1387 4, // vertex_count 1388 + pipeline, // 1389 + descriptor_set); // 1390 } 1391 1392 void ··· 1401 dispatch_no_vbo( // 1402 render, // 1403 4, // vertex_count 1404 + pipeline, // 1405 + descriptor_set); // 1406 }