mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-20 22:05:12 +00:00
vk: Prefer using native alignment when uploading.
- Allows using fast copy paths and reduces memory and compute footprint
This commit is contained in:
parent
a3a0cb8c17
commit
6aa0b49dbc
3 changed files with 36 additions and 10 deletions
|
|
@ -391,16 +391,32 @@ namespace
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
u32 get_row_pitch_in_block(u16 width_in_block, size_t multiple_constraints_in_byte)
|
||||
u32 get_row_pitch_in_block(u16 width_in_block, size_t alignment)
|
||||
{
|
||||
size_t divided = (width_in_block * sizeof(T) + multiple_constraints_in_byte - 1) / multiple_constraints_in_byte;
|
||||
return static_cast<u32>(divided * multiple_constraints_in_byte / sizeof(T));
|
||||
if (const size_t pitch = width_in_block * sizeof(T);
|
||||
pitch == alignment)
|
||||
{
|
||||
return width_in_block;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t divided = (pitch + alignment - 1) / alignment;
|
||||
return static_cast<u32>(divided * alignment / sizeof(T));
|
||||
}
|
||||
}
|
||||
|
||||
u32 get_row_pitch_in_block(u16 block_size_in_bytes, u16 width_in_block, size_t multiple_constraints_in_byte)
|
||||
u32 get_row_pitch_in_block(u16 block_size_in_bytes, u16 width_in_block, size_t alignment)
|
||||
{
|
||||
size_t divided = (width_in_block * block_size_in_bytes + multiple_constraints_in_byte - 1) / multiple_constraints_in_byte;
|
||||
return static_cast<u32>(divided * multiple_constraints_in_byte / block_size_in_bytes);
|
||||
if (const size_t pitch = width_in_block * block_size_in_bytes;
|
||||
pitch == alignment)
|
||||
{
|
||||
return width_in_block;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t divided = (pitch + alignment - 1) / alignment;
|
||||
return static_cast<u32>(divided * alignment / block_size_in_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue