···5353};
54545555/*!
5656+ * Collection of semaphores needed for a target.
5757+ *
5858+ * @ingroup comp_main
5959+ */
6060+struct comp_target_semaphores
6161+{
6262+ /*!
6363+ * Optional semaphore the target should signal when present is complete.
6464+ */
6565+ VkSemaphore present_complete;
6666+6767+ /*!
6868+ * Semaphore the renderer (consuming this target)
6969+ * should signal when rendering is complete.
7070+ */
7171+ VkSemaphore render_complete;
7272+7373+ /*!
7474+ * If true, @ref render_complete is a timeline
7575+ * semaphore instead of a binary semaphore.
7676+ */
7777+ bool render_complete_is_timeline;
7878+};
7979+8080+/*!
5681 * @brief A compositor target: where the compositor renders to.
5782 *
5883 * A target is essentially a swapchain, but it is such a overloaded term so
···86111 //! Transformation of the current surface, required for pre-rotation
87112 VkSurfaceTransformFlagBitsKHR surface_transform;
881138989- struct
9090- {
9191- //! Optional semaphore the target should signal when present is complete.
9292- VkSemaphore present_complete;
9393-9494- //! Semaphore the renderer (consuming this target) should signal when rendering is complete.
9595- VkSemaphore render_complete;
9696-9797- //! If true, @ref render_complete is a timeline semaphore instead of a binary semaphore
9898- bool render_complete_is_timeline;
9999- } semaphores;
114114+ // Holds semaphore information.
115115+ struct comp_target_semaphores semaphores;
100116101117 /*
102118 *
···140156 /*!
141157 * Has this target successfully had images created?
142158 *
143143- * Call before calling @ref acquire - if false but @ref check_ready is true, you'll need to call @ref
144144- * create_images
159159+ * Call before calling @ref acquire - if false but @ref check_ready is
160160+ * true, you'll need to call @ref create_images.
145161 */
146162 bool (*has_images)(struct comp_target *ct);
147163148164 /*!
149165 * Acquire the next image for rendering.
150166 *
151151- * If @ref semaphores::present_complete is not null, your use of this image should wait on it.
167167+ * If @ref comp_target_semaphores::present_complete is not null,
168168+ * your use of this image should wait on it..
152169 *
153153- * @pre @ref has_images returns true
170170+ * @pre @ref has_images() returns true
154171 */
155172 VkResult (*acquire)(struct comp_target *ct, uint32_t *out_index);
156173···162179 * @param ct self
163180 * @param queue The Vulkan queue being used
164181 * @param index The swapchain image index to present
165165- * @param timeline_semaphore_value The value to await on @ref semaphores::render_complete if @ref
166166- * semaphores::render_complete_is_timeline is true.
182182+ * @param timeline_semaphore_value The value to await on @ref comp_target_semaphores::render_complete
183183+ * if @ref comp_target_semaphores::render_complete_is_timeline is true.
167184 * @param desired_present_time_ns The timestamp to present at, ideally.
168185 * @param present_slop_ns TODO
169186 */