···534534 &rr->views[1].mesh.descriptor_set); // descriptor_set
535535 VK_CHK_WITH_RET(ret, "vk_create_descriptor_set", false);
536536537537+ // Used to sub-allocate UBOs from, restart from scratch each frame.
538538+ render_sub_alloc_tracker_init(&rr->ubo_tracker, &r->gfx.shared_ubo);
539539+537540 return true;
538541}
539542
+15
src/xrt/compositor/render/render_interface.h
···388388389389 struct
390390 {
391391+ /*!
392392+ * Shared UBO buffer that we sub-allocate out of, this is to
393393+ * have fewer buffers that the kernel needs to validate on
394394+ * command submission time.
395395+ *
396396+ * https://registry.khronos.org/vulkan/site/guide/latest/memory_allocation.html
397397+ */
398398+ struct render_buffer shared_ubo;
399399+ } gfx;
400400+401401+ struct
402402+ {
391403 //! The binding index for the source texture.
392404 uint32_t src_binding;
393405···781793{
782794 //! Resources that we are based on.
783795 struct render_resources *r;
796796+797797+ //! Shared buffer that we sub-allocate UBOs from.
798798+ struct render_sub_alloc_tracker ubo_tracker;
784799785800 //! The current target we are rendering too, can change during command building.
786801 struct render_gfx_target_resources *rtr;