mirror of
https://github.com/lbgos/rift-s-linux.git
synced 2026-10-29 04:02:05 +01:00
c/main: Remove old graphics dispatch helpers
This commit is contained in:
1 parent
3dcd555a6f
commit
958d62fcab
1 file changed
-145
@@ -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)
|
||||
*/
|
||||
|
||||
Reference in new issue
Block a user