DMA & InlineToMemory Engines Rework.
This commit is contained in:
parent
b2099fbdcc
commit
f5fd6b5c86
21 changed files with 323 additions and 242 deletions
|
@ -40,7 +40,6 @@ constexpr SwizzleTable MakeSwizzleTable() {
|
|||
}
|
||||
return table;
|
||||
}
|
||||
constexpr SwizzleTable SWIZZLE_TABLE = MakeSwizzleTable();
|
||||
|
||||
/// Unswizzles a block linear texture into linear memory.
|
||||
void UnswizzleTexture(std::span<u8> output, std::span<const u8> input, u32 bytes_per_pixel,
|
||||
|
@ -57,34 +56,14 @@ std::size_t CalculateSize(bool tiled, u32 bytes_per_pixel, u32 width, u32 height
|
|||
u32 block_height, u32 block_depth);
|
||||
|
||||
/// Copies an untiled subrectangle into a tiled surface.
|
||||
void SwizzleSubrect(u32 subrect_width, u32 subrect_height, u32 source_pitch, u32 swizzled_width,
|
||||
u32 bytes_per_pixel, u8* swizzled_data, const u8* unswizzled_data,
|
||||
u32 block_height_bit, u32 offset_x, u32 offset_y);
|
||||
void SwizzleSubrect(std::span<u8> output, std::span<const u8> input, u32 bytes_per_pixel, u32 width,
|
||||
u32 height, u32 depth, u32 origin_x, u32 origin_y, u32 extent_x, u32 extent_y,
|
||||
u32 block_height, u32 block_depth, u32 pitch_linear);
|
||||
|
||||
/// Copies a tiled subrectangle into a linear surface.
|
||||
void UnswizzleSubrect(u32 line_length_in, u32 line_count, u32 pitch, u32 width, u32 bytes_per_pixel,
|
||||
u32 block_height, u32 origin_x, u32 origin_y, u8* output, const u8* input);
|
||||
|
||||
/// @brief Swizzles a 2D array of pixels into a 3D texture
|
||||
/// @param line_length_in Number of pixels per line
|
||||
/// @param line_count Number of lines
|
||||
/// @param pitch Number of bytes per line
|
||||
/// @param width Width of the swizzled texture
|
||||
/// @param height Height of the swizzled texture
|
||||
/// @param bytes_per_pixel Number of bytes used per pixel
|
||||
/// @param block_height Block height shift
|
||||
/// @param block_depth Block depth shift
|
||||
/// @param origin_x Column offset in pixels of the swizzled texture
|
||||
/// @param origin_y Row offset in pixels of the swizzled texture
|
||||
/// @param output Pointer to the pixels of the swizzled texture
|
||||
/// @param input Pointer to the 2D array of pixels used as input
|
||||
/// @pre input and output points to an array large enough to hold the number of bytes used
|
||||
void SwizzleSliceToVoxel(u32 line_length_in, u32 line_count, u32 pitch, u32 width, u32 height,
|
||||
u32 bytes_per_pixel, u32 block_height, u32 block_depth, u32 origin_x,
|
||||
u32 origin_y, u8* output, const u8* input);
|
||||
|
||||
void SwizzleKepler(u32 width, u32 height, u32 dst_x, u32 dst_y, u32 block_height,
|
||||
std::size_t copy_size, const u8* source_data, u8* swizzle_data);
|
||||
void UnswizzleSubrect(std::span<u8> output, std::span<const u8> input, u32 bytes_per_pixel,
|
||||
u32 width, u32 height, u32 depth, u32 origin_x, u32 origin_y, u32 extent_x,
|
||||
u32 extent_y, u32 block_height, u32 block_depth, u32 pitch_linear);
|
||||
|
||||
/// Obtains the offset of the gob for positions 'dst_x' & 'dst_y'
|
||||
u64 GetGOBOffset(u32 width, u32 height, u32 dst_x, u32 dst_y, u32 block_height,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue