[GPU] FIXME comment for 1bpb/2bpb texture tiled extent

This commit is contained in:
Triang3l 2022-05-24 22:33:27 +03:00
parent 8701c9f24e
commit a4840e1992
2 changed files with 11 additions and 0 deletions

View File

@ -391,6 +391,12 @@ TextureGuestLayout GetGuestTextureLayout(
// 2D 32x32-block tiles are laid out linearly in the texture. // 2D 32x32-block tiles are laid out linearly in the texture.
// Calculate the extent as ((all rows except for the last * pitch in // Calculate the extent as ((all rows except for the last * pitch in
// tiles + last row length in tiles) * bytes per tile). // tiles + last row length in tiles) * bytes per tile).
// FIXME(Triang3l): This is wrong for 1bpb and 2bpb. At 1bpb (32x32 is
// 1024 bytes), offset for X + 32 minus offset for X is 512, not 1024,
// but offset for X + 128 minus offset for X + 96 is 2560. Also, for
// XY = 0...31, the extent of the addresses is 2560, not 1024. At 2bpb,
// addressing repeats every 64x64, and the extent for XY = 0...31 is
// 3072, not 2048.
level_layout.array_slice_data_extent_bytes = level_layout.array_slice_data_extent_bytes =
(level_layout.y_extent_blocks - xenos::kTextureTileWidthHeight) * (level_layout.y_extent_blocks - xenos::kTextureTileWidthHeight) *
level_layout.row_pitch_bytes + level_layout.row_pitch_bytes +

View File

@ -207,6 +207,11 @@ void GetTextureTotalSize(xenos::DataDimension dimension,
// Offset3D(X * 32, Y * 32, Z * 8) + Offset3D(x, y, z) // Offset3D(X * 32, Y * 32, Z * 8) + Offset3D(x, y, z)
// (true for negative offsets too). // (true for negative offsets too).
// - 2D 32x32 tiles are laid out linearly. // - 2D 32x32 tiles are laid out linearly.
// FIXME(Triang3l): This is wrong for 1bpb and 2bpb. At 1bpb (32x32 is 1024
// bytes), offset for X + 32 minus offset for X is 512, not 1024, but offset for
// X + 128 minus offset for X + 96 is 2560. Also, for XY = 0...31, the extent of
// the addresses is 2560, not 1024. At 2bpb, addressing repeats every 64x64, and
// the extent for XY = 0...31 is 3072, not 2048.
// - 3D tiled texture slices 0:3 and 4:7 are stored separately in memory, in // - 3D tiled texture slices 0:3 and 4:7 are stored separately in memory, in
// non-overlapping ranges, but addressing in 4:7 is different than in 0:3. // non-overlapping ranges, but addressing in 4:7 is different than in 0:3.
// - Addressing of blocks that are contiguous along X (for tiling/untiling of // - Addressing of blocks that are contiguous along X (for tiling/untiling of