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"
37 #include "addrcommon.h"
39 #include "util/macros.h"
43 ////////////////////////////////////////////////////////////////////////////////////////////////////
44 // Create/Destroy/Config functions
45 ////////////////////////////////////////////////////////////////////////////////////////////////////
48 ****************************************************************************************************
52 * Create address lib object
55 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
56 ****************************************************************************************************
58 ADDR_E_RETURNCODE ADDR_API
AddrCreate(
59 const ADDR_CREATE_INPUT
* pAddrCreateIn
, ///< [in] infomation for creating address lib object
60 ADDR_CREATE_OUTPUT
* pAddrCreateOut
) ///< [out] address lib handle
62 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
64 returnCode
= Lib::Create(pAddrCreateIn
, pAddrCreateOut
);
72 ****************************************************************************************************
76 * Destroy address lib object
79 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
80 ****************************************************************************************************
82 ADDR_E_RETURNCODE ADDR_API
AddrDestroy(
83 ADDR_HANDLE hLib
) ///< address lib handle
85 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
89 Lib
* pLib
= Lib::GetLib(hLib
);
94 returnCode
= ADDR_ERROR
;
102 ////////////////////////////////////////////////////////////////////////////////////////////////////
104 ////////////////////////////////////////////////////////////////////////////////////////////////////
107 ****************************************************************************************************
108 * AddrComputeSurfaceInfo
111 * Calculate surface width/height/depth/alignments and suitable tiling mode
114 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
115 ****************************************************************************************************
117 ADDR_E_RETURNCODE ADDR_API
AddrComputeSurfaceInfo(
118 ADDR_HANDLE hLib
, ///< address lib handle
119 const ADDR_COMPUTE_SURFACE_INFO_INPUT
* pIn
, ///< [in] surface information
120 ADDR_COMPUTE_SURFACE_INFO_OUTPUT
* pOut
) ///< [out] surface parameters and alignments
122 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
124 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
128 returnCode
= pLib
->ComputeSurfaceInfo(pIn
, pOut
);
132 returnCode
= ADDR_ERROR
;
141 ****************************************************************************************************
142 * AddrComputeSurfaceAddrFromCoord
145 * Compute surface address according to coordinates
148 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
149 ****************************************************************************************************
151 ADDR_E_RETURNCODE ADDR_API
AddrComputeSurfaceAddrFromCoord(
152 ADDR_HANDLE hLib
, ///< address lib handle
153 const ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] surface info and coordinates
154 ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] surface address
156 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
158 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
162 returnCode
= pLib
->ComputeSurfaceAddrFromCoord(pIn
, pOut
);
166 returnCode
= ADDR_ERROR
;
173 ****************************************************************************************************
174 * AddrComputeSurfaceCoordFromAddr
177 * Compute coordinates according to surface address
180 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
181 ****************************************************************************************************
183 ADDR_E_RETURNCODE ADDR_API
AddrComputeSurfaceCoordFromAddr(
184 ADDR_HANDLE hLib
, ///< address lib handle
185 const ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUT
* pIn
, ///< [in] surface info and address
186 ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] coordinates
188 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
190 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
194 returnCode
= pLib
->ComputeSurfaceCoordFromAddr(pIn
, pOut
);
198 returnCode
= ADDR_ERROR
;
206 ////////////////////////////////////////////////////////////////////////////////////////////////////
208 ////////////////////////////////////////////////////////////////////////////////////////////////////
211 ****************************************************************************************************
212 * AddrComputeHtileInfo
215 * Compute Htile pitch, height, base alignment and size in bytes
218 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
219 ****************************************************************************************************
221 ADDR_E_RETURNCODE ADDR_API
AddrComputeHtileInfo(
222 ADDR_HANDLE hLib
, ///< address lib handle
223 const ADDR_COMPUTE_HTILE_INFO_INPUT
* pIn
, ///< [in] Htile information
224 ADDR_COMPUTE_HTILE_INFO_OUTPUT
* pOut
) ///< [out] Htile pitch, height and size in bytes
226 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
228 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
232 returnCode
= pLib
->ComputeHtileInfo(pIn
, pOut
);
236 returnCode
= ADDR_ERROR
;
243 ****************************************************************************************************
244 * AddrComputeHtileAddrFromCoord
247 * Compute Htile address according to coordinates (of depth buffer)
250 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
251 ****************************************************************************************************
253 ADDR_E_RETURNCODE ADDR_API
AddrComputeHtileAddrFromCoord(
254 ADDR_HANDLE hLib
, ///< address lib handle
255 const ADDR_COMPUTE_HTILE_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Htile info and coordinates
256 ADDR_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Htile address
258 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
260 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
264 returnCode
= pLib
->ComputeHtileAddrFromCoord(pIn
, pOut
);
268 returnCode
= ADDR_ERROR
;
275 ****************************************************************************************************
276 * AddrComputeHtileCoordFromAddr
279 * Compute coordinates within depth buffer (1st pixel of a micro tile) according to
283 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
284 ****************************************************************************************************
286 ADDR_E_RETURNCODE ADDR_API
AddrComputeHtileCoordFromAddr(
287 ADDR_HANDLE hLib
, ///< address lib handle
288 const ADDR_COMPUTE_HTILE_COORDFROMADDR_INPUT
* pIn
, ///< [in] Htile info and address
289 ADDR_COMPUTE_HTILE_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Htile coordinates
291 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
293 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
297 returnCode
= pLib
->ComputeHtileCoordFromAddr(pIn
, pOut
);
301 returnCode
= ADDR_ERROR
;
309 ////////////////////////////////////////////////////////////////////////////////////////////////////
311 ////////////////////////////////////////////////////////////////////////////////////////////////////
314 ****************************************************************************************************
315 * AddrComputeCmaskInfo
318 * Compute Cmask pitch, height, base alignment and size in bytes from color buffer
322 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
323 ****************************************************************************************************
325 ADDR_E_RETURNCODE ADDR_API
AddrComputeCmaskInfo(
326 ADDR_HANDLE hLib
, ///< address lib handle
327 const ADDR_COMPUTE_CMASK_INFO_INPUT
* pIn
, ///< [in] Cmask pitch and height
328 ADDR_COMPUTE_CMASK_INFO_OUTPUT
* pOut
) ///< [out] Cmask pitch, height and size in bytes
330 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
332 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
336 returnCode
= pLib
->ComputeCmaskInfo(pIn
, pOut
);
340 returnCode
= ADDR_ERROR
;
347 ****************************************************************************************************
348 * AddrComputeCmaskAddrFromCoord
351 * Compute Cmask address according to coordinates (of MSAA color buffer)
354 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
355 ****************************************************************************************************
357 ADDR_E_RETURNCODE ADDR_API
AddrComputeCmaskAddrFromCoord(
358 ADDR_HANDLE hLib
, ///< address lib handle
359 const ADDR_COMPUTE_CMASK_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Cmask info and coordinates
360 ADDR_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Cmask address
362 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
364 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
368 returnCode
= pLib
->ComputeCmaskAddrFromCoord(pIn
, pOut
);
372 returnCode
= ADDR_ERROR
;
379 ****************************************************************************************************
380 * AddrComputeCmaskCoordFromAddr
383 * Compute coordinates within color buffer (1st pixel of a micro tile) according to
387 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
388 ****************************************************************************************************
390 ADDR_E_RETURNCODE ADDR_API
AddrComputeCmaskCoordFromAddr(
391 ADDR_HANDLE hLib
, ///< address lib handle
392 const ADDR_COMPUTE_CMASK_COORDFROMADDR_INPUT
* pIn
, ///< [in] Cmask info and address
393 ADDR_COMPUTE_CMASK_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Cmask coordinates
395 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
397 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
401 returnCode
= pLib
->ComputeCmaskCoordFromAddr(pIn
, pOut
);
405 returnCode
= ADDR_ERROR
;
413 ////////////////////////////////////////////////////////////////////////////////////////////////////
415 ////////////////////////////////////////////////////////////////////////////////////////////////////
418 ****************************************************************************************************
419 * AddrComputeFmaskInfo
422 * Compute Fmask pitch/height/depth/alignments and size in bytes
425 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
426 ****************************************************************************************************
428 ADDR_E_RETURNCODE ADDR_API
AddrComputeFmaskInfo(
429 ADDR_HANDLE hLib
, ///< address lib handle
430 const ADDR_COMPUTE_FMASK_INFO_INPUT
* pIn
, ///< [in] Fmask information
431 ADDR_COMPUTE_FMASK_INFO_OUTPUT
* pOut
) ///< [out] Fmask pitch and height
433 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
435 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
439 returnCode
= pLib
->ComputeFmaskInfo(pIn
, pOut
);
443 returnCode
= ADDR_ERROR
;
450 ****************************************************************************************************
451 * AddrComputeFmaskAddrFromCoord
454 * Compute Fmask address according to coordinates (x,y,slice,sample,plane)
457 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
458 ****************************************************************************************************
460 ADDR_E_RETURNCODE ADDR_API
AddrComputeFmaskAddrFromCoord(
461 ADDR_HANDLE hLib
, ///< address lib handle
462 const ADDR_COMPUTE_FMASK_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Fmask info and coordinates
463 ADDR_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Fmask address
465 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
467 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
471 returnCode
= pLib
->ComputeFmaskAddrFromCoord(pIn
, pOut
);
475 returnCode
= ADDR_ERROR
;
482 ****************************************************************************************************
483 * AddrComputeFmaskCoordFromAddr
486 * Compute coordinates (x,y,slice,sample,plane) according to Fmask address
489 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
490 ****************************************************************************************************
492 ADDR_E_RETURNCODE ADDR_API
AddrComputeFmaskCoordFromAddr(
493 ADDR_HANDLE hLib
, ///< address lib handle
494 const ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUT
* pIn
, ///< [in] Fmask info and address
495 ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Fmask coordinates
497 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
499 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
503 returnCode
= pLib
->ComputeFmaskCoordFromAddr(pIn
, pOut
);
507 returnCode
= ADDR_ERROR
;
515 ////////////////////////////////////////////////////////////////////////////////////////////////////
517 ////////////////////////////////////////////////////////////////////////////////////////////////////
520 ****************************************************************************************************
524 * Compute DCC key size, base alignment based on color surface size, tile info or tile index
526 ****************************************************************************************************
528 ADDR_E_RETURNCODE ADDR_API
AddrComputeDccInfo(
529 ADDR_HANDLE hLib
, ///< handle of addrlib
530 const ADDR_COMPUTE_DCCINFO_INPUT
* pIn
, ///< [in] input
531 ADDR_COMPUTE_DCCINFO_OUTPUT
* pOut
) ///< [out] output
533 ADDR_E_RETURNCODE returnCode
;
535 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
539 returnCode
= pLib
->ComputeDccInfo(pIn
, pOut
);
543 returnCode
= ADDR_ERROR
;
551 ///////////////////////////////////////////////////////////////////////////////
552 // Below functions are element related or helper functions
553 ///////////////////////////////////////////////////////////////////////////////
556 ****************************************************************************************************
560 * Get AddrLib version number. Client may check this return value against ADDRLIB_VERSION
561 * defined in addrinterface.h to see if there is a mismatch.
562 ****************************************************************************************************
564 UINT_32 ADDR_API
AddrGetVersion(ADDR_HANDLE hLib
)
568 Addr::Lib
* pLib
= Lib::GetLib(hLib
);
570 ADDR_ASSERT(pLib
!= NULL
);
574 version
= pLib
->GetVersion();
581 ****************************************************************************************************
585 * Return TRUE if tileIndex is enabled in this address library
586 ****************************************************************************************************
588 BOOL_32 ADDR_API
AddrUseTileIndex(ADDR_HANDLE hLib
)
590 BOOL_32 useTileIndex
= FALSE
;
592 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
594 ADDR_ASSERT(pLib
!= NULL
);
598 useTileIndex
= pLib
->UseTileIndex(0);
605 ****************************************************************************************************
606 * AddrUseCombinedSwizzle
609 * Return TRUE if combined swizzle is enabled in this address library
610 ****************************************************************************************************
612 BOOL_32 ADDR_API
AddrUseCombinedSwizzle(ADDR_HANDLE hLib
)
614 BOOL_32 useCombinedSwizzle
= FALSE
;
616 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
618 ADDR_ASSERT(pLib
!= NULL
);
622 useCombinedSwizzle
= pLib
->UseCombinedSwizzle();
625 return useCombinedSwizzle
;
629 ****************************************************************************************************
630 * AddrExtractBankPipeSwizzle
633 * Extract Bank and Pipe swizzle from base256b
635 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
636 ****************************************************************************************************
638 ADDR_E_RETURNCODE ADDR_API
AddrExtractBankPipeSwizzle(
639 ADDR_HANDLE hLib
, ///< addrlib handle
640 const ADDR_EXTRACT_BANKPIPE_SWIZZLE_INPUT
* pIn
, ///< [in] input structure
641 ADDR_EXTRACT_BANKPIPE_SWIZZLE_OUTPUT
* pOut
) ///< [out] output structure
643 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
645 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
649 returnCode
= pLib
->ExtractBankPipeSwizzle(pIn
, pOut
);
653 returnCode
= ADDR_ERROR
;
660 ****************************************************************************************************
661 * AddrCombineBankPipeSwizzle
664 * Combine Bank and Pipe swizzle
667 ****************************************************************************************************
669 ADDR_E_RETURNCODE ADDR_API
AddrCombineBankPipeSwizzle(
671 const ADDR_COMBINE_BANKPIPE_SWIZZLE_INPUT
* pIn
,
672 ADDR_COMBINE_BANKPIPE_SWIZZLE_OUTPUT
* pOut
)
674 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
676 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
680 returnCode
= pLib
->CombineBankPipeSwizzle(pIn
, pOut
);
684 returnCode
= ADDR_ERROR
;
691 ****************************************************************************************************
692 * AddrComputeSliceSwizzle
695 * Compute a swizzle for slice from a base swizzle
697 * ADDR_OK if no error
698 ****************************************************************************************************
700 ADDR_E_RETURNCODE ADDR_API
AddrComputeSliceSwizzle(
702 const ADDR_COMPUTE_SLICESWIZZLE_INPUT
* pIn
,
703 ADDR_COMPUTE_SLICESWIZZLE_OUTPUT
* pOut
)
705 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
707 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
711 returnCode
= pLib
->ComputeSliceTileSwizzle(pIn
, pOut
);
715 returnCode
= ADDR_ERROR
;
722 ****************************************************************************************************
723 * AddrComputeBaseSwizzle
726 * Return a Combined Bank and Pipe swizzle base on surface based on surface type/index
728 * ADDR_OK if no error
729 ****************************************************************************************************
731 ADDR_E_RETURNCODE ADDR_API
AddrComputeBaseSwizzle(
733 const ADDR_COMPUTE_BASE_SWIZZLE_INPUT
* pIn
,
734 ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT
* pOut
)
736 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
738 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
742 returnCode
= pLib
->ComputeBaseSwizzle(pIn
, pOut
);
746 returnCode
= ADDR_ERROR
;
753 ****************************************************************************************************
754 * ElemFlt32ToDepthPixel
757 * Convert a FLT_32 value to a depth/stencil pixel value
760 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
762 ****************************************************************************************************
764 ADDR_E_RETURNCODE ADDR_API
ElemFlt32ToDepthPixel(
765 ADDR_HANDLE hLib
, ///< addrlib handle
766 const ELEM_FLT32TODEPTHPIXEL_INPUT
* pIn
, ///< [in] per-component value
767 ELEM_FLT32TODEPTHPIXEL_OUTPUT
* pOut
) ///< [out] final pixel value
769 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
771 Lib
* pLib
= Lib::GetLib(hLib
);
775 pLib
->Flt32ToDepthPixel(pIn
, pOut
);
779 returnCode
= ADDR_ERROR
;
786 ****************************************************************************************************
787 * ElemFlt32ToColorPixel
790 * Convert a FLT_32 value to a red/green/blue/alpha pixel value
793 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
795 ****************************************************************************************************
797 ADDR_E_RETURNCODE ADDR_API
ElemFlt32ToColorPixel(
798 ADDR_HANDLE hLib
, ///< addrlib handle
799 const ELEM_FLT32TOCOLORPIXEL_INPUT
* pIn
, ///< [in] format, surface number and swap value
800 ELEM_FLT32TOCOLORPIXEL_OUTPUT
* pOut
) ///< [out] final pixel value
802 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
804 Lib
* pLib
= Lib::GetLib(hLib
);
808 pLib
->Flt32ToColorPixel(pIn
, pOut
);
812 returnCode
= ADDR_ERROR
;
819 ****************************************************************************************************
823 * Helper function to check one format can be EXPORT_NUM,
824 * which is a register CB_COLOR_INFO.SURFACE_FORMAT.
825 * FP16 can be reported as EXPORT_NORM for rv770 in r600
828 ****************************************************************************************************
830 BOOL_32 ADDR_API
ElemGetExportNorm(
831 ADDR_HANDLE hLib
, ///< addrlib handle
832 const ELEM_GETEXPORTNORM_INPUT
* pIn
) ///< [in] input structure
834 Addr::Lib
* pLib
= Lib::GetLib(hLib
);
835 BOOL_32 enabled
= FALSE
;
837 MAYBE_UNUSED ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
841 enabled
= pLib
->GetExportNorm(pIn
);
845 returnCode
= ADDR_ERROR
;
848 ADDR_ASSERT(returnCode
== ADDR_OK
);
854 ****************************************************************************************************
855 * AddrConvertTileInfoToHW
858 * Convert tile info from real value to hardware register value
861 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
862 ****************************************************************************************************
864 ADDR_E_RETURNCODE ADDR_API
AddrConvertTileInfoToHW(
865 ADDR_HANDLE hLib
, ///< address lib handle
866 const ADDR_CONVERT_TILEINFOTOHW_INPUT
* pIn
, ///< [in] tile info with real value
867 ADDR_CONVERT_TILEINFOTOHW_OUTPUT
* pOut
) ///< [out] tile info with HW register value
869 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
871 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
875 returnCode
= pLib
->ConvertTileInfoToHW(pIn
, pOut
);
879 returnCode
= ADDR_ERROR
;
886 ****************************************************************************************************
887 * AddrConvertTileIndex
890 * Convert tile index to tile mode/type/info
893 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
894 ****************************************************************************************************
896 ADDR_E_RETURNCODE ADDR_API
AddrConvertTileIndex(
897 ADDR_HANDLE hLib
, ///< address lib handle
898 const ADDR_CONVERT_TILEINDEX_INPUT
* pIn
, ///< [in] input - tile index
899 ADDR_CONVERT_TILEINDEX_OUTPUT
* pOut
) ///< [out] tile mode/type/info
901 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
903 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
907 returnCode
= pLib
->ConvertTileIndex(pIn
, pOut
);
911 returnCode
= ADDR_ERROR
;
918 ****************************************************************************************************
919 * AddrGetMacroModeIndex
922 * Get macro mode index based on input parameters
925 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
926 ****************************************************************************************************
928 ADDR_E_RETURNCODE ADDR_API
AddrGetMacroModeIndex(
929 ADDR_HANDLE hLib
, ///< address lib handle
930 const ADDR_GET_MACROMODEINDEX_INPUT
* pIn
, ///< [in] input
931 ADDR_GET_MACROMODEINDEX_OUTPUT
* pOut
) ///< [out] macro mode index
933 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
935 ADDR_E_RETURNCODE returnCode
;
939 returnCode
= pLib
->GetMacroModeIndex(pIn
, pOut
);
943 returnCode
= ADDR_ERROR
;
950 ****************************************************************************************************
951 * AddrConvertTileIndex1
954 * Convert tile index to tile mode/type/info
957 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
958 ****************************************************************************************************
960 ADDR_E_RETURNCODE ADDR_API
AddrConvertTileIndex1(
961 ADDR_HANDLE hLib
, ///< address lib handle
962 const ADDR_CONVERT_TILEINDEX1_INPUT
* pIn
, ///< [in] input - tile index
963 ADDR_CONVERT_TILEINDEX_OUTPUT
* pOut
) ///< [out] tile mode/type/info
965 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
967 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
971 returnCode
= pLib
->ConvertTileIndex1(pIn
, pOut
);
975 returnCode
= ADDR_ERROR
;
982 ****************************************************************************************************
986 * Get tile index from tile mode/type/info
989 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
992 * Only meaningful for SI (and above)
993 ****************************************************************************************************
995 ADDR_E_RETURNCODE ADDR_API
AddrGetTileIndex(
997 const ADDR_GET_TILEINDEX_INPUT
* pIn
,
998 ADDR_GET_TILEINDEX_OUTPUT
* pOut
)
1000 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
1002 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1006 returnCode
= pLib
->GetTileIndex(pIn
, pOut
);
1010 returnCode
= ADDR_ERROR
;
1017 ****************************************************************************************************
1018 * AddrComputePrtInfo
1021 * Interface function for ComputePrtInfo
1023 ****************************************************************************************************
1025 ADDR_E_RETURNCODE ADDR_API
AddrComputePrtInfo(
1027 const ADDR_PRT_INFO_INPUT
* pIn
,
1028 ADDR_PRT_INFO_OUTPUT
* pOut
)
1030 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1032 V1::Lib
* pLib
= V1::Lib::GetLib(hLib
);
1036 returnCode
= pLib
->ComputePrtInfo(pIn
, pOut
);
1040 returnCode
= ADDR_ERROR
;
1047 ****************************************************************************************************
1048 * AddrGetMaxAlignments
1051 * Convert maximum alignments
1054 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1055 ****************************************************************************************************
1057 ADDR_E_RETURNCODE ADDR_API
AddrGetMaxAlignments(
1058 ADDR_HANDLE hLib
, ///< address lib handle
1059 ADDR_GET_MAX_ALINGMENTS_OUTPUT
* pOut
) ///< [out] output structure
1061 Addr::Lib
* pLib
= Lib::GetLib(hLib
);
1063 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1067 returnCode
= pLib
->GetMaxAlignments(pOut
);
1071 returnCode
= ADDR_ERROR
;
1078 ****************************************************************************************************
1079 * AddrGetMaxMetaAlignments
1082 * Convert maximum alignments for metadata
1085 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1086 ****************************************************************************************************
1088 ADDR_E_RETURNCODE ADDR_API
AddrGetMaxMetaAlignments(
1089 ADDR_HANDLE hLib
, ///< address lib handle
1090 ADDR_GET_MAX_ALINGMENTS_OUTPUT
* pOut
) ///< [out] output structure
1092 Addr::Lib
* pLib
= Lib::GetLib(hLib
);
1094 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1098 returnCode
= pLib
->GetMaxMetaAlignments(pOut
);
1102 returnCode
= ADDR_ERROR
;
1109 ////////////////////////////////////////////////////////////////////////////////////////////////////
1110 // Surface functions for Addr2
1111 ////////////////////////////////////////////////////////////////////////////////////////////////////
1114 ****************************************************************************************************
1115 * Addr2ComputeSurfaceInfo
1118 * Calculate surface width/height/depth/alignments and suitable tiling mode
1121 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1122 ****************************************************************************************************
1124 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeSurfaceInfo(
1125 ADDR_HANDLE hLib
, ///< address lib handle
1126 const ADDR2_COMPUTE_SURFACE_INFO_INPUT
* pIn
, ///< [in] surface information
1127 ADDR2_COMPUTE_SURFACE_INFO_OUTPUT
* pOut
) ///< [out] surface parameters and alignments
1129 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1131 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1135 returnCode
= pLib
->ComputeSurfaceInfo(pIn
, pOut
);
1139 returnCode
= ADDR_ERROR
;
1147 ****************************************************************************************************
1148 * Addr2ComputeSurfaceAddrFromCoord
1151 * Compute surface address according to coordinates
1154 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1155 ****************************************************************************************************
1157 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeSurfaceAddrFromCoord(
1158 ADDR_HANDLE hLib
, ///< address lib handle
1159 const ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] surface info and coordinates
1160 ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] surface address
1162 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1164 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1168 returnCode
= pLib
->ComputeSurfaceAddrFromCoord(pIn
, pOut
);
1172 returnCode
= ADDR_ERROR
;
1180 ****************************************************************************************************
1181 * Addr2ComputeSurfaceCoordFromAddr
1184 * Compute coordinates according to surface address
1187 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1188 ****************************************************************************************************
1190 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeSurfaceCoordFromAddr(
1191 ADDR_HANDLE hLib
, ///< address lib handle
1192 const ADDR2_COMPUTE_SURFACE_COORDFROMADDR_INPUT
* pIn
, ///< [in] surface info and address
1193 ADDR2_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] coordinates
1195 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1197 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1201 returnCode
= pLib
->ComputeSurfaceCoordFromAddr(pIn
, pOut
);
1205 returnCode
= ADDR_ERROR
;
1213 ////////////////////////////////////////////////////////////////////////////////////////////////////
1214 // HTile functions for Addr2
1215 ////////////////////////////////////////////////////////////////////////////////////////////////////
1218 ****************************************************************************************************
1219 * Addr2ComputeHtileInfo
1222 * Compute Htile pitch, height, base alignment and size in bytes
1225 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1226 ****************************************************************************************************
1228 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeHtileInfo(
1229 ADDR_HANDLE hLib
, ///< address lib handle
1230 const ADDR2_COMPUTE_HTILE_INFO_INPUT
* pIn
, ///< [in] Htile information
1231 ADDR2_COMPUTE_HTILE_INFO_OUTPUT
* pOut
) ///< [out] Htile pitch, height and size in bytes
1233 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1235 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1239 returnCode
= pLib
->ComputeHtileInfo(pIn
, pOut
);
1243 returnCode
= ADDR_ERROR
;
1251 ****************************************************************************************************
1252 * Addr2ComputeHtileAddrFromCoord
1255 * Compute Htile address according to coordinates (of depth buffer)
1258 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1259 ****************************************************************************************************
1261 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeHtileAddrFromCoord(
1262 ADDR_HANDLE hLib
, ///< address lib handle
1263 const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Htile info and coordinates
1264 ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Htile address
1266 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1268 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1272 returnCode
= pLib
->ComputeHtileAddrFromCoord(pIn
, pOut
);
1276 returnCode
= ADDR_ERROR
;
1284 ****************************************************************************************************
1285 * Addr2ComputeHtileCoordFromAddr
1288 * Compute coordinates within depth buffer (1st pixel of a micro tile) according to
1292 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1293 ****************************************************************************************************
1295 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeHtileCoordFromAddr(
1296 ADDR_HANDLE hLib
, ///< address lib handle
1297 const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT
* pIn
, ///< [in] Htile info and address
1298 ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Htile coordinates
1300 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1302 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1306 returnCode
= pLib
->ComputeHtileCoordFromAddr(pIn
, pOut
);
1310 returnCode
= ADDR_ERROR
;
1318 ////////////////////////////////////////////////////////////////////////////////////////////////////
1319 // C-mask functions for Addr2
1320 ////////////////////////////////////////////////////////////////////////////////////////////////////
1323 ****************************************************************************************************
1324 * Addr2ComputeCmaskInfo
1327 * Compute Cmask pitch, height, base alignment and size in bytes from color buffer
1331 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1332 ****************************************************************************************************
1334 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeCmaskInfo(
1335 ADDR_HANDLE hLib
, ///< address lib handle
1336 const ADDR2_COMPUTE_CMASK_INFO_INPUT
* pIn
, ///< [in] Cmask pitch and height
1337 ADDR2_COMPUTE_CMASK_INFO_OUTPUT
* pOut
) ///< [out] Cmask pitch, height and size in bytes
1339 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1341 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1345 returnCode
= pLib
->ComputeCmaskInfo(pIn
, pOut
);
1349 returnCode
= ADDR_ERROR
;
1357 ****************************************************************************************************
1358 * Addr2ComputeCmaskAddrFromCoord
1361 * Compute Cmask address according to coordinates (of MSAA color buffer)
1364 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1365 ****************************************************************************************************
1367 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeCmaskAddrFromCoord(
1368 ADDR_HANDLE hLib
, ///< address lib handle
1369 const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Cmask info and coordinates
1370 ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Cmask address
1372 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1374 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1378 returnCode
= pLib
->ComputeCmaskAddrFromCoord(pIn
, pOut
);
1382 returnCode
= ADDR_ERROR
;
1390 ****************************************************************************************************
1391 * Addr2ComputeCmaskCoordFromAddr
1394 * Compute coordinates within color buffer (1st pixel of a micro tile) according to
1398 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1399 ****************************************************************************************************
1401 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeCmaskCoordFromAddr(
1402 ADDR_HANDLE hLib
, ///< address lib handle
1403 const ADDR2_COMPUTE_CMASK_COORDFROMADDR_INPUT
* pIn
, ///< [in] Cmask info and address
1404 ADDR2_COMPUTE_CMASK_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Cmask coordinates
1406 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1408 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1412 returnCode
= pLib
->ComputeCmaskCoordFromAddr(pIn
, pOut
);
1416 returnCode
= ADDR_ERROR
;
1424 ////////////////////////////////////////////////////////////////////////////////////////////////////
1425 // F-mask functions for Addr2
1426 ////////////////////////////////////////////////////////////////////////////////////////////////////
1429 ****************************************************************************************************
1430 * Addr2ComputeFmaskInfo
1433 * Compute Fmask pitch/height/depth/alignments and size in bytes
1436 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1437 ****************************************************************************************************
1439 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeFmaskInfo(
1440 ADDR_HANDLE hLib
, ///< address lib handle
1441 const ADDR2_COMPUTE_FMASK_INFO_INPUT
* pIn
, ///< [in] Fmask information
1442 ADDR2_COMPUTE_FMASK_INFO_OUTPUT
* pOut
) ///< [out] Fmask pitch and height
1444 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1446 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1450 returnCode
= pLib
->ComputeFmaskInfo(pIn
, pOut
);
1454 returnCode
= ADDR_ERROR
;
1462 ****************************************************************************************************
1463 * Addr2ComputeFmaskAddrFromCoord
1466 * Compute Fmask address according to coordinates (x,y,slice,sample,plane)
1469 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1470 ****************************************************************************************************
1472 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeFmaskAddrFromCoord(
1473 ADDR_HANDLE hLib
, ///< address lib handle
1474 const ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Fmask info and coordinates
1475 ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Fmask address
1477 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1479 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1483 returnCode
= pLib
->ComputeFmaskAddrFromCoord(pIn
, pOut
);
1487 returnCode
= ADDR_ERROR
;
1495 ****************************************************************************************************
1496 * Addr2ComputeFmaskCoordFromAddr
1499 * Compute coordinates (x,y,slice,sample,plane) according to Fmask address
1502 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1503 ****************************************************************************************************
1505 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeFmaskCoordFromAddr(
1506 ADDR_HANDLE hLib
, ///< address lib handle
1507 const ADDR2_COMPUTE_FMASK_COORDFROMADDR_INPUT
* pIn
, ///< [in] Fmask info and address
1508 ADDR2_COMPUTE_FMASK_COORDFROMADDR_OUTPUT
* pOut
) ///< [out] Fmask coordinates
1510 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1512 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1516 returnCode
= pLib
->ComputeFmaskCoordFromAddr(pIn
, pOut
);
1520 returnCode
= ADDR_ERROR
;
1528 ////////////////////////////////////////////////////////////////////////////////////////////////////
1529 // DCC key functions for Addr2
1530 ////////////////////////////////////////////////////////////////////////////////////////////////////
1533 ****************************************************************************************************
1534 * Addr2ComputeDccInfo
1537 * Compute DCC key size, base alignment based on color surface size, tile info or tile index
1539 ****************************************************************************************************
1541 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeDccInfo(
1542 ADDR_HANDLE hLib
, ///< handle of addrlib
1543 const ADDR2_COMPUTE_DCCINFO_INPUT
* pIn
, ///< [in] input
1544 ADDR2_COMPUTE_DCCINFO_OUTPUT
* pOut
) ///< [out] output
1546 ADDR_E_RETURNCODE returnCode
;
1548 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1552 returnCode
= pLib
->ComputeDccInfo(pIn
, pOut
);
1556 returnCode
= ADDR_ERROR
;
1563 ****************************************************************************************************
1564 * Addr2ComputeDccAddrFromCoord
1567 * Compute DCC key address according to coordinates
1570 * ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
1571 ****************************************************************************************************
1573 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeDccAddrFromCoord(
1574 ADDR_HANDLE hLib
, ///< address lib handle
1575 const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT
* pIn
, ///< [in] Dcc info and coordinates
1576 ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT
* pOut
) ///< [out] Dcc address
1578 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1580 ADDR_E_RETURNCODE returnCode
= ADDR_OK
;
1584 returnCode
= pLib
->ComputeDccAddrFromCoord(pIn
, pOut
);
1588 returnCode
= ADDR_ERROR
;
1595 ****************************************************************************************************
1596 * Addr2ComputePipeBankXor
1599 * Calculate a valid bank pipe xor value for client to use.
1600 ****************************************************************************************************
1602 ADDR_E_RETURNCODE ADDR_API
Addr2ComputePipeBankXor(
1603 ADDR_HANDLE hLib
, ///< handle of addrlib
1604 const ADDR2_COMPUTE_PIPEBANKXOR_INPUT
* pIn
, ///< [in] input
1605 ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT
* pOut
) ///< [out] output
1607 ADDR_E_RETURNCODE returnCode
;
1609 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1613 returnCode
= pLib
->ComputePipeBankXor(pIn
, pOut
);
1617 returnCode
= ADDR_ERROR
;
1624 ****************************************************************************************************
1625 * Addr2ComputeSlicePipeBankXor
1628 * Calculate slice pipe bank xor value based on base pipe bank xor and slice id.
1629 ****************************************************************************************************
1631 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeSlicePipeBankXor(
1632 ADDR_HANDLE hLib
, ///< handle of addrlib
1633 const ADDR2_COMPUTE_SLICE_PIPEBANKXOR_INPUT
* pIn
, ///< [in] input
1634 ADDR2_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT
* pOut
) ///< [out] output
1636 ADDR_E_RETURNCODE returnCode
;
1638 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1642 returnCode
= pLib
->ComputeSlicePipeBankXor(pIn
, pOut
);
1646 returnCode
= ADDR_ERROR
;
1653 ****************************************************************************************************
1654 * Addr2ComputeSubResourceOffsetForSwizzlePattern
1657 * Calculate sub resource offset for swizzle pattern.
1658 ****************************************************************************************************
1660 ADDR_E_RETURNCODE ADDR_API
Addr2ComputeSubResourceOffsetForSwizzlePattern(
1661 ADDR_HANDLE hLib
, ///< handle of addrlib
1662 const ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT
* pIn
, ///< [in] input
1663 ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT
* pOut
) ///< [out] output
1665 ADDR_E_RETURNCODE returnCode
;
1667 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1671 returnCode
= pLib
->ComputeSubResourceOffsetForSwizzlePattern(pIn
, pOut
);
1675 returnCode
= ADDR_ERROR
;
1682 ****************************************************************************************************
1683 * Addr2GetPreferredSurfaceSetting
1686 * Suggest a preferred setting for client driver to program HW register
1687 ****************************************************************************************************
1689 ADDR_E_RETURNCODE ADDR_API
Addr2GetPreferredSurfaceSetting(
1690 ADDR_HANDLE hLib
, ///< handle of addrlib
1691 const ADDR2_GET_PREFERRED_SURF_SETTING_INPUT
* pIn
, ///< [in] input
1692 ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT
* pOut
) ///< [out] output
1694 ADDR_E_RETURNCODE returnCode
;
1696 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1700 returnCode
= pLib
->Addr2GetPreferredSurfaceSetting(pIn
, pOut
);
1704 returnCode
= ADDR_ERROR
;
1711 ****************************************************************************************************
1712 * Addr2IsValidDisplaySwizzleMode
1715 * Return whether the swizzle mode is supported by DCE / DCN.
1716 ****************************************************************************************************
1718 ADDR_E_RETURNCODE ADDR_API
Addr2IsValidDisplaySwizzleMode(
1720 AddrSwizzleMode swizzleMode
,
1724 ADDR_E_RETURNCODE returnCode
;
1726 V2::Lib
* pLib
= V2::Lib::GetLib(hLib
);
1730 ADDR2_COMPUTE_SURFACE_INFO_INPUT in
;
1731 in
.swizzleMode
= swizzleMode
;
1734 *result
= pLib
->IsValidDisplaySwizzleMode(&in
);
1735 returnCode
= ADDR_OK
;
1739 returnCode
= ADDR_ERROR
;