| 597 | } |
| 598 | |
| 599 | clfftStatus clfftSetLayout( clfftPlanHandle plHandle, clfftLayout iLayout, clfftLayout oLayout ) |
| 600 | { |
| 601 | FFTRepo& fftRepo = FFTRepo::getInstance( ); |
| 602 | FFTPlan* fftPlan = NULL; |
| 603 | lockRAII* planLock = NULL; |
| 604 | |
| 605 | OPENCL_V( fftRepo.getPlan( plHandle, fftPlan, planLock ), _T( "fftRepo.getPlan failed" ) ); |
| 606 | scopedLock sLock( *planLock, _T( "clfftSetLayout" ) ); |
| 607 | |
| 608 | // Basic error checking on parameter |
| 609 | if( ( iLayout >= ENDLAYOUT ) || ( oLayout >= ENDLAYOUT ) ) |
| 610 | return CLFFT_INVALID_ARG_VALUE; |
| 611 | |
| 612 | // We currently only support a subset of formats |
| 613 | switch( iLayout ) |
| 614 | { |
| 615 | case CLFFT_COMPLEX_INTERLEAVED: |
| 616 | { |
| 617 | if( (oLayout == CLFFT_HERMITIAN_INTERLEAVED) || (oLayout == CLFFT_HERMITIAN_PLANAR) || (oLayout == CLFFT_REAL)) |
| 618 | return CLFFT_NOTIMPLEMENTED; |
| 619 | } |
| 620 | break; |
| 621 | case CLFFT_COMPLEX_PLANAR: |
| 622 | { |
| 623 | if( (oLayout == CLFFT_HERMITIAN_INTERLEAVED) || (oLayout == CLFFT_HERMITIAN_PLANAR) || (oLayout == CLFFT_REAL)) |
| 624 | return CLFFT_NOTIMPLEMENTED; |
| 625 | } |
| 626 | break; |
| 627 | case CLFFT_HERMITIAN_INTERLEAVED: |
| 628 | { |
| 629 | if(oLayout != CLFFT_REAL) return CLFFT_NOTIMPLEMENTED; |
| 630 | } |
| 631 | break; |
| 632 | case CLFFT_HERMITIAN_PLANAR: |
| 633 | { |
| 634 | if(oLayout != CLFFT_REAL) return CLFFT_NOTIMPLEMENTED; |
| 635 | } |
| 636 | break; |
| 637 | case CLFFT_REAL: |
| 638 | { |
| 639 | if((oLayout == CLFFT_REAL) || (oLayout == CLFFT_COMPLEX_INTERLEAVED) || (oLayout == CLFFT_COMPLEX_PLANAR)) |
| 640 | return CLFFT_NOTIMPLEMENTED; |
| 641 | } |
| 642 | break; |
| 643 | default: |
| 644 | return CLFFT_NOTIMPLEMENTED; |
| 645 | break; |
| 646 | } |
| 647 | |
| 648 | // We currently only support a subset of formats |
| 649 | switch( oLayout ) |
| 650 | { |
| 651 | case CLFFT_COMPLEX_PLANAR: |
| 652 | case CLFFT_COMPLEX_INTERLEAVED: |
| 653 | case CLFFT_HERMITIAN_INTERLEAVED: |
| 654 | case CLFFT_HERMITIAN_PLANAR: |
| 655 | case CLFFT_REAL: |
| 656 | break; |