ipc+comp: Use new xrt_layer_data and friends struct

This commit is contained in:
Jakob Bornecrantz 2020-06-09 18:47:56 +01:00 committed by Jakob Bornecrantz
parent 5912964ded
commit 320c9ab3cb
4 changed files with 13 additions and 80 deletions

View file

@ -319,7 +319,7 @@ compositor_layer_stereo_projection(struct xrt_compositor *xc,
uint32_t layer_id = c->slots[slot_id].num_layers;
struct comp_layer *layer = &c->slots[slot_id].layers[layer_id];
struct comp_layer_data *data = &layer->data;
struct xrt_layer_data *data = &layer->data;
layer->scs[0] = comp_swapchain(l_sc);
layer->scs[1] = comp_swapchain(r_sc);
@ -358,9 +358,9 @@ compositor_layer_quad(struct xrt_compositor *xc,
uint32_t layer_id = c->slots[slot_id].num_layers;
struct comp_layer *layer = &c->slots[slot_id].layers[layer_id];
struct comp_layer_data *data = &layer->data;
struct xrt_layer_data *data = &layer->data;
layer->scs[0] = comp_swapchain(sc);
layer->scs[0] = NULL;
layer->scs[1] = NULL;
data->quad.visibility = visibility;
data->quad.image_index = image_index;
@ -393,10 +393,10 @@ compositor_layer_commit(struct xrt_compositor *xc)
for (uint32_t i = 0; i < num_layers; i++) {
struct comp_layer *layer = &c->slots[slot_id].layers[i];
struct comp_layer_data *data = &layer->data;
struct xrt_layer_data *data = &layer->data;
switch (data->type) {
case XRT_LAYER_QUAD: {
struct comp_layer_quad *quad = &layer->data.quad;
struct xrt_layer_quad_data *quad = &layer->data.quad;
struct comp_swapchain_image *image;
image = &layer->scs[0]->images[quad->image_index];
comp_renderer_set_quad_layer(c->r, image, &quad->pose,
@ -404,7 +404,8 @@ compositor_layer_commit(struct xrt_compositor *xc)
i, quad->array_index);
} break;
case XRT_LAYER_STEREO_PROJECTION: {
struct comp_layer_stereo *stereo = &data->stereo;
struct xrt_layer_stereo_projection_data *stereo =
&data->stereo;
struct comp_swapchain_image *right;
struct comp_swapchain_image *left;
left = &layer->scs[0]->images[stereo->l.image_index];

View file

@ -96,35 +96,6 @@ struct comp_layer_quad
struct xrt_vec2 size;
};
/*!
* A stereo projection layer.
*
* @ingroup comp_main
* @see comp_layer
*/
struct comp_layer_stereo
{
struct
{
uint32_t image_index;
uint32_t array_index;
} l, r;
};
struct comp_layer_data
{
enum xrt_layer_type type;
enum xrt_layer_composition_flags flags;
int64_t timestamp;
bool flip_y;
union {
struct comp_layer_quad quad;
struct comp_layer_stereo stereo;
};
};
/*!
* A single layer.
*
@ -135,7 +106,7 @@ struct comp_layer
{
struct comp_swapchain *scs[2];
struct comp_layer_data data;
struct xrt_layer_data data;
};
/*!

View file

@ -364,8 +364,8 @@ ipc_compositor_layer_stereo_projection(
struct ipc_shared_memory *ism = icc->ipc_c->ism;
struct ipc_layer_slot *slot = &ism->slots[icc->layers.slot_id];
struct ipc_layer_entry *layer = &slot->layers[icc->layers.num_layers];
struct ipc_layer_data *data = &layer->data;
struct ipc_layer_stereo_projection *stereo = &data->stereo;
struct xrt_layer_data *data = &layer->data;
struct xrt_layer_stereo_projection_data *stereo = &data->stereo;
struct ipc_client_swapchain *l = ipc_client_swapchain(l_sc);
struct ipc_client_swapchain *r = ipc_client_swapchain(r_sc);
@ -416,8 +416,8 @@ ipc_compositor_layer_quad(struct xrt_compositor *xc,
struct ipc_shared_memory *ism = icc->ipc_c->ism;
struct ipc_layer_slot *slot = &ism->slots[icc->layers.slot_id];
struct ipc_layer_entry *layer = &slot->layers[icc->layers.num_layers];
struct ipc_layer_data *data = &layer->data;
struct ipc_layer_quad *quad = &data->quad;
struct xrt_layer_data *data = &layer->data;
struct xrt_layer_quad_data *quad = &data->quad;
struct ipc_client_swapchain *ics = ipc_client_swapchain(sc);
layer->xdev_id = 0; //! @todo Real id.

View file

@ -73,51 +73,12 @@ struct ipc_shared_device
uint32_t first_output_index;
};
struct ipc_layer_stereo_projection
{
struct
{
uint32_t image_index;
uint32_t array_index;
struct xrt_rect rect;
struct xrt_fov fov;
struct xrt_pose pose;
} l, r;
};
struct ipc_layer_quad
{
enum xrt_layer_eye_visibility visibility;
uint32_t image_index;
uint32_t array_index;
struct xrt_rect rect;
struct xrt_pose pose;
struct xrt_vec2 size;
};
struct ipc_layer_data
{
enum xrt_layer_type type;
enum xrt_input_name name;
uint64_t timestamp;
enum xrt_layer_composition_flags flags;
bool flip_y;
union {
struct ipc_layer_quad quad;
struct ipc_layer_stereo_projection stereo;
};
};
struct ipc_layer_entry
{
uint32_t xdev_id;
uint32_t swapchain_ids[2];
struct ipc_layer_data data;
struct xrt_layer_data data;
};
struct ipc_layer_slot