The open source OpenXR runtime
0
fork

Configure Feed

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

c/layers: Don't build equirect code if not enabled.

authored by

Lubosz Sarnecki and committed by
Jakob Bornecrantz
200fb5ae 4995854d

+46 -10
+4
src/xrt/compositor/main/comp_compositor.c
··· 522 522 image = &layer->scs[0]->images[cyl->sub.image_index]; 523 523 comp_renderer_set_cylinder_layer(c->r, i, image, data); 524 524 } break; 525 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 525 526 case XRT_LAYER_EQUIRECT1: { 526 527 struct xrt_layer_equirect1_data *eq = 527 528 &layer->data.equirect1; ··· 529 530 image = &layer->scs[0]->images[eq->sub.image_index]; 530 531 comp_renderer_set_equirect1_layer(c->r, i, image, data); 531 532 } break; 533 + #endif 534 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 532 535 case XRT_LAYER_EQUIRECT2: { 533 536 struct xrt_layer_equirect2_data *eq = 534 537 &layer->data.equirect2; ··· 536 539 image = &layer->scs[0]->images[eq->sub.image_index]; 537 540 comp_renderer_set_equirect2_layer(c->r, i, image, data); 538 541 } break; 542 + #endif 539 543 case XRT_LAYER_CUBE: 540 544 // Should never end up here. 541 545 assert(false);
+22 -5
src/xrt/compositor/main/comp_layer.c
··· 83 83 return true; 84 84 } 85 85 86 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 86 87 static bool 87 88 _init_equirect1_ubo(struct comp_render_layer *self) 88 89 { ··· 107 108 108 109 return true; 109 110 } 110 - 111 + #endif 112 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 111 113 static bool 112 114 _init_equirect2_ubo(struct comp_render_layer *self) 113 115 { ··· 132 134 133 135 return true; 134 136 } 137 + #endif 135 138 136 139 static void 137 140 _update_descriptor(struct comp_render_layer *self, ··· 176 179 vk->vkUpdateDescriptorSets(vk->device, 2, sets, 0, NULL); 177 180 } 178 181 182 + #if defined(XRT_FEATURE_OPENXR_LAYER_EQUIRECT1) || \ 183 + defined(XRT_FEATURE_OPENXR_LAYER_EQUIRECT2) 179 184 static void 180 185 _update_descriptor_equirect(struct comp_render_layer *self, 181 186 VkDescriptorSet set, ··· 200 205 201 206 self->vk->vkUpdateDescriptorSets(self->vk->device, 1, sets, 0, NULL); 202 207 } 208 + #endif 203 209 204 210 void 205 211 comp_layer_update_descriptors(struct comp_render_layer *self, ··· 212 218 sampler, image_view); 213 219 } 214 220 221 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 215 222 void 216 223 comp_layer_update_equirect1_descriptor(struct comp_render_layer *self, 217 224 struct xrt_layer_equirect1_data *data) ··· 227 234 memcpy(self->equirect1_ubo.data, &self->equirect1_data, 228 235 sizeof(struct layer_equirect1_data)); 229 236 } 230 - 237 + #endif 238 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 231 239 void 232 240 comp_layer_update_equirect2_descriptor(struct comp_render_layer *self, 233 241 struct xrt_layer_equirect2_data *data) ··· 244 252 memcpy(self->equirect2_ubo.data, &self->equirect2_data, 245 253 sizeof(struct layer_equirect2_data)); 246 254 } 255 + #endif 247 256 248 257 void 249 258 comp_layer_update_stereo_descriptors(struct comp_render_layer *self, ··· 277 286 if (!_init_ubos(self)) 278 287 return false; 279 288 289 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 280 290 if (!_init_equirect1_ubo(self)) 281 291 return false; 282 - 292 + #endif 293 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 283 294 if (!_init_equirect2_ubo(self)) 284 295 return false; 296 + #endif 285 297 286 298 VkDescriptorPoolSize pool_sizes[] = { 287 299 { ··· 305 317 &self->descriptor_sets[eye])) 306 318 return false; 307 319 320 + #if defined(XRT_FEATURE_OPENXR_LAYER_EQUIRECT1) || \ 321 + defined(XRT_FEATURE_OPENXR_LAYER_EQUIRECT2) 308 322 if (!vk_allocate_descriptor_sets(self->vk, self->descriptor_pool, 1, 309 323 layout_equirect, 310 324 &self->descriptor_equirect)) 311 325 return false; 312 - 326 + #endif 313 327 return true; 314 328 } 315 329 ··· 523 537 for (uint32_t eye = 0; eye < 2; eye++) 524 538 vk_buffer_destroy(&self->transformation_ubos[eye], self->vk); 525 539 540 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 526 541 vk_buffer_destroy(&self->equirect1_ubo, self->vk); 542 + #endif 543 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 527 544 vk_buffer_destroy(&self->equirect2_ubo, self->vk); 528 - 545 + #endif 529 546 self->vk->vkDestroyDescriptorPool(self->vk->device, 530 547 self->descriptor_pool, NULL); 531 548
+12 -3
src/xrt/compositor/main/comp_layer.h
··· 20 20 bool flip_y; 21 21 }; 22 22 23 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 23 24 struct layer_equirect1_data 24 25 { 25 26 struct xrt_vec2 scale; 26 27 struct xrt_vec2 bias; 27 28 float radius; 28 29 }; 30 + #endif 29 31 32 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 30 33 struct layer_equirect2_data 31 34 { 32 35 float radius; ··· 34 37 float upper_vertical_angle; 35 38 float lower_vertical_angle; 36 39 }; 40 + #endif 37 41 38 42 struct comp_render_layer 39 43 { ··· 48 52 struct layer_transformation transformation[2]; 49 53 struct vk_buffer transformation_ubos[2]; 50 54 55 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 51 56 struct layer_equirect1_data equirect1_data; 52 57 struct vk_buffer equirect1_ubo; 53 - 58 + #endif 59 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 54 60 struct layer_equirect2_data equirect2_data; 55 61 struct vk_buffer equirect2_ubo; 56 - 62 + #endif 57 63 VkDescriptorPool descriptor_pool; 58 64 VkDescriptorSet descriptor_sets[2]; 59 65 VkDescriptorSet descriptor_equirect; ··· 114 120 comp_layer_update_cylinder_vertex_buffer(struct comp_render_layer *self, 115 121 float central_angle); 116 122 123 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 117 124 void 118 125 comp_layer_update_equirect1_descriptor(struct comp_render_layer *self, 119 126 struct xrt_layer_equirect1_data *data); 120 - 127 + #endif 128 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 121 129 void 122 130 comp_layer_update_equirect2_descriptor(struct comp_render_layer *self, 123 131 struct xrt_layer_equirect2_data *data); 132 + #endif
+4 -1
src/xrt/compositor/main/comp_renderer.c
··· 574 574 l->transformation[1].extent = data->stereo.r.sub.rect.extent; 575 575 } 576 576 577 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 577 578 void 578 579 comp_renderer_set_equirect1_layer(struct comp_renderer *r, 579 580 uint32_t layer, ··· 608 609 l->transformation[i].extent = data->equirect1.sub.rect.extent; 609 610 } 610 611 } 611 - 612 + #endif 613 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 612 614 void 613 615 comp_renderer_set_equirect2_layer(struct comp_renderer *r, 614 616 uint32_t layer, ··· 643 645 l->transformation[i].extent = data->equirect2.sub.rect.extent; 644 646 } 645 647 } 648 + #endif 646 649 647 650 void 648 651 comp_renderer_draw(struct comp_renderer *r)
+4 -1
src/xrt/compositor/main/comp_renderer.h
··· 73 73 struct comp_swapchain_image *image, 74 74 struct xrt_layer_data *data); 75 75 76 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT1 76 77 void 77 78 comp_renderer_set_equirect1_layer(struct comp_renderer *r, 78 79 uint32_t layer, 79 80 struct comp_swapchain_image *image, 80 81 struct xrt_layer_data *data); 81 - 82 + #endif 83 + #ifdef XRT_FEATURE_OPENXR_LAYER_EQUIRECT2 82 84 void 83 85 comp_renderer_set_equirect2_layer(struct comp_renderer *r, 84 86 uint32_t layer, 85 87 struct comp_swapchain_image *image, 86 88 struct xrt_layer_data *data); 89 + #endif 87 90 88 91 void 89 92 comp_renderer_allocate_layers(struct comp_renderer *self, uint32_t num_layers);