2 * Copyright © 2014 Advanced Micro Devices, Inc.
5 * Permission is hereby granted, free of charge, to any person obtaining
6 * a copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sub license, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
15 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16 * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
17 * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 * USE OR OTHER DEALINGS IN THE SOFTWARE.
22 * The above copyright notice and this permission notice (including the
23 * next paragraph) shall be included in all copies or substantial portions
28 ****************************************************************************************************
29 * @file addrinterface.cpp
30 * @brief Contains the addrlib interface functions
31 ****************************************************************************************************
33 #include "addrinterface.h"
36 #include "addrcommon.h"
38 ///////////////////////////////////////////////////////////////////////////////////////////////////
39 // Create/Destroy/Config functions
40 ///////////////////////////////////////////////////////////////////////////////////////////////////
43 ****************************************************************************************************
47 * Create address lib object
50 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
51 ****************************************************************************************************
53 ADDR_E_RETURNCODE ADDR_API
AddrCreate(
54 const ADDR_CREATE_INPUT
* pAddrCreateIn
, ///< [in] infomation for creating address lib object
55 ADDR_CREATE_OUTPUT
* pAddrCreateOut
) ///< [out] address lib handle
57 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
59 returnCode
= AddrLib::Create(pAddrCreateIn
, pAddrCreateOut
);
67 ****************************************************************************************************
71 * Destroy address lib object
74 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
75 ****************************************************************************************************
77 ADDR_E_RETURNCODE ADDR_API
AddrDestroy(
78 ADDR_HANDLE hLib
) ///< address lib handle
80 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
84 AddrLib
* pLib
= AddrLib::GetAddrLib(hLib
);
89 returnCode
= ADDR_ERROR
;
97 ///////////////////////////////////////////////////////////////////////////////////////////////////
99 ///////////////////////////////////////////////////////////////////////////////////////////////////
102 ****************************************************************************************************
103 * AddrComputeSurfaceInfo
106 * Calculate surface width/height/depth/alignments and suitable tiling mode
109 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
110 ****************************************************************************************************
112 ADDR_E_RETURNCODE ADDR_API
AddrComputeSurfaceInfo(
113 ADDR_HANDLE hLib
, ///< address lib handle
114 const ADDR_COMPUTE_SURFACE_INFO_INPUT
* pIn
, ///< [in] surface information
115 ADDR_COMPUTE_SURFACE_INFO_OUTPUT
* pOut
) ///< [out] surface parameters and alignments
117 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
119 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
123 returnCode
= pLib
->ComputeSurfaceInfo(pIn
, pOut
);
127 returnCode
= ADDR_ERROR
;
136 ****************************************************************************************************
137 * AddrComputeSurfaceAddrFromCoord
140 * Compute surface address according to coordinates
143 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
144 ****************************************************************************************************
146 ADDR_E_RETURNCODE ADDR_API
AddrComputeSurfaceAddrFromCoord(
147 ADDR_HANDLE hLib
, ///< address lib handle
148 const ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] surface info and coordinates
149 ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] surface address
151 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
153 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
157 returnCode
= pLib
->ComputeSurfaceAddrFromCoord(pIn
, pOut
);
161 returnCode
= ADDR_ERROR
;
168 ****************************************************************************************************
169 * AddrComputeSurfaceCoordFromAddr
172 * Compute coordinates according to surface address
175 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
176 ****************************************************************************************************
178 ADDR_E_RETURNCODE ADDR_API
AddrComputeSurfaceCoordFromAddr(
179 ADDR_HANDLE hLib
, ///< address lib handle
180 const ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUT
* pIn
, ///< [in] surface info and address
181 ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] coordinates
183 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
185 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
189 returnCode
= pLib
->ComputeSurfaceCoordFromAddr(pIn
, pOut
);
193 returnCode
= ADDR_ERROR
;
201 ///////////////////////////////////////////////////////////////////////////////////////////////////
203 ///////////////////////////////////////////////////////////////////////////////////////////////////
206 ****************************************************************************************************
207 * AddrComputeHtileInfo
210 * Compute Htile pitch, height, base alignment and size in bytes
213 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
214 ****************************************************************************************************
216 ADDR_E_RETURNCODE ADDR_API
AddrComputeHtileInfo(
217 ADDR_HANDLE hLib
, ///< address lib handle
218 const ADDR_COMPUTE_HTILE_INFO_INPUT
* pIn
, ///< [in] Htile information
219 ADDR_COMPUTE_HTILE_INFO_OUTPUT
* pOut
) ///< [out] Htile pitch, height and size in bytes
221 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
223 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
227 returnCode
= pLib
->ComputeHtileInfo(pIn
, pOut
);
231 returnCode
= ADDR_ERROR
;
238 ****************************************************************************************************
239 * AddrComputeHtileAddrFromCoord
242 * Compute Htile address according to coordinates (of depth buffer)
245 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
246 ****************************************************************************************************
248 ADDR_E_RETURNCODE ADDR_API
AddrComputeHtileAddrFromCoord(
249 ADDR_HANDLE hLib
, ///< address lib handle
250 const ADDR_COMPUTE_HTILE_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Htile info and coordinates
251 ADDR_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Htile address
253 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
255 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
259 returnCode
= pLib
->ComputeHtileAddrFromCoord(pIn
, pOut
);
263 returnCode
= ADDR_ERROR
;
270 ****************************************************************************************************
271 * AddrComputeHtileCoordFromAddr
274 * Compute coordinates within depth buffer (1st pixel of a micro tile) according to
278 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
279 ****************************************************************************************************
281 ADDR_E_RETURNCODE ADDR_API
AddrComputeHtileCoordFromAddr(
282 ADDR_HANDLE hLib
, ///< address lib handle
283 const ADDR_COMPUTE_HTILE_COORDFROMADDR_INPUT
* pIn
, ///< [in] Htile info and address
284 ADDR_COMPUTE_HTILE_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Htile coordinates
286 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
288 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
292 returnCode
= pLib
->ComputeHtileCoordFromAddr(pIn
, pOut
);
296 returnCode
= ADDR_ERROR
;
304 ///////////////////////////////////////////////////////////////////////////////////////////////////
306 ///////////////////////////////////////////////////////////////////////////////////////////////////
309 ****************************************************************************************************
310 * AddrComputeCmaskInfo
313 * Compute Cmask pitch, height, base alignment and size in bytes from color buffer
317 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
318 ****************************************************************************************************
320 ADDR_E_RETURNCODE ADDR_API
AddrComputeCmaskInfo(
321 ADDR_HANDLE hLib
, ///< address lib handle
322 const ADDR_COMPUTE_CMASK_INFO_INPUT
* pIn
, ///< [in] Cmask pitch and height
323 ADDR_COMPUTE_CMASK_INFO_OUTPUT
* pOut
) ///< [out] Cmask pitch, height and size in bytes
325 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
327 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
331 returnCode
= pLib
->ComputeCmaskInfo(pIn
, pOut
);
335 returnCode
= ADDR_ERROR
;
342 ****************************************************************************************************
343 * AddrComputeCmaskAddrFromCoord
346 * Compute Cmask address according to coordinates (of MSAA color buffer)
349 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
350 ****************************************************************************************************
352 ADDR_E_RETURNCODE ADDR_API
AddrComputeCmaskAddrFromCoord(
353 ADDR_HANDLE hLib
, ///< address lib handle
354 const ADDR_COMPUTE_CMASK_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Cmask info and coordinates
355 ADDR_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Cmask address
357 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
359 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
363 returnCode
= pLib
->ComputeCmaskAddrFromCoord(pIn
, pOut
);
367 returnCode
= ADDR_ERROR
;
374 ****************************************************************************************************
375 * AddrComputeCmaskCoordFromAddr
378 * Compute coordinates within color buffer (1st pixel of a micro tile) according to
382 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
383 ****************************************************************************************************
385 ADDR_E_RETURNCODE ADDR_API
AddrComputeCmaskCoordFromAddr(
386 ADDR_HANDLE hLib
, ///< address lib handle
387 const ADDR_COMPUTE_CMASK_COORDFROMADDR_INPUT
* pIn
, ///< [in] Cmask info and address
388 ADDR_COMPUTE_CMASK_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Cmask coordinates
390 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
392 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
396 returnCode
= pLib
->ComputeCmaskCoordFromAddr(pIn
, pOut
);
400 returnCode
= ADDR_ERROR
;
408 ///////////////////////////////////////////////////////////////////////////////////////////////////
410 ///////////////////////////////////////////////////////////////////////////////////////////////////
413 ****************************************************************************************************
414 * AddrComputeFmaskInfo
417 * Compute Fmask pitch/height/depth/alignments and size in bytes
420 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
421 ****************************************************************************************************
423 ADDR_E_RETURNCODE ADDR_API
AddrComputeFmaskInfo(
424 ADDR_HANDLE hLib
, ///< address lib handle
425 const ADDR_COMPUTE_FMASK_INFO_INPUT
* pIn
, ///< [in] Fmask information
426 ADDR_COMPUTE_FMASK_INFO_OUTPUT
* pOut
) ///< [out] Fmask pitch and height
428 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
430 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
434 returnCode
= pLib
->ComputeFmaskInfo(pIn
, pOut
);
438 returnCode
= ADDR_ERROR
;
445 ****************************************************************************************************
446 * AddrComputeFmaskAddrFromCoord
449 * Compute Fmask address according to coordinates (x,y,slice,sample,plane)
452 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
453 ****************************************************************************************************
455 ADDR_E_RETURNCODE ADDR_API
AddrComputeFmaskAddrFromCoord(
456 ADDR_HANDLE hLib
, ///< address lib handle
457 const ADDR_COMPUTE_FMASK_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Fmask info and coordinates
458 ADDR_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Fmask address
460 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
462 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
466 returnCode
= pLib
->ComputeFmaskAddrFromCoord(pIn
, pOut
);
470 returnCode
= ADDR_ERROR
;
477 ****************************************************************************************************
478 * AddrComputeFmaskCoordFromAddr
481 * Compute coordinates (x,y,slice,sample,plane) according to Fmask address
484 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
485 ****************************************************************************************************
487 ADDR_E_RETURNCODE ADDR_API
AddrComputeFmaskCoordFromAddr(
488 ADDR_HANDLE hLib
, ///< address lib handle
489 const ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUT
* pIn
, ///< [in] Fmask info and address
490 ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Fmask coordinates
492 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
494 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
498 returnCode
= pLib
->ComputeFmaskCoordFromAddr(pIn
, pOut
);
502 returnCode
= ADDR_ERROR
;
510 ///////////////////////////////////////////////////////////////////////////////////////////////////
512 ///////////////////////////////////////////////////////////////////////////////////////////////////
515 ****************************************************************************************************
519 * Compute DCC key size, base alignment based on color surface size, tile info or tile index
521 ****************************************************************************************************
523 ADDR_E_RETURNCODE ADDR_API
AddrComputeDccInfo(
524 ADDR_HANDLE hLib
, ///< handle of addrlib
525 const ADDR_COMPUTE_DCCINFO_INPUT
* pIn
, ///< [in] input
526 ADDR_COMPUTE_DCCINFO_OUTPUT
* pOut
) ///< [out] output
528 ADDR_E_RETURNCODE returnCode
;
530 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
534 returnCode
= pLib
->ComputeDccInfo(pIn
, pOut
);
538 returnCode
= ADDR_ERROR
;
546 ///////////////////////////////////////////////////////////////////////////////
547 // Below functions are element related or helper functions
548 ///////////////////////////////////////////////////////////////////////////////
551 ****************************************************************************************************
555 * Get AddrLib version number. Client may check this return value against ADDRLIB_VERSION
556 * defined in addrinterface.h to see if there is a mismatch.
557 ****************************************************************************************************
559 UINT_32 ADDR_API
AddrGetVersion(ADDR_HANDLE hLib
)
563 AddrLib
* pLib
= AddrLib::GetAddrLib(hLib
);
565 ADDR_ASSERT(pLib
!= NULL
);
569 version
= pLib
->GetVersion();
576 ****************************************************************************************************
580 * Return TRUE if tileIndex is enabled in this address library
581 ****************************************************************************************************
583 BOOL_32 ADDR_API
AddrUseTileIndex(ADDR_HANDLE hLib
)
585 BOOL_32 useTileIndex
= FALSE
;
587 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
589 ADDR_ASSERT(pLib
!= NULL
);
593 useTileIndex
= pLib
->UseTileIndex(0);
600 ****************************************************************************************************
601 * AddrUseCombinedSwizzle
604 * Return TRUE if combined swizzle is enabled in this address library
605 ****************************************************************************************************
607 BOOL_32 ADDR_API
AddrUseCombinedSwizzle(ADDR_HANDLE hLib
)
609 BOOL_32 useCombinedSwizzle
= FALSE
;
611 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
613 ADDR_ASSERT(pLib
!= NULL
);
617 useCombinedSwizzle
= pLib
->UseCombinedSwizzle();
620 return useCombinedSwizzle
;
624 ****************************************************************************************************
625 * AddrExtractBankPipeSwizzle
628 * Extract Bank and Pipe swizzle from base256b
630 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
631 ****************************************************************************************************
633 ADDR_E_RETURNCODE ADDR_API
AddrExtractBankPipeSwizzle(
634 ADDR_HANDLE hLib
, ///< addrlib handle
635 const ADDR_EXTRACT_BANKPIPE_SWIZZLE_INPUT
* pIn
, ///< [in] input structure
636 ADDR_EXTRACT_BANKPIPE_SWIZZLE_OUTPUT
* pOut
) ///< [out] output structure
638 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
640 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
644 returnCode
= pLib
->ExtractBankPipeSwizzle(pIn
, pOut
);
648 returnCode
= ADDR_ERROR
;
655 ****************************************************************************************************
656 * AddrCombineBankPipeSwizzle
659 * Combine Bank and Pipe swizzle
662 ****************************************************************************************************
664 ADDR_E_RETURNCODE ADDR_API
AddrCombineBankPipeSwizzle(
666 const ADDR_COMBINE_BANKPIPE_SWIZZLE_INPUT
* pIn
,
667 ADDR_COMBINE_BANKPIPE_SWIZZLE_OUTPUT
* pOut
)
669 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
671 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
675 returnCode
= pLib
->CombineBankPipeSwizzle(pIn
, pOut
);
679 returnCode
= ADDR_ERROR
;
686 ****************************************************************************************************
687 * AddrComputeSliceSwizzle
690 * Compute a swizzle for slice from a base swizzle
692 * ADDR_OK if no error
693 ****************************************************************************************************
695 ADDR_E_RETURNCODE ADDR_API
AddrComputeSliceSwizzle(
697 const ADDR_COMPUTE_SLICESWIZZLE_INPUT
* pIn
,
698 ADDR_COMPUTE_SLICESWIZZLE_OUTPUT
* pOut
)
700 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
702 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
706 returnCode
= pLib
->ComputeSliceTileSwizzle(pIn
, pOut
);
710 returnCode
= ADDR_ERROR
;
717 ****************************************************************************************************
718 * AddrComputeBaseSwizzle
721 * Return a Combined Bank and Pipe swizzle base on surface based on surface type/index
723 * ADDR_OK if no error
724 ****************************************************************************************************
726 ADDR_E_RETURNCODE ADDR_API
AddrComputeBaseSwizzle(
728 const ADDR_COMPUTE_BASE_SWIZZLE_INPUT
* pIn
,
729 ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT
* pOut
)
731 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
733 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
737 returnCode
= pLib
->ComputeBaseSwizzle(pIn
, pOut
);
741 returnCode
= ADDR_ERROR
;
748 ****************************************************************************************************
749 * ElemFlt32ToDepthPixel
752 * Convert a FLT_32 value to a depth/stencil pixel value
755 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
757 ****************************************************************************************************
759 ADDR_E_RETURNCODE ADDR_API
ElemFlt32ToDepthPixel(
760 ADDR_HANDLE hLib
, ///< addrlib handle
761 const ELEM_FLT32TODEPTHPIXEL_INPUT
* pIn
, ///< [in] per-component value
762 ELEM_FLT32TODEPTHPIXEL_OUTPUT
* pOut
) ///< [out] final pixel value
764 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
766 AddrLib
* pLib
= AddrLib::GetAddrLib(hLib
);
770 pLib
->Flt32ToDepthPixel(pIn
, pOut
);
774 returnCode
= ADDR_ERROR
;
781 ****************************************************************************************************
782 * ElemFlt32ToColorPixel
785 * Convert a FLT_32 value to a red/green/blue/alpha pixel value
788 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
790 ****************************************************************************************************
792 ADDR_E_RETURNCODE ADDR_API
ElemFlt32ToColorPixel(
793 ADDR_HANDLE hLib
, ///< addrlib handle
794 const ELEM_FLT32TOCOLORPIXEL_INPUT
* pIn
, ///< [in] format, surface number and swap value
795 ELEM_FLT32TOCOLORPIXEL_OUTPUT
* pOut
) ///< [out] final pixel value
797 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
799 AddrLib
* pLib
= AddrLib::GetAddrLib(hLib
);
803 pLib
->Flt32ToColorPixel(pIn
, pOut
);
807 returnCode
= ADDR_ERROR
;
814 ****************************************************************************************************
818 * Helper function to check one format can be EXPORT_NUM,
819 * which is a register CB_COLOR_INFO.SURFACE_FORMAT.
820 * FP16 can be reported as EXPORT_NORM for rv770 in r600
823 ****************************************************************************************************
825 BOOL_32 ADDR_API
ElemGetExportNorm(
826 ADDR_HANDLE hLib
, ///< addrlib handle
827 const ELEM_GETEXPORTNORM_INPUT
* pIn
) ///< [in] input structure
829 AddrLib
* pLib
= AddrLib::GetAddrLib(hLib
);
830 BOOL_32 enabled
= FALSE
;
832 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
836 enabled
= pLib
->GetExportNorm(pIn
);
840 returnCode
= ADDR_ERROR
;
843 ADDR_ASSERT(returnCode
== ADDR_OK
);
849 ****************************************************************************************************
850 * AddrConvertTileInfoToHW
853 * Convert tile info from real value to hardware register value
856 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
857 ****************************************************************************************************
859 ADDR_E_RETURNCODE ADDR_API
AddrConvertTileInfoToHW(
860 ADDR_HANDLE hLib
, ///< address lib handle
861 const ADDR_CONVERT_TILEINFOTOHW_INPUT
* pIn
, ///< [in] tile info with real value
862 ADDR_CONVERT_TILEINFOTOHW_OUTPUT
* pOut
) ///< [out] tile info with HW register value
864 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
866 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
870 returnCode
= pLib
->ConvertTileInfoToHW(pIn
, pOut
);
874 returnCode
= ADDR_ERROR
;
881 ****************************************************************************************************
882 * AddrConvertTileIndex
885 * Convert tile index to tile mode/type/info
888 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
889 ****************************************************************************************************
891 ADDR_E_RETURNCODE ADDR_API
AddrConvertTileIndex(
892 ADDR_HANDLE hLib
, ///< address lib handle
893 const ADDR_CONVERT_TILEINDEX_INPUT
* pIn
, ///< [in] input - tile index
894 ADDR_CONVERT_TILEINDEX_OUTPUT
* pOut
) ///< [out] tile mode/type/info
896 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
898 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
902 returnCode
= pLib
->ConvertTileIndex(pIn
, pOut
);
906 returnCode
= ADDR_ERROR
;
913 ****************************************************************************************************
914 * AddrGetMacroModeIndex
917 * Get macro mode index based on input parameters
920 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
921 ****************************************************************************************************
923 ADDR_E_RETURNCODE ADDR_API
AddrGetMacroModeIndex(
924 ADDR_HANDLE hLib
, ///< address lib handle
925 const ADDR_GET_MACROMODEINDEX_INPUT
* pIn
, ///< [in] input
926 ADDR_GET_MACROMODEINDEX_OUTPUT
* pOut
) ///< [out] macro mode index
928 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
930 ADDR_E_RETURNCODE returnCode
;
934 returnCode
= pLib
->GetMacroModeIndex(pIn
, pOut
);
938 returnCode
= ADDR_ERROR
;
945 ****************************************************************************************************
946 * AddrConvertTileIndex1
949 * Convert tile index to tile mode/type/info
952 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
953 ****************************************************************************************************
955 ADDR_E_RETURNCODE ADDR_API
AddrConvertTileIndex1(
956 ADDR_HANDLE hLib
, ///< address lib handle
957 const ADDR_CONVERT_TILEINDEX1_INPUT
* pIn
, ///< [in] input - tile index
958 ADDR_CONVERT_TILEINDEX_OUTPUT
* pOut
) ///< [out] tile mode/type/info
960 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
962 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
966 returnCode
= pLib
->ConvertTileIndex1(pIn
, pOut
);
970 returnCode
= ADDR_ERROR
;
977 ****************************************************************************************************
981 * Get tile index from tile mode/type/info
984 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
987 * Only meaningful for SI (and above)
988 ****************************************************************************************************
990 ADDR_E_RETURNCODE ADDR_API
AddrGetTileIndex(
992 const ADDR_GET_TILEINDEX_INPUT
* pIn
,
993 ADDR_GET_TILEINDEX_OUTPUT
* pOut
)
995 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
997 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1001 returnCode
= pLib
->GetTileIndex(pIn
, pOut
);
1005 returnCode
= ADDR_ERROR
;
1012 ****************************************************************************************************
1013 * AddrComputePrtInfo
1016 * Interface function for ComputePrtInfo
1018 ****************************************************************************************************
1020 ADDR_E_RETURNCODE ADDR_API
AddrComputePrtInfo(
1022 const ADDR_PRT_INFO_INPUT
* pIn
,
1023 ADDR_PRT_INFO_OUTPUT
* pOut
)
1025 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1027 AddrLib1
* pLib
= AddrLib1::GetAddrLib1(hLib
);
1031 returnCode
= pLib
->ComputePrtInfo(pIn
, pOut
);
1035 returnCode
= ADDR_ERROR
;
1042 ****************************************************************************************************
1043 * AddrGetMaxAlignments
1046 * Convert maximum alignments
1049 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1050 ****************************************************************************************************
1052 ADDR_E_RETURNCODE ADDR_API
AddrGetMaxAlignments(
1053 ADDR_HANDLE hLib
, ///< address lib handle
1054 ADDR_GET_MAX_ALINGMENTS_OUTPUT
* pOut
) ///< [out] output structure
1056 AddrLib
* pLib
= AddrLib::GetAddrLib(hLib
);
1058 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1062 returnCode
= pLib
->GetMaxAlignments(pOut
);
1066 returnCode
= ADDR_ERROR
;