GFX12: Update addrlib
Updated address lib to mesa amd-temp-gfx12 branch. Commit: 6e5244bd3184f0720197270a10e031b5ecd5fe75 Signed-off-by: David Belanger <david.belanger@amd.com> Change-Id: Icaead4f38c5f3019c375116070b1f97a927f09b0 Signed-off-by: Chris Freehill <cfreehil@amd.com>
此提交包含在:
1 父節點
7a3bf30769
當前提交
bb02f4e9a7
41 file changed
+5329
-1159
No files matched your search
@@ -2,24 +2,7 @@
|
||||
************************************************************************************************************************
|
||||
*
|
||||
* Copyright (C) 2007-2022 Advanced Micro Devices, Inc. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
***********************************************************************************************************************/
|
||||
|
||||
@@ -35,10 +18,13 @@
|
||||
// Includes should be before extern "C"
|
||||
#include "addrtypes.h"
|
||||
|
||||
namespace rocr {
|
||||
#if defined(__cplusplus)
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define ADDRLIB_VERSION_MAJOR 6
|
||||
#define ADDRLIB_VERSION_MINOR 2
|
||||
#define ADDRLIB_VERSION_MAJOR 8
|
||||
#define ADDRLIB_VERSION_MINOR 10
|
||||
#define ADDRLIB_VERSION ((ADDRLIB_VERSION_MAJOR << 16) | ADDRLIB_VERSION_MINOR)
|
||||
|
||||
/// Virtually all interface functions need ADDR_HANDLE as first parameter
|
||||
@@ -47,6 +33,13 @@ typedef VOID* ADDR_HANDLE;
|
||||
/// Client handle used in callbacks
|
||||
typedef VOID* ADDR_CLIENT_HANDLE;
|
||||
|
||||
typedef struct _ADDR_EXTENT3D
|
||||
{
|
||||
UINT_32 width;
|
||||
UINT_32 height;
|
||||
UINT_32 depth; // also slices for 2D images
|
||||
} ADDR_EXTENT3D;
|
||||
|
||||
/**
|
||||
* /////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
* // Callback functions
|
||||
@@ -124,7 +117,7 @@ typedef union _ADDR_CHANNEL_SETTING
|
||||
struct
|
||||
{
|
||||
UINT_8 valid : 1; ///< Indicate whehter this channel setting is valid
|
||||
UINT_8 channel : 2; ///< 0 for x channel, 1 for y channel, 2 for z channel
|
||||
UINT_8 channel : 2; ///< 0 for x channel, 1 for y channel, 2 for z channel, 3 for MSAA sample index
|
||||
UINT_8 index : 5; ///< Channel index
|
||||
};
|
||||
UINT_8 value; ///< Value
|
||||
@@ -158,18 +151,29 @@ typedef union _ADDR_EQUATION_KEY
|
||||
* @brief address equation structure
|
||||
****************************************************************************************************
|
||||
*/
|
||||
#define ADDR_MAX_EQUATION_BIT 20u
|
||||
#define ADDR_MAX_LEGACY_EQUATION_COMP 3u
|
||||
#define ADDR_MAX_EQUATION_COMP 5u
|
||||
#define ADDR_MAX_EQUATION_BIT 20u
|
||||
|
||||
// Invalid equation index
|
||||
#define ADDR_INVALID_EQUATION_INDEX 0xFFFFFFFF
|
||||
|
||||
typedef struct _ADDR_EQUATION
|
||||
{
|
||||
ADDR_CHANNEL_SETTING addr[ADDR_MAX_EQUATION_BIT]; ///< addr setting
|
||||
///< each bit is result of addr ^ xor ^ xor2
|
||||
ADDR_CHANNEL_SETTING xor1[ADDR_MAX_EQUATION_BIT]; ///< xor setting
|
||||
ADDR_CHANNEL_SETTING xor2[ADDR_MAX_EQUATION_BIT]; ///< xor2 setting
|
||||
union
|
||||
{
|
||||
struct {
|
||||
ADDR_CHANNEL_SETTING addr[ADDR_MAX_EQUATION_BIT]; ///< addr setting
|
||||
ADDR_CHANNEL_SETTING xor1[ADDR_MAX_EQUATION_BIT]; ///< xor setting
|
||||
ADDR_CHANNEL_SETTING xor2[ADDR_MAX_EQUATION_BIT]; ///< xor2 setting
|
||||
ADDR_CHANNEL_SETTING xor3[ADDR_MAX_EQUATION_BIT]; ///< xor3 setting
|
||||
ADDR_CHANNEL_SETTING xor4[ADDR_MAX_EQUATION_BIT]; ///< xor4 setting
|
||||
};
|
||||
///< Components showing the sources of each bit; each bit is result of addr ^ xor ^ xor2...
|
||||
ADDR_CHANNEL_SETTING comps[ADDR_MAX_EQUATION_COMP][ADDR_MAX_EQUATION_BIT];
|
||||
};
|
||||
UINT_32 numBits; ///< The number of bits in equation
|
||||
UINT_32 numBitComponents; ///< The max number of channels contributing to a bit
|
||||
BOOL_32 stackedDepthSlices; ///< TRUE if depth slices are treated as being
|
||||
///< stacked vertically prior to swizzling
|
||||
} ADDR_EQUATION;
|
||||
@@ -1723,6 +1727,30 @@ typedef enum _AddrSwizzleGenOption
|
||||
ADDR_SWIZZLE_GEN_LINEAR = 1, ///< Using a linear increment of swizzle
|
||||
} AddrSwizzleGenOption;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* AddrBlockType
|
||||
*
|
||||
* @brief
|
||||
* Macro define resource block type
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
AddrBlockLinear = 0, // Resource uses linear swizzle mode
|
||||
AddrBlockMicro = 1, // Resource uses 256B block
|
||||
AddrBlockThin4KB = 2, // Resource uses thin 4KB block
|
||||
AddrBlockThick4KB = 3, // Resource uses thick 4KB block
|
||||
AddrBlockThin64KB = 4, // Resource uses thin 64KB block
|
||||
AddrBlockThick64KB = 5, // Resource uses thick 64KB block
|
||||
AddrBlockThinVar = 6, // Resource uses thin var block
|
||||
AddrBlockThickVar = 7, // Resource uses thick var block
|
||||
AddrBlockMaxTiledType,
|
||||
|
||||
AddrBlockThin256KB = AddrBlockThinVar,
|
||||
AddrBlockThick256KB = AddrBlockThickVar,
|
||||
} AddrBlockType;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* AddrSwizzleOption
|
||||
@@ -2408,7 +2436,8 @@ typedef union _ADDR2_SURFACE_FLAGS
|
||||
UINT_32 metaRbUnaligned : 1; ///< This resource has rb unaligned metadata
|
||||
UINT_32 metaPipeUnaligned : 1; ///< This resource has pipe unaligned metadata
|
||||
UINT_32 view3dAs2dArray : 1; ///< This resource is a 3D resource viewed as 2D array
|
||||
UINT_32 reserved : 13; ///< Reserved bits
|
||||
UINT_32 allowExtEquation : 1; ///< If unset, only legacy DX eqs are allowed (2 XORs)
|
||||
UINT_32 reserved : 12; ///< Reserved bits
|
||||
};
|
||||
|
||||
UINT_32 value;
|
||||
@@ -2585,7 +2614,7 @@ typedef struct _ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
|
||||
UINT_64 addr; ///< Byte address
|
||||
UINT_64 addr; ///< Byte offset from the image starting address
|
||||
UINT_32 bitPosition; ///< Bit position within surfaceAddr, 0-7.
|
||||
/// For surface bpp < 8, e.g. FMT_1.
|
||||
UINT_32 prtBlockIndex; ///< Index of a PRT tile (64K block)
|
||||
@@ -3924,6 +3953,20 @@ ADDR_E_RETURNCODE ADDR_API Addr2GetPreferredSurfaceSetting(
|
||||
const ADDR2_GET_PREFERRED_SURF_SETTING_INPUT* pIn,
|
||||
ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr2GetPossibleSwizzleModes
|
||||
*
|
||||
* @brief
|
||||
* Returns a list of swizzle modes that are valid from the hardware's perspective for the
|
||||
* client to choose from
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr2GetPossibleSwizzleModes(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR2_GET_PREFERRED_SURF_SETTING_INPUT* pIn,
|
||||
ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr2IsValidDisplaySwizzleMode
|
||||
@@ -3938,6 +3981,524 @@ ADDR_E_RETURNCODE ADDR_API Addr2IsValidDisplaySwizzleMode(
|
||||
UINT_32 bpp,
|
||||
BOOL_32 *pResult);
|
||||
|
||||
} // rocr
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr2GetAllowedBlockSet
|
||||
*
|
||||
* @brief
|
||||
* Returns the set of allowed block sizes given the allowed swizzle modes and resource type
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr2GetAllowedBlockSet(
|
||||
ADDR_HANDLE hLib,
|
||||
ADDR2_SWMODE_SET allowedSwModeSet,
|
||||
AddrResourceType rsrcType,
|
||||
ADDR2_BLOCK_SET* pAllowedBlockSet);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr2GetAllowedSwSet
|
||||
*
|
||||
* @brief
|
||||
* Returns the set of allowed swizzle types given the allowed swizzle modes
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr2GetAllowedSwSet(
|
||||
ADDR_HANDLE hLib,
|
||||
ADDR2_SWMODE_SET allowedSwModeSet,
|
||||
ADDR2_SWTYPE_SET* pAllowedSwSet);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr2IsBlockTypeAvailable
|
||||
*
|
||||
* @brief
|
||||
* Determine whether a block type is allowed in a given blockSet
|
||||
****************************************************************************************************
|
||||
*/
|
||||
BOOL_32 Addr2IsBlockTypeAvailable(ADDR2_BLOCK_SET blockSet, AddrBlockType blockType);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr2BlockTypeWithinMemoryBudget
|
||||
*
|
||||
* @brief
|
||||
* Determine whether a new block type is acceptable based on memory waste ratio. Will favor
|
||||
* larger block types.
|
||||
****************************************************************************************************
|
||||
*/
|
||||
BOOL_32 Addr2BlockTypeWithinMemoryBudget(
|
||||
UINT_64 minSize,
|
||||
UINT_64 newBlockTypeSize,
|
||||
UINT_32 ratioLow,
|
||||
UINT_32 ratioHi,
|
||||
#if defined(__cplusplus)
|
||||
DOUBLE memoryBudget = 0.0f,
|
||||
BOOL_32 newBlockTypeBigger = TRUE);
|
||||
#else
|
||||
DOUBLE memoryBudget,
|
||||
BOOL_32 newBlockTypeBigger);
|
||||
#endif
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_SURFACE_FLAGS
|
||||
*
|
||||
* @brief
|
||||
* Surface flags
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef union _ADDR3_SURFACE_FLAGS
|
||||
{
|
||||
struct
|
||||
{
|
||||
UINT_32 color : 1; ///< This resource is a color buffer, can be used with RTV
|
||||
UINT_32 depth : 1; ///< This resource is a depth buffer, can be used with DSV
|
||||
UINT_32 stencil : 1; ///< This resource is a stencil buffer, can be used with DSV
|
||||
UINT_32 texture : 1; ///< This resource can be used with SRV
|
||||
UINT_32 unordered : 1; ///< This resource can be used with UAV
|
||||
UINT_32 hiZHiS : 1;
|
||||
UINT_32 blockCompressed : 1;
|
||||
UINT_32 nv12 : 1;
|
||||
UINT_32 p010 : 1;
|
||||
UINT_32 view3dAs2dArray : 1;
|
||||
UINT_32 isVrsImage : 1; ///< This resource is a VRS source image
|
||||
UINT_32 reserved : 21; ///< Reserved bits
|
||||
};
|
||||
|
||||
UINT_32 value;
|
||||
} ADDR3_SURFACE_FLAGS;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SURFACE_INFO_INPUT
|
||||
*
|
||||
* @brief
|
||||
* Input structure for Addr3ComputeSurfaceInfo
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SURFACE_INFO_INPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
|
||||
ADDR3_SURFACE_FLAGS flags; ///< Surface flags
|
||||
Addr3SwizzleMode swizzleMode; ///< Swizzle Mode for Gfx12
|
||||
AddrResourceType resourceType; ///< Surface type
|
||||
AddrFormat format; ///< Surface format
|
||||
UINT_32 bpp; ///< bits per pixel
|
||||
UINT_32 width; ///< Width (of mip0), in pixels
|
||||
UINT_32 height; ///< Height (of mip0), in pixels
|
||||
UINT_32 numSlices; ///< Number surface slice/depth (of mip0),
|
||||
UINT_32 numMipLevels; ///< Total mipmap levels.
|
||||
UINT_32 numSamples; ///< Number of samples
|
||||
UINT_32 pitchInElement; ///< Pitch in elements (blocks for compressed formats)
|
||||
UINT_32 sliceAlign; ///< Required slice size in bytes
|
||||
} ADDR3_COMPUTE_SURFACE_INFO_INPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_MIP_INFO
|
||||
*
|
||||
* @brief
|
||||
* Structure that contains information for mip level
|
||||
*
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_MIP_INFO
|
||||
{
|
||||
UINT_32 pitch; ///< Pitch in elements
|
||||
UINT_32 height; ///< Padded height in elements
|
||||
UINT_32 depth; ///< Padded depth
|
||||
UINT_32 pixelPitch; ///< Pitch in pixels
|
||||
UINT_32 pixelHeight; ///< Padded height in pixels
|
||||
UINT_32 equationIndex; ///< Equation index in the equation table
|
||||
UINT_64 offset; ///< Offset in bytes from mip base, should only be used
|
||||
///< to setup vam surface descriptor, can't be used
|
||||
///< to setup swizzle pattern
|
||||
UINT_64 macroBlockOffset; ///< macro block offset in bytes from mip base
|
||||
UINT_32 mipTailOffset; ///< mip tail offset in bytes
|
||||
UINT_32 mipTailCoordX; ///< mip tail coord x
|
||||
UINT_32 mipTailCoordY; ///< mip tail coord y
|
||||
UINT_32 mipTailCoordZ; ///< mip tail coord z
|
||||
} ADDR3_MIP_INFO;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SURFACE_INFO_OUTPUT
|
||||
*
|
||||
* @brief
|
||||
* Output structure for Addr3ComputeSurfaceInfo
|
||||
* @note
|
||||
Element: AddrLib unit for computing. e.g. BCn: 4x4 blocks; R32B32B32: 32bit with 3x pitch
|
||||
Pixel: Original pixel
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SURFACE_INFO_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
UINT_32 pitch; ///< Pitch in elements (blocks for compressed formats)
|
||||
UINT_32 pixelPitch; ///< Pitch in original pixels
|
||||
UINT_32 pixelHeight; ///< Height in original pixels
|
||||
UINT_32 pixelBits; ///< Original bits per pixel, passed from input
|
||||
UINT_32 bpp; ///< Bits per elements
|
||||
/// (e.g. blocks for BCn, 1/3 for 96bit)
|
||||
UINT_32 numSlices; ///< Padded depth for 3d resource
|
||||
/// or padded number of slices for 2d array resource
|
||||
UINT_32 height; ///< Padded height (of mip0) in elements
|
||||
UINT_64 sliceSize; ///< Slice (total mip chain) size in bytes
|
||||
UINT_64 surfSize; ///< Surface (total mip chain) size in bytes
|
||||
UINT_32 baseAlign; ///< Base address alignment
|
||||
ADDR_EXTENT3D blockExtent; ///< Dimensions in element inside one block
|
||||
UINT_32 pixelMipChainPitch; ///< Mip chain pitch in original pixels
|
||||
UINT_32 pixelMipChainHeight; ///< Mip chain height in original pixels
|
||||
ADDR3_MIP_INFO* pMipInfo; ///< Info regarding the start, sizes of the mip levels
|
||||
BOOL_32 mipChainInTail; ///< If whole mipchain falls into mip tail block
|
||||
UINT_32 firstMipIdInTail; ///< The id of first mip in tail, if there is no mip
|
||||
/// in tail, it will be set to number of mip levels
|
||||
} ADDR3_COMPUTE_SURFACE_INFO_OUTPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_SWMODE_SET
|
||||
*
|
||||
* @brief
|
||||
* Bit field that defines swizzle type
|
||||
****************************************************************************************************
|
||||
*/
|
||||
// The bit order MUST be the same as Addr3SwizzleMode enumerations, otherwise using bitset to enable
|
||||
// or disable swizzle modes will be problematic.
|
||||
typedef union _ADDR3_SWMODE_SET
|
||||
{
|
||||
struct
|
||||
{
|
||||
UINT_32 swLinear : 1;
|
||||
UINT_32 sw2d256B : 1;
|
||||
UINT_32 sw2d4kB : 1;
|
||||
UINT_32 sw2d64kB : 1;
|
||||
UINT_32 sw2d256kB : 1;
|
||||
UINT_32 sw3d4kB : 1;
|
||||
UINT_32 sw3d64kB : 1;
|
||||
UINT_32 sw3d256kB : 1;
|
||||
UINT_32 reserved : 24;
|
||||
};
|
||||
|
||||
UINT_32 value;
|
||||
} ADDR3_SWMODE_SET;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT
|
||||
*
|
||||
* @brief
|
||||
* Input structure of Addr3GetPossibleSwizzleModes
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
|
||||
ADDR3_SURFACE_FLAGS flags; ///< Surface flags
|
||||
AddrResourceType resourceType; ///< Surface type
|
||||
UINT_32 bpp; ///< bits per pixel
|
||||
UINT_32 width; ///< Width (of mip0), in pixels
|
||||
UINT_32 height; ///< Height (of mip0), in pixels
|
||||
UINT_32 numSlices; ///< Number surface slice/depth (of mip0),
|
||||
UINT_32 numMipLevels; ///< Total mipmap levels.
|
||||
UINT_32 numSamples; ///< Number of samples
|
||||
UINT_32 maxAlign; ///< maximum base/size alignment requested by client
|
||||
} ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT
|
||||
*
|
||||
* @brief
|
||||
* Output structure of Addr3GetPossibleSwizzleModes
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
ADDR3_SWMODE_SET validModes; ///< List of valid swizzle modes for this function.
|
||||
} ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr3ComputeSurfaceInfo
|
||||
*
|
||||
* @brief
|
||||
* Compute surface width/height/slices/alignments and suitable tiling mode
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr3ComputeSurfaceInfo(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR3_COMPUTE_SURFACE_INFO_INPUT* pIn,
|
||||
ADDR3_COMPUTE_SURFACE_INFO_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr3GetPossibleSwizzleModes
|
||||
*
|
||||
* @brief
|
||||
* Returns a list of swizzle modes that are valid from the hardware's perspective for the
|
||||
* client to choose from
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr3GetPossibleSwizzleModes(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT* pIn,
|
||||
ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT
|
||||
*
|
||||
* @brief
|
||||
* Input structure for Addr3ComputeSurfaceAddrFromCoord
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
|
||||
UINT_32 x; ///< X coordinate
|
||||
UINT_32 y; ///< Y coordinate
|
||||
UINT_32 slice; ///< Slice index
|
||||
UINT_32 sample; ///< Sample index, use fragment index for EQAA
|
||||
UINT_32 mipId; ///< the mip ID in mip chain
|
||||
|
||||
Addr3SwizzleMode swizzleMode; ///< Swizzle mode for Gfx12
|
||||
ADDR3_SURFACE_FLAGS flags; ///< Surface flags
|
||||
AddrResourceType resourceType; ///< Surface type
|
||||
UINT_32 bpp; ///< Bits per pixel
|
||||
ADDR_EXTENT3D unAlignedDims; ///< Surface original dimensions (of mip0)
|
||||
UINT_32 numMipLevels; ///< Total mipmap levels
|
||||
UINT_32 numSamples; ///< Number of samples
|
||||
UINT_32 pitchInElement; ///< Pitch in elements (blocks for compressed formats)
|
||||
} ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
|
||||
*
|
||||
* @brief
|
||||
* Output structure for Addr3ComputeSurfaceAddrFromCoord
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
|
||||
UINT_64 addr; ///< Byte offset from the image starting address
|
||||
UINT_32 bitPosition; ///< Bit position within surfaceAddr, 0-7.
|
||||
/// For surface bpp < 8, e.g. FMT_1.
|
||||
UINT_32 prtBlockIndex; ///< Index of a PRT tile (64K block)
|
||||
} ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr3ComputeSurfaceAddrFromCoord
|
||||
*
|
||||
* @brief
|
||||
* Compute surface address from a given coordinate.
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr3ComputeSurfaceAddrFromCoord(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT* pIn,
|
||||
ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_PIPEBANKXOR_INPUT
|
||||
*
|
||||
* @brief
|
||||
* Input structure of Addr3ComputePipebankXor
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_PIPEBANKXOR_INPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
UINT_32 surfIndex; ///< Input surface index
|
||||
Addr3SwizzleMode swizzleMode; ///< Surface swizzle mode
|
||||
} ADDR3_COMPUTE_PIPEBANKXOR_INPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT
|
||||
*
|
||||
* @brief
|
||||
* Output structure of Addr3ComputePipebankXor
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
UINT_32 pipeBankXor; ///< Pipe bank xor
|
||||
} ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr3ComputePipeBankXor
|
||||
*
|
||||
* @brief
|
||||
* Calculate a valid bank pipe xor value for client to use.
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr3ComputePipeBankXor(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR3_COMPUTE_PIPEBANKXOR_INPUT* pIn,
|
||||
ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT
|
||||
*
|
||||
* @brief
|
||||
* Input structure of Addr3ComputeNonBlockCompressedView
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
ADDR3_SURFACE_FLAGS flags; ///< Surface flags
|
||||
Addr3SwizzleMode swizzleMode; ///< Swizzle Mode for Gfx12
|
||||
AddrResourceType resourceType; ///< Surface type
|
||||
AddrFormat format; ///< Surface format
|
||||
ADDR_EXTENT3D unAlignedDims; ///< Surface original dimensions (of mip0)
|
||||
UINT_32 numMipLevels; ///< Total mipmap levels.
|
||||
UINT_32 pipeBankXor; ///< Combined swizzle used to do bank/pipe rotation
|
||||
UINT_32 slice; ///< Index of slice to view
|
||||
UINT_32 mipId; ///< Id of mip to view
|
||||
} ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT
|
||||
*
|
||||
* @brief
|
||||
* Output structure of Addr3ComputeNonBlockCompressedView
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
UINT_64 offset; ///< Offset from resource base for the view
|
||||
UINT_32 pipeBankXor; ///< Pipe bank xor for the view
|
||||
ADDR_EXTENT3D unAlignedDims; ///< Mip0 dimens (in element) for the view
|
||||
UINT_32 numMipLevels; ///< Total mipmap levels for the view
|
||||
UINT_32 mipId; ///< Mip ID for the view
|
||||
} ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr3ComputeNonBlockCompressedView
|
||||
*
|
||||
* @brief
|
||||
* Compute non-block-compressed view for a given mipmap level/slice
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr3ComputeNonBlockCompressedView(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT* pIn,
|
||||
ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT
|
||||
*
|
||||
* @brief
|
||||
* Input structure of Addr3ComputeSubResourceOffsetForSwizzlePattern
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
Addr3SwizzleMode swizzleMode; ///< Surface swizzle mode
|
||||
AddrResourceType resourceType; ///< Surface resource type
|
||||
UINT_32 pipeBankXor; ///< Per resource xor
|
||||
UINT_32 slice; ///< Slice id
|
||||
UINT_64 sliceSize; ///< Slice size of a mip chain
|
||||
UINT_64 macroBlockOffset; ///< Macro block offset, returned in ADDR3_MIP_INFO
|
||||
UINT_32 mipTailOffset; ///< Mip tail offset, returned in ADDR3_MIP_INFO
|
||||
} ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT
|
||||
*
|
||||
* @brief
|
||||
* Output structure of Addr3ComputeSubResourceOffsetForSwizzlePattern
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
UINT_64 offset; ///< offset
|
||||
} ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr3ComputeSubResourceOffsetForSwizzlePattern
|
||||
*
|
||||
* @brief
|
||||
* Calculate sub resource offset to support swizzle pattern.
|
||||
****************************************************************************************************
|
||||
*/
|
||||
VOID ADDR_API Addr3ComputeSubResourceOffsetForSwizzlePattern(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT* pIn,
|
||||
ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT* pOut);
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT
|
||||
*
|
||||
* @brief
|
||||
* Input structure of Addr2ComputeSlicePipeBankXor
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
Addr3SwizzleMode swizzleMode; ///< Surface swizzle mode
|
||||
AddrResourceType resourceType; ///< Surface resource type
|
||||
UINT_32 bpe; ///< bits per element (e.g. block size for BCn format)
|
||||
UINT_32 basePipeBankXor; ///< Base pipe bank xor
|
||||
UINT_32 slice; ///< Slice id
|
||||
UINT_32 numSamples; ///< Number of samples
|
||||
} ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT
|
||||
*
|
||||
* @brief
|
||||
* Output structure of Addr3ComputeSlicePipeBankXor
|
||||
****************************************************************************************************
|
||||
*/
|
||||
typedef struct _ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT
|
||||
{
|
||||
UINT_32 size; ///< Size of this structure in bytes
|
||||
UINT_32 pipeBankXor; ///< Pipe bank xor
|
||||
} ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT;
|
||||
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* Addr3ComputeSlicePipeBankXor
|
||||
*
|
||||
* @brief
|
||||
* Calculate slice pipe bank xor value based on base pipe bank xor and slice id.
|
||||
****************************************************************************************************
|
||||
*/
|
||||
ADDR_E_RETURNCODE ADDR_API Addr3ComputeSlicePipeBankXor(
|
||||
ADDR_HANDLE hLib,
|
||||
const ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT* pIn,
|
||||
ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT* pOut);
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __ADDR_INTERFACE_H__
|
||||
Reference in new issue
封鎖使用者