103 case FetchOpDimension::k1D:
105 case FetchOpDimension::k2D:
107 case FetchOpDimension::k3DOrStacked:
108 case FetchOpDimension::kCube:
127#define REXGPU_SWIZZLE(x, y, z, w) \
128 (((::rex::xenos::REXGPU_SWIZZLE_##x) << 0) | ((::rex::xenos::REXGPU_SWIZZLE_##y) << 3) | \
129 ((::rex::xenos::REXGPU_SWIZZLE_##z) << 6) | ((::rex::xenos::REXGPU_SWIZZLE_##w) << 9))
131enum TextureSwizzle : u16 {
132 REXGPU_SWIZZLE_X = 0,
133 REXGPU_SWIZZLE_R = 0,
134 REXGPU_SWIZZLE_Y = 1,
135 REXGPU_SWIZZLE_G = 1,
136 REXGPU_SWIZZLE_Z = 2,
137 REXGPU_SWIZZLE_B = 2,
138 REXGPU_SWIZZLE_W = 3,
139 REXGPU_SWIZZLE_A = 3,
140 REXGPU_SWIZZLE_0 = 4,
141 REXGPU_SWIZZLE_1 = 5,
170constexpr u32 kTextureFetchConstantCount = 32;
189REX_STATIC_ASSERT_SIZE(
VertexFetch,
sizeof(u32) * 2);
195constexpr u32 kTexture1DMaxWidthLog2 = 24;
196constexpr u32 kTexture1DMaxWidth = 1 << kTexture1DMaxWidthLog2;
197constexpr u32 kTexture2DCubeMaxWidthHeightLog2 = 13;
198constexpr u32 kTexture2DCubeMaxWidthHeight = 1 << kTexture2DCubeMaxWidthHeightLog2;
199constexpr u32 kTexture2DMaxStackDepthLog2 = 6;
200constexpr u32 kTexture2DMaxStackDepth = 1 << kTexture2DMaxStackDepthLog2;
201constexpr u32 kTexture3DMaxWidthHeightLog2 = 11;
202constexpr u32 kTexture3DMaxWidthHeight = 1 << kTexture3DMaxWidthHeightLog2;
203constexpr u32 kTexture3DMaxDepthLog2 = 10;
204constexpr u32 kTexture3DMaxDepth = 1 << kTexture3DMaxDepthLog2;
206constexpr u32 kTextureMaxMips =
207 std::max(kTexture2DCubeMaxWidthHeightLog2, kTexture3DMaxWidthHeightLog2) + 1;
209constexpr u32 kTextureTileWidthHeightLog2 = 5;
210constexpr u32 kTextureTileWidthHeight = 1 << kTextureTileWidthHeightLog2;
222 return 7 - std::min(UINT32_C(2), bytes_per_block_log2 +
static_cast<u32
>(is_3d));
227 return is_3d ? 5 : (7 - std::min(UINT32_C(2), bytes_per_block_log2));
230constexpr u32 kTextureTiledZBaseGranularityLog2 = 3;
231constexpr u32 kTextureTiledZBaseGranularity = 1 << kTextureTiledZBaseGranularityLog2;
233constexpr u32 kTextureLinearRowAlignmentBytesLog2 = 8;
234constexpr u32 kTextureLinearRowAlignmentBytes = 1 << kTextureLinearRowAlignmentBytesLog2;
261 u32 request_size : 2;
293 u32 vol_mag_filter : 1;
294 u32 vol_min_filter : 1;
295 u32 mip_min_level : 4;
296 u32 mip_max_level : 4;
297 u32 mag_aniso_walk : 1;
298 u32 min_aniso_walk : 1;
300 i32 grad_exp_adjust_h : 5;
301 i32 grad_exp_adjust_v : 5;
304 u32 force_bc_w_to_max : 1;
342REX_STATIC_ASSERT_SIZE(
FetchGroup,
sizeof(u32) * 6);
376 u32 red_blue_swap : 1;
379 u32 index_count : 23;
#define REX_UNHANDLED_CASE(var)
Definition assert.h:119
int GetFetchOpDimensionComponentCount(FetchOpDimension dimension)
Definition fetch.h:101
AnisoFilter
Definition fetch.h:73
BorderColor
Definition fetch.h:84
@ k_ACBYCR_Black
Definition fetch.h:87
@ k_ACBCRY_Black
Definition fetch.h:88
ClampMode
Definition fetch.h:35
@ kMirrorClampToEdge
Definition fetch.h:39
@ kMirrorClampToBorder
Definition fetch.h:43
@ kMirrorClampToHalfway
Definition fetch.h:41
@ kClampToHalfway
Definition fetch.h:40
#define REXGPU_SWIZZLE(x, y, z, w)
Definition fetch.h:127
constexpr u32 GetTextureTiledYBaseGranularityLog2(bool is_3d, u32 bytes_per_block_log2)
Definition fetch.h:226
constexpr u32 kTextureSubresourceAlignmentBytesLog2
Definition fetch.h:192
constexpr bool ClampModeUsesBorder(ClampMode clamp_mode)
Definition fetch.h:51
constexpr u32 kVertexFetchConstantCount
Definition fetch.h:172
FetchConstantType
Definition fetch.h:163
TextureSign
Definition fetch.h:57
@ kUnsignedBiased
Definition fetch.h:60
@ kSigned
Definition fetch.h:59
@ kGamma
Definition fetch.h:61
constexpr u32 GetTextureTiledXBaseGranularityLog2(bool is_3d, u32 bytes_per_block_log2)
Definition fetch.h:221
TextureFilter
Definition fetch.h:65
@ kBaseMap
Definition fetch.h:68
@ kUseFetchConst
Definition fetch.h:69
DataDimension
Definition fetch.h:27
FetchOpDimension
Definition fetch.h:93
constexpr u32 kTextureTileDepthLog2
Definition fetch.h:212
Xenos pipeline state, shader and EDRAM enums.
ArbitraryFilter
Definition state.h:209
Integer types, byte order wrappers and size literals.