|
Monado OpenXR Runtime
|
Compositor (compute shader) rendering code. More...
#include "util/comp_layer_accum.h"#include "xrt/xrt_compositor.h"#include "os/os_time.h"#include "math/m_api.h"#include "math/m_mathinclude.h"#include "util/u_misc.h"#include "util/u_trace_marker.h"#include "vk/vk_helpers.h"#include "render/render_interface.h"#include "shaders/layer_defines.inc.glsl"#include "util/comp_render.h"#include "util/comp_render_helpers.h"#include "util/comp_base.h"
Functions | |
| static const struct comp_swapchain_image * | get_layer_image (const struct comp_layer *layer, uint32_t swapchain_index, uint32_t image_index) |
| static const struct comp_swapchain_image * | get_layer_depth_image (const struct comp_layer *layer, uint32_t swapchain_index, uint32_t image_index) |
| static uint32_t | xrt_layer_to_cs_layer_type (const struct xrt_layer_data *data) |
| static void | do_cs_cylinder_layer (const struct comp_layer *layer, const struct xrt_matrix_4x4 *eye_view_mat, const struct xrt_matrix_4x4 *world_view_mat, uint32_t view_index, uint32_t cur_layer, uint32_t cur_image, VkSampler clamp_to_edge, VkSampler clamp_to_border_black, VkSampler src_samplers[RENDER_MAX_IMAGES_SIZE], VkImageView src_image_views[RENDER_MAX_IMAGES_SIZE], struct render_compute_layer_ubo_data *ubo_data, uint32_t *out_cur_image) |
| Data setup for a cylinder layer. | |
| static void | do_cs_equirect2_layer (const struct comp_layer *layer, const struct xrt_matrix_4x4 *eye_view_mat, const struct xrt_matrix_4x4 *world_view_mat, uint32_t view_index, uint32_t cur_layer, uint32_t cur_image, VkSampler clamp_to_edge, VkSampler clamp_to_border_black, VkSampler src_samplers[RENDER_MAX_IMAGES_SIZE], VkImageView src_image_views[RENDER_MAX_IMAGES_SIZE], struct render_compute_layer_ubo_data *ubo_data, uint32_t *out_cur_image) |
| Data setup for an "equirect2" layer. | |
| static void | do_cs_projection_layer (const struct comp_layer *layer, const struct xrt_pose *world_pose_scanout_begin, uint32_t view_index, uint32_t cur_layer, uint32_t cur_image, VkSampler clamp_to_edge, VkSampler clamp_to_border_black, VkSampler src_samplers[RENDER_MAX_IMAGES_SIZE], VkImageView src_image_views[RENDER_MAX_IMAGES_SIZE], struct render_compute_layer_ubo_data *ubo_data, bool do_timewarp, uint32_t *out_cur_image) |
| Data setup for a projection layer. | |
| static void | do_cs_quad_layer (const struct comp_layer *layer, const struct xrt_matrix_4x4 *eye_view_mat, const struct xrt_matrix_4x4 *world_view_mat, uint32_t view_index, uint32_t cur_layer, uint32_t cur_image, VkSampler clamp_to_edge, VkSampler clamp_to_border_black, VkSampler src_samplers[RENDER_MAX_IMAGES_SIZE], VkImageView src_image_views[RENDER_MAX_IMAGES_SIZE], struct render_compute_layer_ubo_data *ubo_data, uint32_t *out_cur_image) |
| Data setup for a quad layer. | |
| static void | crc_clear_output (struct render_compute *render, const struct comp_render_dispatch_data *d) |
| static void | crc_distortion_after_squash (struct render_compute *render, const struct comp_render_dispatch_data *d) |
| For use after squashing layers. | |
| static void | crc_distortion_fast_path (struct render_compute *render, const struct comp_render_dispatch_data *d, const struct comp_layer *layer, const struct xrt_layer_projection_view_data *vds[XRT_MAX_VIEWS]) |
| Fast path. | |
| void | comp_render_cs_layer (struct render_compute *render, uint32_t view_index, const struct comp_layer *layers, const uint32_t layer_count, const struct xrt_normalized_rect *pre_transform, const struct xrt_pose *world_pose_scanout_begin, const struct xrt_pose *world_pose_scanout_end, const struct xrt_pose *eye_pose, const VkImage target_image, const VkImageView target_image_view, const struct render_viewport_data *target_view, bool do_timewarp) |
| Dispatch the layer squasher for a single view. | |
| void | comp_render_cs_layers (struct render_compute *render, const struct comp_layer *layers, const uint32_t layer_count, const struct comp_render_dispatch_data *d, VkImageLayout transition_to) |
| Dispatch the layer squasher, on any number of views. | |
| void | comp_render_cs_dispatch (struct render_compute *render, const struct comp_layer *layers, const uint32_t layer_count, const struct comp_render_dispatch_data *d) |
Write commands to render to do a full composition with distortion. | |
Compositor (compute shader) rendering code.
|
static |
For use after squashing layers.
References render_resources::clamp_to_border_black, comp_render_dispatch_data::cs, comp_render_dispatch_data::do_timewarp, comp_render_view_data::fov, comp_render_dispatch_data::image, comp_render_view_data::norm_rect, render_compute::r, comp_render_view_data::sample_view, comp_render_dispatch_data::storage_view, U_LOG_E, comp_render_dispatch_data::view_count, comp_render_view_data::viewport_data, comp_render_view_data::world_pose_scanout_begin, and comp_render_view_data::world_pose_scanout_end.
Referenced by comp_render_cs_dispatch().
|
static |
Fast path.
References render_resources::clamp_to_border_black, comp_render_dispatch_data::cs, comp_layer::data, comp_render_dispatch_data::do_timewarp, comp_render_dispatch_data::image, render_compute::r, comp_render_dispatch_data::storage_view, U_LOG_E, comp_render_dispatch_data::view_count, comp_render_view_data::viewport_data, comp_render_view_data::world_pose_scanout_begin, and comp_render_view_data::world_pose_scanout_end.
Referenced by comp_render_cs_dispatch().
|
inlinestatic |
Data setup for a cylinder layer.
References xrt_sub_image::array_index, render_compute_layer_ubo_data::cylinder_data, comp_layer::data, xrt_layer_data::flags, xrt_sub_image::image_index, render_compute_layer_ubo_data::image_info, xrt_matrix_4x4::math_matrix_4x4_inverse(), xrt_matrix_4x4::math_matrix_4x4_model(), xrt_matrix_4x4::math_matrix_4x4_multiply(), render_compute_layer_ubo_data::mv_inverse, and xrt_sub_image::norm_rect.
Referenced by comp_render_cs_layer().
|
inlinestatic |
Data setup for an "equirect2" layer.
References xrt_sub_image::array_index, comp_layer::data, render_compute_layer_ubo_data::eq2_data, xrt_layer_data::flags, xrt_sub_image::image_index, render_compute_layer_ubo_data::image_info, xrt_matrix_4x4::math_matrix_4x4_inverse(), xrt_matrix_4x4::math_matrix_4x4_model(), xrt_matrix_4x4::math_matrix_4x4_multiply(), render_compute_layer_ubo_data::mv_inverse, and xrt_sub_image::norm_rect.
Referenced by comp_render_cs_layer().
|
inlinestatic |
Data setup for a projection layer.
References xrt_sub_image::array_index, comp_layer::data, xrt_layer_data::flags, xrt_sub_image::image_index, render_compute_layer_ubo_data::image_info, xrt_sub_image::norm_rect, render_calc_time_warp_matrix(), render_compute_layer_ubo_data::transforms_timewarp, and xrt_layer_data::type.
Referenced by comp_render_cs_layer().
|
inlinestatic |
Data setup for a quad layer.
References xrt_sub_image::array_index, comp_layer::data, xrt_layer_data::flags, xrt_sub_image::image_index, render_compute_layer_ubo_data::image_info, xrt_matrix_4x4::math_matrix_4x4_inverse(), xrt_matrix_4x4::math_matrix_4x4_model(), xrt_matrix_4x4::math_matrix_4x4_multiply(), math_matrix_4x4_transform_vec3(), xrt_quat::math_quat_rotate_vec3(), xrt_vec3::math_vec3_accum(), xrt_vec3::math_vec3_subtract(), xrt_sub_image::norm_rect, render_compute_layer_ubo_data::quad_extent, render_compute_layer_ubo_data::quad_position, and XRT_STRUCT_INIT.
Referenced by comp_render_cs_layer().