The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

c/util: Re-arrange comp_render_cs to ease comparison against comp_render_gfx

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

+64 -64
+64 -64
src/xrt/compositor/util/comp_render_cs.c
··· 54 54 } 55 55 56 56 static inline void 57 + do_cs_cylinder_layer(const struct comp_layer *layer, 58 + const struct xrt_matrix_4x4 *eye_view_mat, 59 + const struct xrt_matrix_4x4 *world_view_mat, 60 + uint32_t view_index, 61 + uint32_t cur_layer, 62 + uint32_t cur_image, 63 + VkSampler clamp_to_edge, 64 + VkSampler clamp_to_border_black, 65 + VkSampler src_samplers[RENDER_MAX_IMAGES_SIZE], 66 + VkImageView src_image_views[RENDER_MAX_IMAGES_SIZE], 67 + struct render_compute_layer_ubo_data *ubo_data, 68 + uint32_t *out_cur_image) 69 + { 70 + const struct xrt_layer_data *layer_data = &layer->data; 71 + const struct xrt_layer_cylinder_data *c = &layer_data->cylinder; 72 + const uint32_t array_index = c->sub.array_index; 73 + const struct comp_swapchain_image *image = get_layer_image(layer, 0, c->sub.image_index); 74 + 75 + // Image to use. 76 + src_samplers[cur_image] = clamp_to_edge; 77 + src_image_views[cur_image] = get_image_view(image, layer_data->flags, array_index); 78 + 79 + // Used for Subimage and OpenGL flip. 80 + set_post_transform_rect( // 81 + layer_data, // data 82 + &c->sub.norm_rect, // src_norm_rect 83 + false, // invert_flip 84 + &ubo_data->post_transforms[cur_layer]); // out_norm_rect 85 + 86 + ubo_data->cylinder_data[cur_layer].central_angle = c->central_angle; 87 + ubo_data->cylinder_data[cur_layer].aspect_ratio = c->aspect_ratio; 88 + 89 + struct xrt_vec3 scale = {1.f, 1.f, 1.f}; 90 + 91 + struct xrt_matrix_4x4 model; 92 + math_matrix_4x4_model(&c->pose, &scale, &model); 93 + 94 + struct xrt_matrix_4x4 model_inv; 95 + math_matrix_4x4_inverse(&model, &model_inv); 96 + 97 + const struct xrt_matrix_4x4 *v = is_layer_view_space(layer_data) ? eye_view_mat : world_view_mat; 98 + 99 + struct xrt_matrix_4x4 v_inv; 100 + math_matrix_4x4_inverse(v, &v_inv); 101 + 102 + math_matrix_4x4_multiply(&model_inv, &v_inv, &ubo_data->mv_inverse[cur_layer]); 103 + 104 + // Simplifies the shader. 105 + if (c->radius >= INFINITY) { 106 + ubo_data->cylinder_data[cur_layer].radius = 0.f; 107 + } else { 108 + ubo_data->cylinder_data[cur_layer].radius = c->radius; 109 + } 110 + 111 + ubo_data->cylinder_data[cur_layer].central_angle = c->central_angle; 112 + ubo_data->cylinder_data[cur_layer].aspect_ratio = c->aspect_ratio; 113 + 114 + ubo_data->images_samplers[cur_layer].images[0] = cur_image; 115 + cur_image++; 116 + 117 + *out_cur_image = cur_image; 118 + } 119 + 120 + static inline void 57 121 do_cs_equirect2_layer(const struct comp_layer *layer, 58 122 const struct xrt_matrix_4x4 *eye_view_mat, 59 123 const struct xrt_matrix_4x4 *world_view_mat, ··· 258 322 *out_cur_image = cur_image; 259 323 } 260 324 261 - 262 - static inline void 263 - do_cs_cylinder_layer(const struct comp_layer *layer, 264 - const struct xrt_matrix_4x4 *eye_view_mat, 265 - const struct xrt_matrix_4x4 *world_view_mat, 266 - uint32_t view_index, 267 - uint32_t cur_layer, 268 - uint32_t cur_image, 269 - VkSampler clamp_to_edge, 270 - VkSampler clamp_to_border_black, 271 - VkSampler src_samplers[RENDER_MAX_IMAGES_SIZE], 272 - VkImageView src_image_views[RENDER_MAX_IMAGES_SIZE], 273 - struct render_compute_layer_ubo_data *ubo_data, 274 - uint32_t *out_cur_image) 275 - { 276 - const struct xrt_layer_data *layer_data = &layer->data; 277 - const struct xrt_layer_cylinder_data *c = &layer_data->cylinder; 278 - const uint32_t array_index = c->sub.array_index; 279 - const struct comp_swapchain_image *image = get_layer_image(layer, 0, c->sub.image_index); 280 - 281 - // Image to use. 282 - src_samplers[cur_image] = clamp_to_edge; 283 - src_image_views[cur_image] = get_image_view(image, layer_data->flags, array_index); 284 - 285 - // Used for Subimage and OpenGL flip. 286 - set_post_transform_rect( // 287 - layer_data, // data 288 - &c->sub.norm_rect, // src_norm_rect 289 - false, // invert_flip 290 - &ubo_data->post_transforms[cur_layer]); // out_norm_rect 291 - 292 - ubo_data->cylinder_data[cur_layer].central_angle = c->central_angle; 293 - ubo_data->cylinder_data[cur_layer].aspect_ratio = c->aspect_ratio; 294 - 295 - struct xrt_vec3 scale = {1.f, 1.f, 1.f}; 296 - 297 - struct xrt_matrix_4x4 model; 298 - math_matrix_4x4_model(&c->pose, &scale, &model); 299 - 300 - struct xrt_matrix_4x4 model_inv; 301 - math_matrix_4x4_inverse(&model, &model_inv); 302 - 303 - const struct xrt_matrix_4x4 *v = is_layer_view_space(layer_data) ? eye_view_mat : world_view_mat; 304 - 305 - struct xrt_matrix_4x4 v_inv; 306 - math_matrix_4x4_inverse(v, &v_inv); 307 - 308 - math_matrix_4x4_multiply(&model_inv, &v_inv, &ubo_data->mv_inverse[cur_layer]); 309 - 310 - // Simplifies the shader. 311 - if (c->radius >= INFINITY) { 312 - ubo_data->cylinder_data[cur_layer].radius = 0.f; 313 - } else { 314 - ubo_data->cylinder_data[cur_layer].radius = c->radius; 315 - } 316 - 317 - ubo_data->cylinder_data[cur_layer].central_angle = c->central_angle; 318 - ubo_data->cylinder_data[cur_layer].aspect_ratio = c->aspect_ratio; 319 - 320 - ubo_data->images_samplers[cur_layer].images[0] = cur_image; 321 - cur_image++; 322 - 323 - *out_cur_image = cur_image; 324 - } 325 325 326 326 327 327 /*