The open source OpenXR runtime
0
fork

Configure Feed

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

st/oxr: Fix projection layer viewCount validation

authored by

Christoph Haag and committed by
Simon Zeni
3fd69da8 1059c5fa

+38 -5
+38 -5
src/xrt/state_trackers/oxr/oxr_session_frame_end.c
··· 591 591 return ret; 592 592 } 593 593 594 - if (proj->viewCount < 1 || proj->viewCount > XRT_MAX_VIEWS) { 595 - return oxr_error(log, XR_ERROR_VALIDATION_FAILURE, 596 - "(frameEndInfo->layers[%u]->viewCount == %u) must be between 1 and %d for projection " 597 - "layers and the current view configuration", 598 - layer_index, proj->viewCount, XRT_MAX_VIEWS); 594 + switch (sess->sys->view_config_type) { 595 + case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO: 596 + if (proj->viewCount != 1) { 597 + return oxr_error(log, XR_ERROR_VALIDATION_FAILURE, 598 + "(frameEndInfo->layers[%u]->viewCount == %u) must be 1 for " 599 + "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO", 600 + layer_index, proj->viewCount); 601 + } 602 + break; 603 + case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO: 604 + if (proj->viewCount != 2) { 605 + return oxr_error(log, XR_ERROR_VALIDATION_FAILURE, 606 + "(frameEndInfo->layers[%u]->viewCount == %u) must be 2 for " 607 + "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO", 608 + layer_index, proj->viewCount); 609 + } 610 + break; 611 + case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO: 612 + if (proj->viewCount != 4) { 613 + return oxr_error(log, XR_ERROR_VALIDATION_FAILURE, 614 + "(frameEndInfo->layers[%u]->viewCount == %u) must be 4 for " 615 + "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO", 616 + layer_index, proj->viewCount); 617 + } 618 + break; 619 + case XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT: 620 + if (proj->viewCount != 1) { 621 + return oxr_error(log, XR_ERROR_VALIDATION_FAILURE, 622 + "(frameEndInfo->layers[%u]->viewCount == %u) must be 1 for " 623 + "XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT", 624 + layer_index, proj->viewCount); 625 + } 626 + break; 627 + default: 628 + assert(false && "view type validation unimplemented"); 629 + return oxr_error(log, XR_ERROR_RUNTIME_FAILURE, "view type %d not supported", 630 + sess->sys->view_config_type); 631 + break; 599 632 } 600 633 601 634 // number of depth layers must be 0 or proj->viewCount