c/main: Remove old graphics dispatch helpers

This commit is contained in:
Jakob Bornecrantz committed 2023-10-24 12:33:05 +00:00
1 parent 3dcd555a6f
commit 958d62fcab
1 file changed
-145
-145
View File
@@ -796,151 +796,6 @@ get_image_view(const struct comp_swapchain_image *image, enum xrt_layer_composit
*
*/
static void
do_gfx_mesh(struct comp_renderer *r,
struct render_gfx *rr,
struct render_gfx_target_resources *rtr,
const struct render_viewport_data viewport_datas[2],
const struct xrt_matrix_2x2 vertex_rots[2],
VkSampler src_samplers[2],
VkImageView src_image_views[2],
const struct xrt_normalized_rect src_norm_rects[2],
const struct xrt_pose src_poses[2],
const struct xrt_fov src_fovs[2],
const struct xrt_pose new_poses[2],
bool do_timewarp)
{
struct vk_bundle *vk = &r->c->base.vk;
VkResult ret;
/*
* Reserve UBOs, create descriptor sets, and fill in any data a head of
* time, if we ever want to copy UBO data this lets us do that easily
* write a copy command before the other gfx commands.
*/
VkDescriptorSet descriptor_sets[2] = XRT_STRUCT_INIT;
for (uint32_t i = 0; i < 2; i++) {
struct render_gfx_mesh_ubo_data data = {
.vertex_rot = vertex_rots[i],
.post_transform = src_norm_rects[i],
};
// Extra arguments for timewarp.
if (do_timewarp) {
data.pre_transform = rr->r->distortion.uv_to_tanangle[i];
render_calc_time_warp_matrix( //
&src_poses[i], //
&src_fovs[i], //
&new_poses[i], //
&data.transform); //
}
ret = render_gfx_mesh_alloc_and_write( //
rr, //
&data, //
src_samplers[i], //
src_image_views[i], //
&descriptor_sets[i]); //
VK_CHK_WITH_GOTO(ret, "render_gfx_mesh_alloc", err_no_memory);
}
/*
* Do command writing here.
*/
const VkClearColorValue black = {.float32 = {0.0f, 0.0f, 0.0f, 1.0f}};
render_gfx_begin_target( //
rr, //
rtr, //
&black); //
for (uint32_t i = 0; i < 2; i++) {
render_gfx_begin_view( //
rr, //
i, // view_index
&viewport_datas[i]); // viewport_data
render_gfx_mesh_draw( //
rr, // rr
i, // mesh_index
descriptor_sets[i], // descriptor_set
do_timewarp); // do_timewarp
render_gfx_end_view(rr);
}
render_gfx_end_target(rr);
return;
err_no_memory:
// Allocator reset at end of frame, nothing to clean up.
VK_ERROR(vk, "Could not allocate all UBOs for frame, that's really strange and shouldn't happen!");
}
/*!
* @pre render_gfx_init(rr, &c->nr)
*/
static void
do_gfx_mesh_and_proj(struct comp_renderer *r,
struct render_gfx *rr,
struct render_gfx_target_resources *rts,
const struct render_viewport_data viewport_datas[2],
const struct xrt_matrix_2x2 vertex_rots[2],
const struct comp_layer *layer,
const struct xrt_layer_projection_view_data *lvd,
const struct xrt_layer_projection_view_data *rvd,
const struct xrt_pose new_poses[2],
bool do_timewarp)
{
const struct xrt_layer_data *data = &layer->data;
const uint32_t left_array_index = lvd->sub.array_index;
const uint32_t right_array_index = rvd->sub.array_index;
const struct comp_swapchain_image *left = &layer->sc_array[0]->images[lvd->sub.image_index];
const struct comp_swapchain_image *right = &layer->sc_array[1]->images[rvd->sub.image_index];
struct xrt_normalized_rect src_norm_rects[2] = {lvd->sub.norm_rect, rvd->sub.norm_rect};
if (data->flip_y) {
src_norm_rects[0].h = -src_norm_rects[0].h;
src_norm_rects[0].y = 1 + src_norm_rects[0].y;
src_norm_rects[1].h = -src_norm_rects[1].h;
src_norm_rects[1].y = 1 + src_norm_rects[1].y;
}
VkSampler clamp_to_border_black = rr->r->samplers.clamp_to_border_black;
VkSampler src_samplers[2] = {
clamp_to_border_black,
clamp_to_border_black,
};
VkImageView src_image_views[2] = {
get_image_view(left, data->flags, left_array_index),
get_image_view(right, data->flags, right_array_index),
};
const struct xrt_pose src_poses[2] = {lvd->pose, rvd->pose};
const struct xrt_fov src_fovs[2] = {lvd->fov, rvd->fov};
do_gfx_mesh( //
r, //
rr, //
rts, //
viewport_datas, //
vertex_rots, //
src_samplers, //
src_image_views, //
src_norm_rects, //
src_poses, //
src_fovs, //
new_poses, //
do_timewarp); //
}
/*!
* @pre render_gfx_init(rr, &c->nr)
*/